エラー、バグ、質問 - ページ 1564

 
Anton Zverev:

iCustom+IndicatorRelease。複雑な実体をその場で作り出すのは、松葉づえのような解決策ではないのでしょう。味については議論の余地はありません。問題は、多数のエージェントにこのような松葉杖をつくことが、どれだけ資源の浪費につながるかだ。

まあほとんど全部が5でカッコいいんですけどね。スピードは一級品です。そして、ここで、すみません、予想もしないところで総毛立つことがあります。

なぜリリースインジケータを作るのか?

新しいティックごとに、テスト対象のエキスパートにチャートイベントを送信するようにします。

ティックごとにインジケータを作成 し、その後リリースを行う - そこに無駄なリソースが存在する

 
Anton Zverev:

Vasiliyは、FORTSでは(テスターではなく)サブスクリプションとBookEventを介してメカニズムが動作することを述べました。これにより、EAを任意のチャートにリンクさせる必要が全くなくなります。

BookEventはテスターでは未実装です
削除済み  
Slawa:

なぜインジケーターへのリリースを行うのか?

新しいティックごとに、テスト対象のエキスパートにチャートイベントを送信するようにします。

ティック毎にインジケータを 作成してリリースするのは、リソースの無駄遣いになる

表現が下手だから、わからないんですね。詳細はこちら https://www.mql5.com/ru/code/280

そして、こんな簡単なことを実現するために、このソリューションはどれだけのリソースを消費するのだろうか!?

Мультивалютный обработчик событий OnTick(string symbol)
Мультивалютный обработчик событий OnTick(string symbol)
  • 投票: 27
  • 2011.02.01
  • Konstantin Gruzdev
  • www.mql5.com
Упрощенная реализация полноценного мультивалютного режима в MetaTrader 5. Нет необходимости вникать в то, как это работает. Минимум простых настроек. Максимум удобства для пользователей. Работает в тестере.
削除済み  
Slawa:
BookEventはテスターではまだ実装されていません
では、FXでも使えないのにテスターで使う意味があるのでしょうか?Vasiliyは、上記のように賢明な提案をしたと思う。
削除済み  
Slawa:

そして、1秒たりともループさせず、1時間弱の間、ループさせてください。IsStopped()のチェックは必須です。

ちなみに、睡眠は必須です。そうしないと、テスターがハングアップしてしまいます。そして、Expert Advisorの正常な動作中にシステムのリソースが荒らされることになります。

バリアントのテストもしないでください

2016.04.26 19:39:05     Core 1  2016.04.25 00:16:48   infinite Sleep loop detected while testing
2016.04.26 19:39:05     Core 1  EURUSD : 2016.04.25 00:00 - 2016.04.26 00:00  1439 minute bars absent in total while real ticks present
2016.04.26 19:39:05     Core 1  EURUSD : real ticks begin from 2016.01.04 00:00:00
2016.04.26 19:39:05     Core 1    SleepPause=10
2016.04.26 19:39:05     Core 1    TimerInterval=1000

コード

sinput uint TimerInterval = 1000; // Через сколько секунд вызывать OnTimer
sinput uint SleepPause = 10;      // На сколько милисекунд делать Sleep
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   EventSetTimer(TimerInterval);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   const uint Amount=TimerInterval*1000/SleepPause;

   for(uint i=0;(i<Amount) && (!IsStopped()); i++)
      Sleep(SleepPause);
  }
//+------------------------------------------------------------------+
 
Anton Zverev:

オプションのテストもしない

コード

ここで何を試したんですか?
削除済み  
Slawa:
ここで何を試したんですか?
そのコードをテスターで走らせる。 テスト中に無限Sleep ループが検出され、ハングアップしてしまいます。
 
Anton Zverev:
そのコードをテスターで立ち上げる。 テスト中に無限Sleepループが検出 され、ハングアップしてしまうのですが。

何度も言われていることですが、「ドキュメントを読め」ということです。

ドキュメントを全部読みました」って言ってなかったっけ?数回」?

これを 読んだことがありますか?まだのようですね...。

Sleep()関数実行時にテスターの現在時刻がテスト期間の終了時刻を超えると、「Sleepで無限ループ」というエラーが発生します。このようなエラーが発生しても、テスト結果は破棄されず、すべての計算(取引量、ドローダウンなど)が実行され、結果が端末に渡される。

削除済み  
Slawa:

これを 読んだことがありますか?

ありますし、よく読んでいます。ポイントは、OnTimerでSleepを使用すると、プログラマーはいつテスト間隔を抜ける か判断できないことです。IsStopped(ドキュメントを読んで一気にコードに入れました)は終了の瞬間に機能しません。誰のせい?
削除済み  
Slawa:

また、OnTimerのループ内の目盛りの欠落については、再現性のある証拠が必要です。持っていますか?

ドキュメントに書いて あったんですねー。

テスターでは、Sleep()呼び出しによってテスト処理が遅延することはありません。Sleep()を呼び出すと、生成されたティックが指定された遅延時間内に「再生」さ れ、その結果、保留中の注文やストップなどがトリガーされることがあります。Sleep()が呼ばれた後、テスターのモデル化された時間は、Sleep関数パラメータで指定された間隔だけ増加する。

そのため、これらのティックごとにExpert Advisorを呼び出すことはできません。証明は認められるのか?