Detectar o gatilho de parada no backktest da OnTradeTransaction - página 2

 
chinaski:

Olá angevoyageur,

encontrar em anexo uma simples EA que demonstre o problema. O EA abre longo junto com a parada e o alvo, depois curto, depois longo e assim por diante.

Um método de descarga também é contido. Basta aplicar EUR.USD 1 minuto 1 semana e observar as lixeiras de transação no log backktest.

Obrigado por sua ajuda.

Aqui seu stoploss é acionado:

2013.05.03 16:52106EURUSDcompreem0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDvenderfora0.011.310401070.000.00-2.009 976.84sl 1,31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

 
angevoyageur:

Aqui sua perda de carga é acionada:

2013.05.03 16:52106EURUSDcompreem0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDvenderfora0.011.310401070.000.00-2.009 976.84sl 1,31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

Olá,

mas isto étipo de entrada=IN , não out....

 
chinaski:

Olá,

mas isto étipo de entrada=IN , não out....

Talvez, mas é o seu sl desencadeado, no entanto. Nunca acreditereligiosamente no que um programa lhe diz;-)
 
angevoyageur:
Talvez, mas é a sua sl acionada mesmo assim. Nunca acreditereligiosamente no que um programa lhe diz;-)

Você está certo, por outro lado, como posso saber que posso confiar em sl=0,0 e tp=0,0 significa que esta é uma ordem de parada ou de alvo e não: sl e tp simplesmente falharam (na estrutura da transação)?

 
chinaski:

Você está certo, por outro lado, como posso saber que posso confiar em sl=0,0 e tp=0,0 significa que esta é uma ordem de parada ou de alvo e não: sl e tp simplesmente falharam (na estrutura da transação)?

Uma estrutura não pode ter campo ausente. Esta é uma transação sobre um negócio(DEAL_TYPE_SELL), um negócio não pode ter um SL/TP, que não faz sentido. Um SL (ou TP) é uma ordem (uma espécie de ordem especial pendente), quando é acionada, a ordem resulta em uma transação. Você pode verificar tudo isso dentro da OnTradeTransaction.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
angevoyageur:

Uma estrutura não pode ter campo ausente. Esta é uma transação sobre um negócio(DEAL_TYPE_SELL), um negócio não pode ter um SL/TP, que não faz sentido. Um SL (ou TP) é uma ordem (uma espécie de ordem especial pendente), quando é acionada, a ordem resulta em uma transação. Você pode verificar tudo isso dentro da OnTradeTransaction.

Não me refiro aos membros da estrutura, claro; refiro-me aos valores.
 
chinaski:
Não me refiro aos membros da estrutura, claro; refiro-me aos valores.
Então? É um pouco confuso, ainda posso ajudar?
 
angevoyageur:
Então? É um pouco confuso, ainda posso ajudar?

Sim, foi uma ajuda. O que significa "byconfusing"? Eu me perguntava sobre conseguir sempre ENTRY_IN. Você disse: "Nunca acredite no que o programa me diz. Eu digo, você está certo, então sl=0,0 ou tp=0,0 (valores perdidos) também poderia ser um erro do servidor - esqueceu de ir ao wroite valores.

O que é importante para mim: um método de salvar para determinar qual transação é interrompida. MT é ótimo, mas em muitos aspectos, confuso, não fazendo o que você normalmente esperaria, como neste caso.

Você sabe o que quero dizer?

 
chinaski:

Sim, foi uma ajuda. O que significa "byconfusing"? Eu me perguntava sobre conseguir sempre ENTRY_IN. Você disse: "Nunca acredite no que o programa me diz. Eu digo, você está certo, então sl=0,0 ou tp=0,0 (valores perdidos) também poderia ser um erro do servidor - esqueceu de ir ao wroite valores.

O que é importante para mim: um método de salvar para determinar qual transação é interrompida. MT é ótimo, mas em muitos aspectos, confuso, não fazendo o que você normalmente esperaria, como neste caso.

Você sabe o que quero dizer?

Eu é que estou confuso;-) Eu leio e respondo a muitos assuntos. Entendo o que você disse, devo ser capaz de mudar os hábitos com o MT4.
 
chinaski:

Sim, foi uma ajuda. O que significa "byconfusing"? Eu me perguntava sobre conseguir sempre ENTRY_IN. Você disse: "Nunca acredite no que o programa me diz. Eu digo, você está certo, então sl=0,0 ou tp=0,0 (valores perdidos) também poderia ser um erro do servidor - esqueceu de ir ao wroite valores.

O que é importante para mim: um método de salvar para determinar qual transação é interrompida. MT é ótimo, mas em muitos aspectos, confuso, não fazendo o que você normalmente esperaria, como neste caso.

Você sabe o que quero dizer?

Eu verifiquei. Quando um SL/TP é acionado, você tem esta transação:

  1. TRADE_TRANSACTION_POSITION com SL e TP configurados (mas ainda sem negócio), então
  2. TRADE_TRANSACTION_DEALDEAL_ADD

POSIÇÃO_DE_TRANSAÇÃO_COMERCIAL

Mudar uma posição não relacionada à execução de um negócio. Este tipo de transação mostra que uma posição foi alterada no lado do servidor de negociação. O volume da posição, o preço aberto, os níveis de Stop Loss e Take Profit podem ser alterados. Os dados sobre mudanças são submetidos na estrutura da MqlTradeTransaction via manipulador da OnTradeTransaction. A mudança de posição (adição, alteração ou fechamento), como resultado da execução de uma transação, não leva à ocorrência da transação TRADE_TRANSACTION_POSITION.