Estou tentando enviar ordens ( buy, sell e modify ), mas meu objeto que executa a rotina sempre retorna "None", segue o exemplo do código:
Bom dia,
Tente atualizar a sua biblioteca MetaTrader5 no seu ambiente python, aconteceu algo parecido comigo.
Obrigado @Jonathan
Pereira
Consegui executar minha rotina que ajusta o TakeProfit e provavelmente as outras rotinas estão com o mesmo problema. Coisa simples, no payload estava mandando mais informações que o necessário.
Vou fazer os testes na rotina acima.
Att.
Bom dia,
Tente atualizar a sua biblioteca MetaTrader5 no seu ambiente python, aconteceu algo parecido comigo.
![Jonathan Pereira Jonathan Pereira](https://c.mql5.com/36/34/jonathan-pereira.jpg)
- www.mql5.com
Estou com o mesmo problema, atualizei minha biblioteca e não funcionou.
Achei estranho pois algumas funções como mt5.copyratesfrom(), funcionam perfeitamente.
Já outras como a mt5.symbols_get(), order_send(), estão retornando vazias, devo fazer alguma configuração adicional?
Apenas instalei a biblioteca do metatrader, tentei rodar no VisualStudio e no próprio compilador do MQ5 porém ambos tem o mesmo comportamento.
Thanks all!
Estou com o mesmo problema, atualizei minha biblioteca e não funcionou.
Achei estranho pois algumas funções como mt5.copyratesfrom(), funcionam perfeitamente.
Já outras como a mt5.symbols_get(), order_send(), estão retornando vazias, devo fazer alguma configuração adicional?
Apenas instalei a biblioteca do metatrader, tentei rodar no VisualStudio e no próprio compilador do MQ5 porém ambos tem o mesmo comportamento.
Thanks all!
Atualize a versão do terminal.
Jonathan, boa tarde.
Obrigado pelo apoio
Meu pacote do MetaTrader5 encontra-se na versão 5.0.31, pelo que vi no PyPI é a mais recente.
MetaTrader5 package version: 5.0.31.
Meu Metrader aparentemente também está na versão mais recente.
2020.05.15 15:10:09.035 LiveUpdate you are using the latest version
Existe mais alguma atualização que devo fazer?
Obrigado.
Robson
Jonathan, boa tarde.
Obrigado pelo apoio
Meu pacote do MetaTrader5 encontra-se na versão 5.0.31, pelo que vi no PyPI é a mais recente.
MetaTrader5 package version: 5.0.31.
Meu Metrader aparentemente também está na versão mais recente.
2020.05.15 15:10:09.035 LiveUpdate you are using the latest version
Existe mais alguma atualização que devo fazer?
Obrigado.
Robson
Mas mesmo assim o erro persiste??
eu por exemplo estou na versão 2419, mas eu uso sempre a versão beta (por opção)
@ClaudioRocha @robsonspereira @Jonathan Pereira
Galera estava com o mesmo problema, então rodei o comando mt5.last_error() e com isso apareceu o erro de volume invalido.
Parece que sua ordem esta sendo rejeitada.
Para saber o motivo, tem que verificar o last_error().
Após a linha
result = mt5.order_send(request)
e antes das linhas
print(result) print(result.retcode)
inclua isto aqui para verificar que erro está acontecendo:
if result is None: print("order_send() failed, error code =",mt5.last_error())
Eu consegui resolver meu problema de ordem, talvez eu não tenha deixado claro, mas estava apenas compartilhando como detectar o problema deles.
Mas valeu!
![Trader_Patinhas Trader_Patinhas](https://c.mql5.com/36/36/trader-patinhas.jpg)
- www.mql5.com
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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 )