マルチカレンシーEAのバックテスト

 

現在、MT5 Strategy Testerでマルチ通貨ペアのEAをバックテストしていますが、異なる通貨ペ アにアタッチすると異なる結果が得られます。EAはAUDUSDとGBPCHFで取引しています。

AUDUSDに貼り付けると10kの利益が出ます。

GBPCHFにつけたら3万円以上の利益が出ました。

USDCHFにつけると(USDCHFをフォローする場合、OnTick()関数がAUDUSDとGBPCHFの両方の変化に反応すると思っていました)17k程度の利益が出ます。

OnTick()関数の使い方の問題なのでしょうか?それとも、多通貨EAのバックテストに何か隠れた問題があるのでしょうか?それとも、私のコードに何らかの混乱があるだけなのでしょうか?

 
enivid:

現在、MT5 Strategy Testerでマルチ通貨ペアのEAをバックテストしていますが、異なる通貨ペアにアタッチすると異なる結果が得られます。EAはAUDUSDとGBPCHFで取引しています。

AUDUSDに貼り付けると10kの利益が出ます。

GBPCHFにつけたら3万円以上の利益が出ました。

USDCHFにつけると(USDCHFをフォローする場合、OnTick()関数がAUDUSDとGBPCHFの両方の変化に反応すると思っていました)17k程度の利益が出ます。

OnTick()関数の使い方の問題なのでしょうか?それとも、多通貨EAのバックテストに何か隠れた問題があるのでしょうか?それとも、私のコードに何らかの混乱があるだけなのでしょうか?

もし、あなたがここにコードをコピーすれば、多分、それは助けになるでしょう。
 
コードは本当に重要ではないはずです。すべての取引が2つの定義済みの通貨ペアで行われ、すべての取引も毎ティックではなく、新しいバーのオープニングで実行される場合、なぜテスターは添付の通貨 ペアに違いを生じさせるのでしょうか。
 
enivid:

コードはあまり重要ではないはずです。すべての取引が2つの定義済みの通貨ペアで行われ、すべての取引も毎ティックではなく、新しいバーのオープニングで行われる場合、なぜTesterは添付の通貨ペアに違いを生じさせるのでしょうか。

オンティック」機能は、チャート通貨だけではないのですか?99%はそうだと思う。より正確なティックを得るために、1秒ごとに相場を更新する無限ループを作成することができると思います。しかし、これはアプリケーションの全体的な構造を変更することになります。

 
enivid:

このコードは、実際には重要ではないはずです。すべての取引が2つの定義済みの通貨ペアで行われ、すべての取引も毎ティックではなく、新しいバーのオープニングで行われる場合、なぜTesterは添付の通貨ペアに違いを生じさせるのでしょうか?

OnTick()の代わりにOnBookEvent()を試してみてはいかがでしょうか?- OnTick()は、現在のシンボルのティックが到着したときにのみトリガされます。

OnBookEvent

OnBookEvent()関数は、BookEvent ハンドラです。BookEventは、Depth of Marketが変更されたときのみExpert Advisorに生成されます。この関数はvoid型で、string型のパラメータを1つ持つ必要があります。

voidOnBookEvent(conststring&symbol);

任意のシンボルのBookEventイベントを受信するには、MarketBookAdd() 関数を使用して、このシンボルのこれらのイベントを受信するように事前に登録する必要があるだけです。特定のシンボルに対するBookEventイベントの受信を解除するには、MarketBookRelease() を呼び出します。

他のイベントとは異なり、BookEvent イベントはブロードキャストされます。つまり、ある Expert Advisor が MarketBookAdd を使用して BookEvent イベントの受信を申し込むと、OnBookEvent() ハンドラを持つ他の Expert Advisor はすべてこのイベントを受信します。 したがって、シンボルの名前を解析する必要があり、それは const string& symbol パラメータとしてハンドラに 渡されています。

 

私も同じ問題を経験しています。多通貨EAのバックテストでは、ストラテジーテスターパネルでどのシンボルを選択するかによって、全く異なる動作が得られます。

これは非常に煩わしいことです。ロッシュ?どなたか、コメントお願いします。

オンティックが選択したチャートにのみ適用されるとしても、envidと私の両方が新しいバーのオープニングで動作しています。私の場合、日足を使っているので、様々な通貨の新しいバーのオープンティックが異なる時間に発生しても、私が経験するような劇的な違いは発生しないはずです。

明らかな理由により、私のEAは含まれていません。ここで公開されたEAで同じ問題があるかどうか見てみましょう。https://www.mql5.com/en/articles/105。

