Método mt5.order_send() não executa, sempre retornando "Nome" usando python - página 2

 

Também tive o mesmo problema.

A solução é muito simples.

Aparentemente o seu problema está na definição do volume.


Tente usar "volume": 100.0, ao invés de "volume": 100,

Atente para o " . "  decimal. Simples assim ;)





ClaudioRocha:

Estou tentando enviar ordens ( buy, sell e modify ), mas meu objeto que executa a rotina sempre retorna "None", segue o exemplo do código:

import MetaTrader5 as mt5
def SendBuyLimit(path, login, server):

if not mt5.initialize(path,login=login, server=server, timeout=10000, profile="Default"):

print("initialize() failed, error code =",mt5.last_error())

else:

request = {

"action": mt5.TRADE_ACTION_PENDING,

"symbol": "VALE3",

"volume": 100,

"price": 41.02,

"comment": "Teste",

"type": mt5.ORDER_TYPE_BUY_LIMIT,

"type_time": mt5.ORDER_TIME_DAY,

"type_filling": mt5.ORDER_FILLING_RETURN,

"expiration": mt5.ORDER_TIME_DAY,

}

result = mt5.order_send(request)

print(result)

print(result.retcode)

mt5.shutdown()


****************************

teste.py

None   ( resultado do print(result) )

Traceback (most recent call last):

  File "C:\Users\Usuário\projetos\metatrader5\teste.py", line 38, in <module>

    main()

  File "C:\Users\Usuário\projetos\metatrader5\teste.py", line 31, in main

    SendBuyLimit(mtPath, 232015, "ModalMais-MetaTrader 5")

  File "C:\Users\Usuário\projetos\metatrader5\teste.py", line 25, in SendBuyLimit

    print(result.retcode)

AttributeError: 'NoneType' object has no attribute 'retcode'


*****************************

Versão: python

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:16:59) [MSC v.1900 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>>

*****************************

Tenho outras rotinas que funcionam normalmente, mas todas fazendo get de informações da conta, todas as rotinas que usam ( MqlTradeResult e MqlTradeRequest ), simplesmente retornam "None" .

Alguém passou por isso? ( desde já agradeço a colaboração )

 

Pessoal, acho que consegui resolver esse problema.
No campo "volume" coloque um valor do tipo "float".
Por exemplo, no caso de volume 100, coloque como 100.0

No meu caso deu certo!

Razão: