Acho, vou confirmar, que vi o mesmo problema no Testador de Estratégia, não sei exatamente como isso poderia acontecer, vou tentar novamente com mais alguns relatórios de erros adicionados para ter certeza.
OK, um mistério resolvido... Não percebi que o Spread usado no Testador de Estratégia é tirado dos dados do Histórico, em particular os dados M1. A razão pela qual tenho paradas inválidas em minha execução do Testador de Estratégia é porque o spread é maior que meu SL. Vou adicionar um teste para isso.
Não entendo parada inválida. a sl está abaixo da sl de compra: 1,28375 <1,30505 ?
Não leve "Paradas inválidas" muito à letra. Não se trata apenas de Parar Perda, também pode ser o preço de entrada e/ou o TP. Quando você obtiver um erro, imprima as seguintes informações, elas o ajudarão a descobrir o que deu errado:
tipo de comércio, limite de compra, compra, venda, parada de venda, etc.
o preço de venda
o preço da licitação
o preço de entrada
o SL
o TP
o Nível de Congelamento
o Nível de Paradas
o número do erro (e a descrição do erro, se você realmente quiser)
RaptorUK: Isso é uma boa notícia, espero que você não se importe que eu subverta seu fio condutor, mas acho que nós dois conseguimos algo útil no final :-)
Você encontrou outra solução que eu proponho com a OnTradeTransaction para prosseguir com sl & tp em um caso de Execução de Mercado (corretor ECN)?
angevoyageur: Vocês encontraram outra solução que eu proponho com a OnTradeTransaction para proceder com sl & tp em um caso de Execução de Mercado (corretor ECN)?
O código que sugeri neste post https://www.mql5.com/en/forum/11051#comment_446272 funciona bem até onde posso dizer, assumi que não estava funcionando no Testador de Estratégia devido à minha suposição de que o spread a ser corrigido (como no MT4) estava incorreto. Meu código agora funciona no Testador de Estratégia e na Demonstração para símbolos com tipo de execução Instantânea ou de Troca, meu código determina o tipo e envia o(s) pedido(s) apropriado(s). O ideal seria que meu código tratasse automaticamente qualquer tipo de execução.
RaptorUK: O código que sugeri neste post https://www.mql5.com/en/forum/11051#comment_446272 funciona bem até onde posso dizer, assumi que não estava funcionando no Testador de Estratégia devido à minha suposição de que o spread a ser fixado (como no MT4) estava incorreto. Meu código agora funciona no Testador de Estratégia e na Demo para símbolos com tipo de execução Instantânea ou de Troca, meu código determina o tipo e envia o(s) pedido(s) apropriado(s). O ideal seria que meu código tratasse automaticamente qualquer tipo de execução.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Acho, vou confirmar, que vi o mesmo problema no Testador de Estratégia, não sei exatamente como isso poderia acontecer, vou tentar novamente com mais alguns relatórios de erros adicionados para ter certeza.
OK, um mistério resolvido... Não percebi que o Spread usado no Testador de Estratégia é tirado dos dados do Histórico, em particular os dados M1. A razão pela qual tenho paradas inválidas em minha execução do Testador de Estratégia é porque o spread é maior que meu SL. Vou adicionar um teste para isso.
Konstantin83:
2013.03.10 11:19:18 2012.01.04 15:00:00 failed buy stop 1.00 EURUSD at 1.30505 sl: 1.28375 tp: 1.30375 [Invalid stops]
Não entendo parada inválida. a sl está abaixo da sl de compra: 1,28375 <1,30505 ?
CopyHigh(_Symbol,_Period,TimeCurrent(),5,hg);
Top = NormalizeDouble(rates[ArrayMaximum(hg,0,WHOLE_ARRAY)].high,_Digits);
- projetomal compreendido .
Escolha entre os valores do dobro máximo e use aquele ao invés do índice inteiro
agradeceKonstantin83 :
mas eu não entendo o que você diz.
topo é o mais alto das últimas 5 velas e topo é o dobro e não o índice inteiro
dan5:
Não entendo parada inválida. a sl está abaixo da sl de compra: 1,28375 <1,30505 ?
Não leve "Paradas inválidas" muito à letra. Não se trata apenas de Parar Perda, também pode ser o preço de entrada e/ou o TP. Quando você obtiver um erro, imprima as seguintes informações, elas o ajudarão a descobrir o que deu errado:
dan5:
2013.03.10 11:19:18 2012.01.04 15:00:00 paradas de compra falhadas 1,00 EURUSD a 1,30505 sl: 1,28375 tp: 1,30375 [Paradas inválidas]
Não entendo parada inválida. a sl está abaixo da sl de compra : 1,28375 <1,30505 ?
Você notou que a entrada 1.30505 é > a TP 1.30375 ?
obrigado por sua ajuda eu modifico meu sl e tp está tudo bem agora
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Dígitos); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Dígitos);// Take Profit
em vez de:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
obrigado por sua ajuda eu modifico meu sl e tp está tudo bem agora
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Dígitos); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Dígitos);// Take Profit
em vez de:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
Isso é uma boa notícia, espero que você não se importe que eu subverta seu fio condutor, mas acho que nós dois conseguimos algo útil no final :-)
Vocês encontraram outra solução que eu proponho com a OnTradeTransaction para proceder com sl & tp em um caso de Execução de Mercado (corretor ECN)?
O código que sugeri neste post https://www.mql5.com/en/forum/11051#comment_446272 funciona bem até onde posso dizer, assumi que não estava funcionando no Testador de Estratégia devido à minha suposição de que o spread a ser fixado (como no MT4) estava incorreto. Meu código agora funciona no Testador de Estratégia e na Demo para símbolos com tipo de execução Instantânea ou de Troca, meu código determina o tipo e envia o(s) pedido(s) apropriado(s). O ideal seria que meu código tratasse automaticamente qualquer tipo de execução.