"ダミー "からの質問 - ページ 52

 

どこかに行く必要があるのでしょうか?どうだろう...

EMAでは飛ぶけど、iCustomでは10倍時間がかかるとか...。

 

絶対にやってはいけないことです。

void OnTick()
  {
   //--- безусловно создаем индикатор
   ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE);
  }

インジケーターのハンドルを取得 する」と言っても、実際には 新しいインジケーターを作成 する」ことになるので、騙されないようにしましょう。

その上、ハンドルの漏れもある。

 
Karlson:

どこかに行く必要があるのでしょうか?どうだろう...

EMAでは飛ぶけど、iCustomを動かすと10倍時間がかかるとか...。

廃止されたHandles-Indicatorsの束を どこに置くべきか?どうだろう。そのような働き方はしていません。 刻むごとに増えています。

もし、このようなストラテジーを実装するとしたら、 iCustom() を通して準備のできたカスタムインディケータを 呼び出すことを拒否 し、代わりにExpert AdvisorのOnTick()にインディケータ本体を 配置することになるでしょう。 そして、そのデータの計算はExpert Advisor自身が行うことになる。

.ex5形式のインジケータで、コードがない場合に問題が発生します。

 

IndicatorRelease() 関数は、コンピュータのメモリから未使用のインディケータを解放するために使用され、このインディケータのハンドルが渡されます」(Expert Advisorの非初期化時に使用しています)を思い出したのです。

しかし、同じように、刻み ごとに新しいハンドルが必要なのは面倒です。

 

ハンドルの蓄積についてですが、調べてみます。

それこそEAに七面鳥を入れるつもりです。

 
Karlson:

ハンドルの蓄積についてですが、調べてみます。

それこそExpert Advisorに七面鳥を入れるつもりです。

インジケータはそのままにして、タイマやイベントによるコピーを作成することができます。
 
Interesting:
インジケータはそのままにして、タイマやイベントによるコピーを作成することもできます。

OnTick()、OnTimer()、OnChartEvent()のどこでインジケータのコピーを作成するのかの違いは何でしょうかいずれにせよ、特別な起動をするたびに「インジケーターのコピー」が作成され、ただでさえ膨大な山を悪化させることになるのです。

それとも、あなたの論理が理解できないのでしょうか。

 
Yedelkin:

OnTick()、OnTimer()、OnChartEvent()のどこでインジケータのコピーを作成するのかの違いは何でしょうかいずれにせよ、特別な起動をするたびに「インジケーターのコピー」が作成され、ただでさえ膨大な山を悪化させることになるのです。

それとも、あなたの論理が理解できないのでしょうか。

ここにコツがあります。インジケーターのパラメーターを変更する必要がない(インジケーターの新しいコピーを作成する必要がない)場合、初期化ブロックでインジケーターを 一度作成 する方が論理的です。

しかし、操作中にインジケーターのパラメーターを自動的に変更する必要がある場合は、できるだけ効率よく変更する必要があります。

最も効率的な方法は、タイマーの中にインジケーターの新しいコピーを作成することです(必ずしも毎ティック毎ではありません)。

最も効果的な方法は、何らかのイベント(数個のイベント)が発生したときに、表示の新しいコピーを作成することであろう。

追記

指標の算出にかかる時間を考慮し、「不要なコピー」をなくすようにすることが必要です。

 

新しいバッグの再計算は、私の場合、1日1回でも1週間でも可能です。タイマーを設定します。

bool  EventSetTimer(
   int  seconds      // количество секунд
   );

本当に一日や一週間の秒数に戸惑う...)))新しい日替わりバーで行うことも可能です...

OnTimer()関数では、まずIndicatorRelease() で前のインディケータを削除し、次に新しい周期で新しい インディケータを作成しています。

void OnTimer() 
{

IndicatorRelease( ma_handle );

ma_handle=iMA(Symbol(),0,newMA,0,MA_EMA,PRICE_CLOSE);

}

それは一般論として...。

 
Renat:

絶対にやってはいけないことです。

インジケーターのハンドルを取得 する」と言っても、実際には 新しいインジケーターを作成 する」ことになるので、騙されないようにしましょう。

さらに、ハンドルが漏れるということもあります。

MQL5の初期に多くの疑問が議論され、自動売買のための開発の重要な部分をカットしてしまい、その結果、超最適化されたOnCalculate() を空白で詰まらせ、イベントに計算を入れる人が出てきましたね。少し遅いですが、それでもダイナミックパラメータごとに独自のハンドルを作成するよりは速いです。