Teste de fundo de EA Multimoedas

 

Estou atualmente testando um EA de múltiplos pares de moedas no MT5 Strategy Tester e obtenho resultados diferentes ao anexá-lo a diferentes pares de moedas. A EA negocia em AUDUSD e GBPCHF.

Quando eu o anexar ao AUDUSD, obtenho um lucro de 10k.

Quando eu o anexar ao GBPCHF, obtenho mais de 30k de lucro.

Quando eu o anexar ao USDCHF (eu pensei que a função OnTick() reagirá tanto no AUDUSD quanto no GBPCHF ao seguir o USDCHF), ele terá cerca de 17k de lucro.

É o problema de usar a função OnTick()? Ou há algum problema oculto no backtesting de EAs com múltiplas moedas? Ou é apenas uma bagunça no meu código?

 
enivid:

Estou atualmente testando um EA de múltiplos pares de moedas no MT5 Strategy Tester e obtenho resultados diferentes ao anexá-lo a diferentes pares de moedas. A EA negocia em AUDUSD e GBPCHF.

Quando eu o anexar ao AUDUSD, obtenho um lucro de 10k.

Quando eu o anexar ao GBPCHF, obtenho mais de 30k de lucro.

Quando eu o anexar ao USDCHF (eu pensei que a função OnTick() reagirá tanto no AUDUSD quanto no GBPCHF ao seguir o USDCHF), ele terá cerca de 17k de lucro.

É o problema de usar a função OnTick()? Ou há algum problema oculto no backtesting de EAs com múltiplas moedas? Ou é apenas uma bagunça no meu código?

melhor, se você copiar o código aqui... talvez isso ajude.
 
O código não deve realmente importar. Por que o Testador faria alguma diferença para o par de moedas anexo se todas as negociações são feitas em dois pares de moedas pré-definidos e todas as negociações também são feitas na abertura de novas barras, não em todos os tick.
 
enivid:

O código não deveria realmente importar. Por que o Testador faria alguma diferença para o par de moedas anexo se todas as negociações são feitas em dois pares de moedas pré-definidos e todas as negociações também são feitas na abertura de novas barras, não em cada tic.

A função "on tick" não é apenas para a moeda do gráfico? Eu diria que para 99% é. Acho que você pode criar um loop infinito de cotações refrescantes a cada segundo ou mais para obter ticks mais precisos. No entanto, isto mudaria toda a estrutura de uma aplicação.

 
enivid:

O código não deve realmente importar. Por que o Testador faria alguma diferença para o par de moedas anexo se todas as negociações são feitas em dois pares de moedas pré-definidos e todas as negociações também são feitas na abertura de novas barras, não em cada tick.

Talvez você devesse tentar OnBookEvent() ao invés de OnTick()? - OnTick() é acionado somente quando o símbolo atual chega.

OnBookEvent

A função OnBookEvent() é o BookEventhandler. O BookEvent é gerado para Consultores Especialistas somente quando a Profundidade do Mercado muda. Ele deve ser do tipo void e ter um parâmetro do tipo string:

voidOnBookEvent(conststring&symbol);

Para receber eventos do BookEvent para qualquer símbolo, você só precisa se inscrever previamente para receber estes eventos para este símbolo usando a função MarketBookAdd() .Para cancelar o recebimento dos eventos do BookEvent para um determinado símbolo, ligue para MarketBookRelease() .

Ao contrário de outros eventos, o BookEventevent é transmitido. Isto significa que se um Expert Advisor subscrever eventos do BookEvent usando MarketBookAdd, todos os outros ExpertAdvisors que tiverem o manipulador do OnBookEvent() receberão este evento. É necessário, portanto, analisar o nome do símbolo, que é passado para o manipulador como o parâmetroconst string& symbol.

 

Sinto o mesmo problema: testando uma EA com várias moedas, tenho um comportamento totalmente diferente, dependendo do símbolo que seleciono no painel de teste de estratégia.

Isto é extremamente incômodo. Rosh? Alguém? você pode comentar por favor?

Mesmo que o tick on se aplique apenas ao gráfico selecionado, tanto o envid como eu estamos operando na abertura de uma nova barra. No meu caso, eu uso barras diárias, portanto, mesmo que a abertura das novas barras nas diversas moedas ocorra em momentos diferentes, não há diferenças tão drásticas como as que eu experimento que deveriam acontecer.

Não estou incluindo minha EA por razões óbvias. Vamos ver se temos o mesmo problema com a EA que foi publicada aqui: https://www.mql5.com/en/articles/105.

Eu ficaria muito feliz em ouvir de qualquer pessoa que esteja tendo sucesso desconstruindo uma EA com várias moedas e, em particular, não sofrendo com esta discrepância.

Creating an Expert Advisor, which Trades on a Number of Instruments
  • 2010.07.08
  • Nikolay Kositsin
  • www.mql5.com
The concept of diversification of assets on financial markets is quiet old, and has always attracted beginner traders. In this article, the author proposes a maximally simple approach to a construction of a multi-currency Expert Advisor, for an initial introduction to this direction of trading strategies.
 
investeo:

Talvez você devesse tentar OnBookEvent() ao invés de OnTick()? - OnTick() é acionado somente quando o símbolo atual chega.

OnBookEvent

A função OnBookEvent() é o BookEventhandler. O BookEvent é gerado para Consultores Especialistas somente quando a Profundidade do Mercado muda. Ele deve ser do tipo void e ter um parâmetro do tipo string:

voidOnBookEvent(conststring&symbol);

Para receber eventos do BookEvent para qualquer símbolo, você só precisa se inscrever previamente para receber estes eventos para este símbolo usando a função MarketBookAdd() .Para cancelar o recebimento dos eventos do BookEvent para um determinado símbolo, ligue para MarketBookRelease() .

Ao contrário de outros eventos, o BookEventevent é transmitido. Isto significa que se um Expert Advisor subscrever eventos do BookEvent usando MarketBookAdd, todos os outros ExpertAdvisors que tiverem o manipulador do OnBookEvent() receberão este evento. É necessário, portanto, analisar o nome do símbolo, que é passado para o manipulador como o parâmetroconst string& symbol.

Eu tentei usar o OnBookEvent() mas ele simplesmente não está funcionando (pelo menos no backtesting). Eu usei MarketBookAdd() na função OnInit() para ambos os meus pares.
 

Aqui está um exemplo. Usando a EA TEMA de https://www.mql5.com/en/articles/105, obtemos os seguintes comportamentos diferentes.

Tudo o que você precisa é a EA exp_tema_en.mq5 e o indicador multistochastic_en.mq5

Neste exemplo, usei o arquivo de parametrização anexo. A EA negocia os pares EURUSD, USDCHF e USDJPY (com estes parâmetros).

Quando você o anexa ao EURUSD você recebe

Equidade quando anexado ao EURUSD

ao anexar ao USDCHF você receberá

usdchf

Em seguida, com USDJPY obtemos

usdjpy

e melhor ainda, ao executar a EA no AUDUSD o resultado

audusd

Mesma EA, mesmo prazo (H1), mesmos pares negociados, mesmas datas (2009.01.01-2009.03.01).

É assim que deve ser? e se for assim, alguém pode nos dizer qual é o significado disso?

Estamos realmente prontos para o retrocesso/optimização de múltiplas moedas?

Creating an Expert Advisor, which Trades on a Number of Instruments
  • 2010.07.08
  • Nikolay Kositsin
  • www.mql5.com
The concept of diversification of assets on financial markets is quiet old, and has always attracted beginner traders. In this article, the author proposes a maximally simple approach to a construction of a multi-currency Expert Advisor, for an initial introduction to this direction of trading strategies.
 
trendick:

Aqui está um exemplo. Usando a EA TEMA de https://www.mql5.com/en/articles/105, obtemos os seguintes comportamentos diferentes.

Tudo o que você precisa é o exp_tema_en.mq5 da EA e o indicador multistochastic_en.mq5

Neste exemplo, usei o arquivo de parametrização anexo. A EA negocia os pares EURUSD, USDCHF e USDJPY (com estes parâmetros).

Quando você o anexa ao EURUSD você recebe


ao anexar ao USDCHF você receberá


Em seguida, com USDJPY obtemos

e melhor ainda, ao executar a EA no AUDUSD o resultado

Mesma EA, mesmo prazo (H1), mesmos pares negociados, mesmas datas (2009.01.01-2009.03.01).

É assim que deve ser? e se for assim, alguém pode nos dizer qual é o significado disso?

Estamos realmente prontos para o retrocesso/optimização de múltiplas moedas?




Oi, eu tive o mesmo problema (resultados diferentes), mas o resolvi com a IsNewBar()

Eu concordo com a baq, então o que devemos fazer? obter as citações e esta função faz

Somente se IsNewBar(algum símbolo) então blá blá blá blá

para a minha EA obtive os mesmos resultados ligados a símbolos diferentes.

o artigo do qual recebi a função está aqui: https://www.mql5.com/en/articles/105

Creating an Expert Advisor, which Trades on a Number of Instruments
  • 2010.07.08
  • Nikolay Kositsin
  • www.mql5.com
The concept of diversification of assets on financial markets is quiet old, and has always attracted beginner traders. In this article, the author proposes a maximally simple approach to a construction of a multi-currency Expert Advisor, for an initial introduction to this direction of trading strategies.
 
Ali2e7a:

Oi, eu tive o mesmo problema (resultados diferentes), mas o resolvi com a IsNewBar()

Eu concordo com a baq, então o que devemos fazer? obter as citações e esta função faz

Somente se IsNewBar(algum símbolo) então blá blá blá blá

para a minha EA obtive os mesmos resultados ligados a símbolos diferentes.

o artigo do qual recebi a função está aqui: https://www.mql5.com/en/articles/105

Ali, o exemplo que mencionei acima é o EA ao qual você se refere, que é a fonte da função IsNewBar() que você mencionou, e já a utiliza.

Como você explica isso?

 

Veja também a linha de sincronização Multi-moeda emhttps://www.mql5.com/en/forum/1520.

Multi-Currency synchronization
  • www.mql5.com
Here some tests results and below details:.