記事"メタトレーダー5クライアントターミナルにおける適応型トレーディングシステムとその使用"についてのディスカッション - ページ 2

 

ドキュメントを英語に翻訳するのは面倒ですか?良いドキュメントにはいつも感謝している。素晴らしい記事をありがとう

 
Lugner:

ドキュメントを英語に翻訳するのは面倒ですか?良いドキュメントにはいつも感謝している。素晴らしい記事をありがとう

できるだけ早く、添付のドキュメントを翻訳します。
 

入力パラメーター(変数)を扱うには、クラス宣言の前に宣言して、クラス(インクルード)の呼び出しパスに従うだけでいい。

クラス(インクルード)の呼び出しパスに従うだけです。

 
Lugner:

ドキュメントを英語に翻訳するのは面倒ですか?良いドキュメントにはいつも感謝している。素晴らしい記事をありがとう

ありがとう。ドキュメントは翻訳されています。
 
AM2:

CAdaptiveStrategyクラスでは、ストキャスティクスのみを取引しようとしています:

他は無効にしましたが、テスターのチャートは同じです。私の理解では、ここでストラテジーの接続と切断が行われるのでしょうか?

はい、ストラテジーはCAdaptiveStrategy::Expert_OnInit()関数で接続されます。利便性を考えると、Expert Advisorのデバッグバージョンを使用する方がよいでしょう。どのストラテジーのどのシグナルが実際の取引で使用されたかは、direction_res.txt ファイルで確認できます。

指定した5つのストキャスティクスからなるアダプティブ・ストラテジーを使用した場合(EURUSD H1、2010年初めから2010年9月1日までのテスト)、以下のような結果が得られた:




 

これは、私がプログラマティック/ロボット・トレーディングについて読んだ記事の中で、おそらく最も示唆に富むものだ。ありがとう!

この新たな熱意に基づき、私はユージンの仕事を少し改作した。[謝罪 - 少なくとも私もアイデアを共有します ;-) ]。

私は、既存のEA(残念ながら、まだオブジェクト指向ではありません)を次のように改造しました:

1.複数の時間スケール:M1、M3、M5、M10、M20、M30、H1
2.複数の高速MA:3,5,7,9,11
3.複数の遅行MA:17,27,37,47など 97,107,117など

foreach(period)-foreach(fast)-foreach(slow)ループで、M1ティックに接続。各ティックは「仮想」取引をチェックする必要があるかどうかを判断し、論理的/仮想的なP/Lバランスを保ちながら、必要であれば「実行」する。

結果は非常に驚くべきもので、非常にポジティブなものであった.

現在最適化しているのは、短い時間帯(たとえばM1、M3)を削除すること(高い時間帯のほうが最終的に「勝つ」ため)、そして「急速に改善する」パラメーター・ セットを検出できるようにするために「実行中のP/L」カウンターをクリアダウンする頻度を決定することである。

また、私のお気に入りのトレーディングEAをこの作業にインターフェイスさせ(ADX/RSI/MACD/RVIのチェックなどを追加する)、常に最適で勝率の高い高速/低速MAペアを使用するようにし、さらに優れた市場、資金、ポジション、トレード管理ロジックを持つようにします。

ありがとうございました、

T.

 

量子、

明らかに、私はまだ贈与されたとは別に、より多くの売買条件(または売買条件のペア/コンボ)を追加したい場合

if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG;
if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;

CStrategyMA.mqh.の例では、まだ贈られている、

他の機会をトリガーするために

new_state=SIGNAL_CLOSE_SHORT;
// そして 
new_state=SIGNAL_CLOSE_LONG;

CStrategyMA.mqhにそれらのコンボを追加するのは論理的な意味がない。

を追加することは論理的に意味がない、

そうですよね?

私は急速に、例えば、私がそれらの条件を追加したい場合という意味です:

// 購入条件3:MA新品 
   bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]);
// 買い条件4:前回のOPEN価格がMAより高い
   bool buy_condition_4=(p_open>m_values[1]);

// 売り条件3:MA新規 
   bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]);
// 買い条件4:前回のOPEN価格がMAより低い
   bool sell_condition_4=(p_open<m_values[1]);

そして

  if(buy_condition_3  &&  buy_condition_4) new_state=SIGNAL_OPEN_LONG;
   if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT;

   if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT;
   if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;

