Ejemplo n.º 1
0
def checkOrder(req):
    global inbacktest
    if inbacktest:
        #print('Esta em backtest. bts=')#, bts)
        return backtest.get_balance(bts)
    #else:
    #  print('NAO esta em backtest')
    if req is None:
        return False
    result = mt5.order_check(req)
    #print('result=',result, 'req=',req)
    if result is None:  # error
        setLastError(mt5.last_error())
        return False
    d = result._asdict()
    #margin - Margem requerida para a operação de negociação
    # margin_free - Margem livre que sobrará após a execução da operação de negociação
    # balance  - Valor de saldo após a execução da operação de negociação
    #for k in d.keys():
    #    print('{} = {}',k,d[k])
    if isSellOrder(req):
        if req['volume'] > get_shares(
                req['symbol']):  #bloqueia ordem a descoberto
            return False
        else:
            return True

    if d['balance'] >= 0:  # checa se não ficaria negativo com a execução
        return True
    else:
        setLastError(
            'Trade would make the balance negative! Therefore, it does not check!'
        )
        return False
Ejemplo n.º 2
0
def checkOrder(req):
    if req == None:
        return False
    result = mt5.order_check(req)
    #print('result=',result, 'req=',req)
    if result == None:  # error
        setLastError(mt5.last_error())
        return False
    d = result._asdict()
    #for k in d.keys():
    #    print('{} = {}',k,d[k])
    if d['margin_free'] >= d['request'].volume * d[
            'request'].price:  # checa se não ficaria negativo com a execução
        return True
    else:
        setLastError(
            'Trade would make the balance negative! Therefore, it does not check!'
        )
        return False
Ejemplo n.º 3
0
point = mt5.symbol_info(symbol).point
request = {
    "action": mt5.TRADE_ACTION_DEAL,
    "symbol": symbol,
    "volume": 1.0,
    "type": mt5.ORDER_TYPE_BUY,
    "price": mt5.symbol_info_tick(symbol).ask,
    "sl": mt5.symbol_info_tick(symbol).ask - 100 * point,
    "tp": mt5.symbol_info_tick(symbol).ask + 100 * point,
    "deviation": 10,
    "magic": 234000,
    "comment": "python script",
    "type_time": mt5.ORDER_TIME_GTC,
    "type_filling": mt5.ORDER_FILLING_RETURN,
}

# 执行检查并显示结果'按原状'
result = mt5.order_check(request)
print(result);
# request the result as a dictionary and display it element by element
result_dict = result._asdict()
for field in result_dict.keys():
    print("   {}={}".format(field, result_dict[field]))
    # if this is a trading request structure, display it element by element as well
    if field == "request":
        traderequest_dict = result_dict[field]._asdict()
        for tradereq_filed in traderequest_dict:
            print("       traderequest: {}={}".format(tradereq_filed, traderequest_dict[tradereq_filed]))

# shut down connection to the MetaTrader 5 terminal
mt5.shutdown()