多通貨EAの構築に成功している方、特にこの差異に悩まされていない方のご意見をお聞かせいただければ幸いです。

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:

OnTick()の代わりにOnBookEvent()を試してみてはいかがでしょうか?- OnTick()は、現在のシンボルのティックが到着したときにのみトリガされます。

OnBookEvent

OnBookEvent()関数は、BookEvent ハンドラです。BookEventは、Depth of Marketが変更されたときのみExpert Advisorに生成されます。この関数はvoid型で、string型のパラメータを1つ持つ必要があります。

voidOnBookEvent(conststring&symbol);

任意のシンボルのBookEventイベントを受信するには、MarketBookAdd() 関数を使用して、このシンボルのこれらのイベントを受信するように事前に登録する必要があるだけです。特定のシンボルに対するBookEventイベントの受信を解除するには、MarketBookRelease() を呼び出します。

他のイベントとは異なり、BookEvent イベントはブロードキャストされます。つまり、ある Expert Advisor が MarketBookAdd を使用して BookEvent イベントの受信を申し込むと、OnBookEvent() ハンドラを持つ他のすべての Expert Advisor がこのイベントを受信します。 このため、ハンドラに const string& symbol パラメータとして渡されたシンボルの名前を解析する必要が あります。

OnBookEvent()を使ってみましたが、(少なくともバックテストでは)単純にうまくいきません。私は両方のペアでOnInit()関数の中でMarketBookAdd()を使いました。
 

以下はその例です。https://www.mql5.com/en/articles/105 のTEMA EAを使用すると、次のような異なる動作が得られます。

必要なのはEA exp_tema_en.mq5とインジケータ multistochastic_en.mq5 だけです。

この例では、添付のパラメータセットファイルを使用しました。このEAはEURUSD、USDCHF、USDJPYのペアを取引します(これらのパラメータを使用します)。

EURUSDにつけると、以下のようになります。

EURUSDに装着した場合のエクイティ

USDCHFにつけると、以下のようになります。

ユーエスディーシーエフ

そして、USDJPYで私たちは以下を得ます。

ユーエスジェーピー

さらに、AUDUSDでEAを実行すると、結果は以下のようになります。

オーダスッド

同じEA、同じタイムフレーム(H1)、同じ取引ペア、同じ日付(2009.01.01-2009.03.01)です。

ということなのでしょうか?また、もしそうだとしたら、どなたかこの意味を教えていただけないでしょうか?

本当に多通貨のバックテスト/最適化の準備ができているのでしょうか?

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:

以下はその例です。https://www.mql5.com/en/articles/105 のTEMA EAを使用すると、次のような異なる動作が得られます。

必要なのはEA exp_tema_en.mq5とインジケータ multistochastic_en.mq5 だけです。

この例では、添付のパラメータセットファイルを使用しました。このEAはEURUSD、USDCHF、USDJPYのペアを取引します(これらのパラメータを使用します)。

これをEURUSDにつけると、以下のようになります。


USDCHFにつけると、以下のようになります。


そして、USDJPYでは次のようになります。

さらに、AUDUSDでEAを実行すると、結果は以下のようになります。

同じEA、同じタイムフレーム(H1)、同じ取引ペア、同じ日付(2009.01.01-2009.03.01)です。

ということなのでしょうか?また、もしそうだとしたら、どなたかこの意味を教えていただけないでしょうか?

本当に多通貨のバックテスト/最適化の準備ができているのでしょうか?




こんにちは、私も同じ問題(異なる結果)を抱えていましたが、IsNewBar()で解決しました。

私はbaqと同意見です、ではどうすればいいのでしょうか?

IsNewBar(あるシンボル)の場合のみ、blah blah blah。

私のEAでは、異なるシンボルに接続して同じ結果を得ました。

私が関数を取得した記事はこちらです: 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:

こんにちは、私は同じ問題(異なる結果)を持っていたが、IsNewBar()でそれを解決しました。

私はbaqに同意し、我々は何をすべきか、引用符を取得し、この関数は行います。

IsNewBar(あるシンボル)の場合のみ、blah blah blahとなります。

私のEAでは、異なるシンボルにアタッチして同じ結果を得ました。

私が関数を取得した記事はこちらです: https://www.mql5.com/en/articles/105

Aliさん、私が上に挙げた例は、あなたが言及したIsNewBar()関数の ソースであり、すでにそれを使用しているEAです。

これをどう説明するのですか?

 

https://www.mql5.com/en/forum/1520 の多通貨同期化スレッドもご参照ください。

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