記事"モンテカルロ法を適用したトレーディング戦略の最適化"についてのディスカッション

 

新しい記事 モンテカルロ法を適用したトレーディング戦略の最適化 はパブリッシュされました:

トレード口座でロボットを起動する前に、通常はテストを行い、ヒストリー上で最適化します。 しかし、ここで合理的な質問が発生します: 過去の結果は、未来で役に立つだろうか。 この記事では、モンテカルロ法を適用してトレード戦略の最適化のカスタム基準を構築するメソッドについて説明します。 さらに、EA の安定性基準を考慮します。

上記のすべてをチャートで説明しましょう。 資本曲線を示します。 各々は、トレードの生成されたシーケンスによって決定されます。 利便性のため、異なる色で曲線をマークします。 実際には、その数ははるかに大きい-数千万です。 それぞれについて、必要なパラメータを計算し、その全体に基づいて統計的結論を下します。 明らかに、特性上の最も重要な最終利益があります。

生成された資本曲線

その他にも、確率論的定式化と EA 操作モデル化へのアプローチも可能です。 たとえば、トレードのオーダーではなく、価格オーダーをシミュレートし、EA が取得した総計の利益を調査することができます。 価格シリーズの生成の原則は、解決したいタスクに応じて選択することができます。 ただし、このメソッドでは、より多くのコンピューティングリソースが必要です。 また、メタトレーダーは現在、ランダム EAを使用するための正規のメソッドを提供していません。

作者: Aleksey Nikolayev

 

Функция setks() вычисляет массив прибылей сделок, исходя из истории торговли. 

bool setks(double &k[])
  {
   if(!HistorySelect(0,TimeCurrent())) return false;
   uint nhd=HistoryDealsTotal();
   int nk=0;
   ulong hdticket;
   double capital=TesterStatistics(STAT_INITIAL_DEPOSIT);
   long hdtype;
   double hdcommission,hdswap,hdprofit,hdprofit_full;
   for(uint n=0;n<nhd;++n)
     {
      hdticket=HistoryDealGetTicket(n);
      if(hdticket==0) continue;

      if(!HistoryDealGetInteger(hdticket,DEAL_TYPE,hdtype)) return false;
      if(hdtype!=DEAL_TYPE_BUY && hdtype!=DEAL_TYPE_SELL) continue;

      hdcommission=HistoryDealGetDouble(hdticket,DEAL_COMMISSION);
      hdswap=HistoryDealGetDouble(hdticket,DEAL_SWAP);
      hdprofit=HistoryDealGetDouble(hdticket,DEAL_PROFIT);
      if(hdcommission==0.0 && hdswap==0.0 && hdprofit==0.0) continue;

      ++nk;
      ArrayResize(k,nk,NADD);
      hdprofit_full=hdcommission+hdswap+hdprofit;
      k[nk-1]=1.0+hdprofit_full/capital;
      capital+=hdprofit_full;
     }
   return true;
  }

強調表示された取引は、利益がゼロの終値 取引はサンプルに含まれないが、始値取引はサンプルに含まれることを想定している。

DEAL_ENTRY をお試しください。


スワップと手数料はモンテカルロ取引を分析する際に計算する必要がありますか?システム的な価値はありません。

始値と終値の比率を利益として使用することをお勧めします。ここで、「ロットを考慮すべきか」について議論することができます。

 

一方では、取引は独立していると仮定されている。

一方で、取引が独立しているTSを想像するのは難しい。


例えば、すでにポジションをオープンしている 場合、取引を決定する際にこの状況を無視することはできない。

モンテカルリムは非ランダム値であることがわかりました。それとも、私が何か理解していないのでしょうか?

 
fxsaber:

ハイライトでは、利益がゼロの終値 取引はサンプルに含まれないが、始値取引はサンプルに含まれると仮定している。

DEAL_ENTRY を試す。

モデルを簡単にするため、資本曲線に影響を与える取引のみを取引とみなす。

 
fxsaber:

モンテカルロ取引を分析する際、スワップと手数料は計算する必要がありますか?システム的な値はありません。

EAデバイスによると思います。その値が小さければ最適化基準の計算には影響しませんが、大きければ無視しても最適化結果は 歪みます。

 

fxsaber:

私は、始値と終値の比率を利益とすることをお勧めします。ここで、「ロットを考慮すべきか」というトピックについて議論することができます。

あなたが話していることは、私がリスクについての記事で 収益性と呼んだものに似ています。その記事ではEAを内部から研究していますが、ここではEAを与えられたもの、つまり「ブラックボックス」としてとらえ、トレードサイズの管理はその不可欠な一部です。つまり、利益の分布はリターンの分布とは大きく異なる可能性があるということです。つまり、リターンだけに頼れば、全く異なるEAを最適化することになります。

 
fxsaber:

一方では、取引は独立していると仮定される。

一方では、トランザクションが独立しているTSを想像する ことは難しい。


例えば、すでにオープンポジションを持って いる場合、取引を決定する際にこの状況を無視することはできない。

モンテカルリムは非ランダム値であることがわかりました。それとも、私が何か理解していないのでしょうか?

もちろん、取引の独立性は理想化です。2つの取引が時間的にあまり重ならない場合、価格が第一近似的に独立した増分を持つランダム過程とみなすことができるため、独立とみなすことができる。つまり、独立性とランダム性は取引の終了価格によって決定される。明確にするために、ここでの取引はMT4でポジションと呼ばれるものです。取引の独立性については、すでに記事の 中で考察を試みている。
 
Aleksey Nikolayev:
もちろん、取引の独立性は理想化である。二つの取引が時間的にあまり重ならない場合、 第一近似の価格は独立した増分を持つランダム過程とみなすことができる ため、独立とみなすことができる。つまり、独立性とランダム性は取引の出口価格によって決まる。明確にするために、ここでの取引はMT4でポジションと呼ばれるものです。取引の独立性については、すでに記事の 中で考察を試みた。

しかし、すでに開いていたために開かなかった他の取引はどうでしょうか。また、同じトーラス・ロジックのシグナルに従ってオープンしたトレードのうち、トレード・シグナルの瞬間に他のトレードがオープンしていなかったという幸運に恵まれたトレードは、何か特別なものなのでしょうか?

ここに矛盾がある。トレードシグナルをモンテカルロ化するのは合理的かもしれません。それらは価格の関数であるため、互いに依存しない。

 
fxsaber:

しかし、すでに開いていたために開かなかった他の取引はどうでしょうか?また、同じトーラスロジックのシグナルに従ってオープンしたトレードでも、オープンシグナルが出た瞬間に他のトレードがオープンしていなかったという幸運に恵まれたトレードは、特別なトレードなのでしょうか?

ここに矛盾がある。おそらく、トレードシグナルをモンテカルロ化することは合理的でしょう。それらは価格の関数であるため、実際には互いに依存しない。

この記事のアプローチは、Expert Advisorのロジックに踏み込まず、Expert Advisorの作業結果を「そのまま」受け取るというものです。あなたのアプローチは、おそらくより正確な結果をもたらすでしょうが、プログラミングと結果の分析に多くの労力を必要とするでしょう。
削除済み  

新しい最適化基準を 導入することで、新しいサンプルに対するTSのロバスト性を向上させることが主な目的だったので。

しかし、考えることはたくさんある。

 
Maxim Dmitrievsky:

主な目的は、新たな最適化基準を 導入することで、新たなサンプルでのTSの安定性を向上させることであったためである。

その通り、不足している。しかし、意味のある結果を得るためには、十分に多くの時間間隔、シンボル、EA(大数の法則)について実施する必要がある。記事をあまり肥大化させるつもりはなかった。