CStrategyMA.mqhの中の サブクラスに追加することができる。

言い換えれば、このインクルードファイルCStrategyMA.mqhとCAdaptiveStrategy.mqhを正しく継続することで、適応システムのコアシステムに影響を与えることなく、CStrategyMA.mqh内のサブクラスに追加することができます。

とCSampleStrategy.mqhを相互作用させ、論理的な核となる新しい条件(例の3と4)も考慮する。

を考慮するのか?

それとも条件3と4については、例えばCStrategyMA3and4.mqhを書き換えて追加すべきでしょうか?

同じCStrategyMA.mqh内にこれらの条件を追加して、すべて正しく動作させることは可能ですか?

多分、私は自分で返信を持っているし、私は少し愚かですが、また、あなたの意見を聞きたい(複数可)。

ありがとうございます。

 
Automated-Trading:

はい、ストラテジーは CAdaptiveStrategy::Expert_OnInit() 関数で接続されます。利便性のため、Expert Advisor のデバッグ版を使用することをお勧めします。実際の取引でどのストラテジーシグナルが使用されたかは、direction_res.txt ファイルで確認できます。

上記の5つのストキャスティクスからなるアダプティブ・ストラテジーを使用した場合(EURUSD H1、2010年初めから2010年9月1日までのテスト)、以下のような結果が得られました:

チャートから判断すると、最適化の一部が自動化されていたとしても、単純に最適化されたモデルであることがわかりますが、適応型モデルとは、ストラテジー運用中にエントリーやエグジットを市場に適応させる計算ブロックが存在するモデルであり、初期設定のパラメータは全く問題ではありません。このような条件では、バランスラインに対するエクイティラインだけが均等化されます。なぜなら、利益によってポジションを決済 するための配分が変更された場合でも、このようなシステムは新しい値を再計算し、新しい利益ゾーンを決定するため、利益に関するパラメータを再構築し、エクイティ注文のグループは維持されるからです:
ファイル:
 

Forexistenceへ、

ご質問にお答えしました :)

おっしゃるとおり、取引条件を変更したい場合、2つの方法があります。1つは、ストラテジーCStrategyMAに新しい条件を追加する方法(ただし、初期とは異なる新しいストラテジーを取得することになります)、もう1つは、新しいクラス(たとえば、CStrategyMA34)を作成し、そこに追加の売買条件を追加する方法です。

もちろん、新しいストラテジーのファイルをインクルードし、CAdaptiveStrategy クラスの Expert_OnInit関数に 新しいストラテジーを追加する必要があります:

#include <CStrategyMA3and4.mqh>

int CAdaptiveStrategy::Expert_OnInit()
{
.....
--- adding new strategies
   for(int i=0; i<10; i++)
     {
      CStrategyMA34 *t_StrategyMA34;
      t_StrategyMA34=new CStrategyMA34;
      if(t_StrategyMA34==NULL)
        {
         delete m_all_strategies;
         Print("Error of creation of object of the CStrategy3and4 type");
         return(-1);
        }
      int period=3+i*10;
      t_StrategyMA34.Initialization(period,true);
      t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period));
      m_all_strategies.Add(t_StrategyMA34);
     }
.....
}

2つ目の方法の方が、多くのストラテジーやそのバリエーションを追加することができます。

CStrategyMA クラスのインスタンスを削除する必要はありません(もしあれば)。

m_all_strategiesに含まれるストラテジーのリストの中から最適なストラテジーを決定するのに役立つ。

 
dasmen:
チャートから判断すると、この最適化の一部が自動化されていたとしても、単純に最適化されたモデルであることがわかりますが、最適化されたモデルとは、ストラテジーの運用中にエントリーやエグジットを市場に適応させる計算ブロックが存在するモデルであり、初期設定のパラメータは全く重要ではありません。このような条件では、バランスラインに対するエクイティラインだけが均等化されます。なぜなら、利益でポジションを決済するための配分が変更された場合でも、このようなシステムは新しい値を再計算し、新しい利益ゾーンを決定するため、利益に関するパラメータを再構築し、エクイティ注文のグループは維持されるからです:

この記事では、数学のような適応戦略の概念と応用を、実際には管理の 選択を実行するためのシステムとして使用しています。