記事「多通貨エキスパートアドバイザーの開発(第2回):取引戦略の仮想ポジションへの移行」についてのディスカッション - ページ 6

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

記事「多通貨エキスパートアドバイザーの開発(パート2)」の議論:仮想ポジション取引戦略への移行"

fxsaber, 2024.02.12 17:33

あなたのアーキテクチャーは私のものとは多少異なります。

//+------------------------------------------------------------------+
//| コンストラクタ|
//+------------------------------------------------------------------+
CSimpleVolumesStrategy::CSimpleVolumesStrategy( const string sInputs ) : CStrategy(sInputs)
{
   this.Input = sInputs;

   ArrayResize(m_orders, this.Input.maxCountOfOrders);

   // ティックボリュームを取得するためにインジケータをロードする。
   iVolumesHandle = iVolumes(this.InputStrategy.symbol, this.InputStrategy.timeframe, VOLUME_TICK);

// ティック・ボリュームのアレイ・レシーバーのサイズと必要なアドレッシングを設定する。
   ArrayResize(volumes, this.Input.signalPeriod);
   ArraySetAsSeries(volumes, true);
}

私は親クラスからの入力を使用していません。私の入力はすべてプライベートなので、同じ名前を持つことができます。その結果、同じコードが1つの共通マクロの中に隠されているという、強力な普遍化が起こります。しかし、それが私のやり方なのだ。

 
Yuriy Bykov #:

すでに公開されているコードでのパラメーターの使用シナリオに焦点を当てているので、これも最終版ではないと思います。パラメータをセットに組み立てること、さらに自動でセットに組み立てることに関しては、おそらく同様に改善/単純化できることがわかるだろう。

その通りだ。この方法でやった。
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
グローバルな文字列変数で、そこにすべての入力変数が自動的に(作成される)。つまり、どんなオブジェクトが作られても、この変数は常に入力される。
 
fxsaber #:
その通りだ。この方法でやったんだ。これは、すべての入力変数が自動的に(作成される) グローバルな文字列変数である。つまり、どんなオブジェクトが作られても、この変数は常に入力される。

念のために言っておくが、文字列の入力はオプティマイザによって63文字でカットされる。

 
Stanislav Korotky #:

念のために言っておくが、文字列入力はオプティマイザーによって63文字カットされる。

ありがとうございます。入力ではないので、長さに制限はありません。

string inInputsAll = NULL;
 

取引、自動取引システム、取引戦略のテストに関するフォーラム

記事「多通貨エキスパートアドバイザーの開発(パート2)」の議論:仮想ポジション取引戦略への移行"

fxsaber, 2024.02.14 11:36 AM

おっしゃる通りです。このようにしました。
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
これは、すべての入力変数が自動的に(作成される) グローバル文字列変数です。つまり、どんなオブジェクトが作成されなくても、この変数は常に入力に供給されます。

添付します。

ファイル:
 

こんにちは、

私はOOPについて急な学習曲線を描いています。前回の記事に続くこの記事はとても参考になりました。

まだ勉強中です。ありがとう。

 
スクリーンショットが表示されません。もう一度添付してもらえますか?