Bom dia a todos,
Elaborei um EA e quando jogo no testador de estratégia ele parece estar rodando normalmente, mas o testador só me dá resultados dos primeiros períodos no restante há a exibição de uma msg de erro de negociação "Alert the Sell order request could not be completed: error - 4756. Para exemplificar melhor joguei o EA em um período desde o início do ano os 3 primeiros meses o testador deu o resultado de todos os trades depois passou a emitir essa msg.
Alguém teria ideia de qual motivo para o erro?
Olá adriano.barbosa,
Para uma lista completa dos códigos de erro por favor dê uma olhada nesse link.
O erro 4756 é um erro de falha no envio da ordem, provavelmente causado por um retorno igual a 'false' da função OrderSend.
Logo, como a função OrderSend só tem dois argumentos, a saber MqlTradeRequest e MqlTradeResult, provavelmente seu problema está localizado dentro de MqlTradeRequest.
Entretanto, sem mais informações não é possível deduzir onde, exatamente, está ocorrendo o erro.
Seria interessante você nos reportar quais os parâmetros que você está usando dentro da struct MqlTradeRequest para que possamos identificar o erro com precisão.
Abraços,
Malacarne
Entendo perfeitamente,
Mas o que poderia justificar a entrada de dados sem erro nos primeiros meses?
Segue parâmetros:
MqlTick latest_price; MqlTradeRequest mrequest; MqlTradeResult mresult; MqlRates mrates[]; ZeroMemory (mrequest); ZeroMemory(mrequest); mrequest.action = TRADE_ACTION_DEAL; // immediate order execution mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // latest ask price mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit mrequest.symbol = _Symbol; // currency pair mrequest.volume = LOT; // number of lots to trade mrequest.magic = EA_Magic; // Order Magic Number mrequest.type = ORDER_TYPE_BUY; // Buy Order mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type mrequest.deviation=100; // Deviation from current price //--- send order OrderSend(mrequest,mresult); // get the result code if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed { Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!"); } else { Alert("The Buy order request could not be completed -error:",GetLastError()); ResetLastError(); return; } }
Entendo perfeitamente,
Mas o que poderia justificar a entrada de dados sem erro nos primeiros meses?
Segue parâmetros:
Olá adriano.barbosa,
tive que editar o seu post. Da próxima vez por favor não esqueça de usar o botão SRC para colar partes de código no post ... ;-)
Você está tentando enviar essa ordem em que tipo de ativo? Mercado futuro ou mercado à vista?
Abraços,
Malacarne
Opa Obrigado! Não sabia dessa função!
O teste foi realizado no mercado futuro com série contínua no mini-índice!
Att. Adriano Barbosa
Qual série contínua exatamente?
Qual série contínua exatamente?
WIN$
Experimente trocar pela série WIN$D e por favor reporte os resultados.
Abraços,
Malacarne
Experimente trocar pela série WIN$D e por favor reporte os resultados.
Abraços,
Malacarne
Opa Malacarne,
Obrigado pela atenção! Infelizmente ainda estou caindo no mesmo erro. Estou achando estranho, pois se fosse algo no envio de ordens o EA daria o erro desde o início , porém só começa a dar o erro depois que já temos vários dados armazenados, testei tb em ativos bovespa e deu a mesma coisa.
Opa Malacarne,
Obrigado pela atenção! Infelizmente ainda estou caindo no mesmo erro. Estou achando estranho, pois se fosse algo no envio de ordens o EA daria o erro desde o início , porém só começa a dar o erro depois que já temos vários dados armazenados, testei tb em ativos bovespa e deu a mesma coisa.
Olá adriano.barbosa,
Minha sincera suspeita é que você está utilizando da maneira errada a variável _Point.
Ao invés de utilizar _Point você deveria colocar em seu código uma variável que capturasse corretamente o "tick size" do ativo onde você está querendo enviar suas ordens...
Experimente dar uma olhada nesse post.
Depois de ler o post acima, por favor dê uma lida na documentação, especificamente na função SymbolInfoDouble e sua opção SYMBOL_TRADE_TICK_SIZE.
Abraços,
Malacarne
Entendo perfeitamente,
Mas o que poderia justificar a entrada de dados sem erro nos primeiros meses?
Segue parâmetros:
Você sempre tem que verificar o código de erro de negociação, não só GetLastError ().
O que é o valor de
mresult.retcode

- 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
Bom dia a todos,
Elaborei um EA e quando jogo no testador de estratégia ele parece estar rodando normalmente, mas o testador só me dá resultados dos primeiros períodos no restante há a exibição de uma msg de erro de negociação "Alert the Sell order request could not be completed: error - 4756. Para exemplificar melhor joguei o EA em um período desde o início do ano os 3 primeiros meses o testador deu o resultado de todos os trades depois passou a emitir essa msg.
Alguém teria ideia de qual motivo para o erro?