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

 
stringo:
x = x++; という式を実質的に正当化できるか?通常使用されているように、x++; の後に代入せずにインクリメントを使用するのはいかがでしょうか。
偶然出てきました。C言語ライクな言語で書くことはそうそうないでしょうから、x++だけがあることを忘れてました。x = x + 1を期待していたのですが。結果、面白いことに...。
 
GODZILLA:

そんなことはない!まあデータがないから、もう一度聞いてみたんだけど...。5回目のリクエストでゲットして行きましたが、無音でそれっきり!!!!

エキスパートアドバイザーやカスタムインジケータの 場合は、イベントドリブン 処理 モデルを使用するのがよいでしょう。 イベント OnTick() や OnCalculate() の処理で必要なデータを取得 できなかった場合は、イベントハンドラを終了 し、次にハンドラが呼ばれたときにデータにアクセスできることを期待する必要があります。

私もこれを読んでそう思ったのですが、例えばこのコードではこうなります。

int handle;
datetime inittime;
void OnInit(){

  
  handle = iCustom( "GBPUSD", PERIOD_M2, "examples\ATR", 14 );
  Print("Handle=", handle);
  inittime = TimeCurrent();
}
bool isfirst = true;
void OnTick()
  {
    double val[1];
    int start_pos = 1;
    if( isfirst || TimeCurrent()-5*60 > inittime ){
      int n = CopyBuffer( handle, 0, start_pos , 1, val );
      Print("Получено n=", n, 
        (n==-1)?" ошибка при получении данных из индикатора, ":" нет ошибки при получении данных из индикатора",
        " значение ", val[0] );
    }
    isfirst = false; 
  }

5分待って、その後、各ティックでインジケータの値を取得します(ログの一部を切り出しました)。

2010.10.14 15:47:09 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:47:03 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:47:02 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:47:02 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:47:01 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:47:01 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:46:59 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:46:59 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:46:58 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:46:58 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:45:11 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:11 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:10 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:05 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:03 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:45:03 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:45:02 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:01 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:45:00 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:58 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:56 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:56 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:54 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:44:08 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:05 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:44:05 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:43:27 tstincl (EURJPY,M1) Received n=1 indicator value 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:43:25 tstincl (EURJPY,M1) Received n=1 indicator value 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:43:24 tstincl (EURJPY,M1) Received n=1 indicator value 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:43:23 23 tstincl (EURJPY,M1) Received n=1 indicator value 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:43:04 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:43:01 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:42:59 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:42:58 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:42:58 tstincl (EURJPY,M1) n=1 インジケータ値0.0006792857142856462からデータ受信時にエラーなしを受信しました。
2010.10.14 15:42:51 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時にエラーなし。
2010.10.14 15:42:47 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:42:43 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:42:04 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0006792857142856462 からのデータ受信時のエラーはなし。
2010.10.14 15:41:25 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:41:22 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時にエラーなし。
2010.10.14 15:41:05 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:41:05 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:41:01 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:59 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:57 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:54 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:41 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:40 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:38 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:36 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:26 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:21 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:21 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007028571428570865 からのデータ受信時のエラーはなし。
2010.10.14 15:40:18 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:40:14 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:40:13 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信しました。
2010.10.14 15:40:07 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:40:04 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:40:02 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:40:02 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:59 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:56 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:54 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:52 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:51 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:50 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:49 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:46 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:45 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:45 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007364285714285289 からのデータ受信時のエラーはなし。
2010.10.14 15:39:43 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:42 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 インジケータ値 0.0007364285714285289 からデータ受信時にエラーなしを受信。
2010.10.14 15:39:39 tstincl (EURJPY,M1) n=1 インジケータからのデータ受信時にエラーなし 0.0007364285714285289 を受信しました。
2010.10.14 15:34:38 tstincl (EURJPY,M1) 受信 n=1 インジケータ値 0.0007357142857142544 からのデータ受信時のエラーはなし。
2010.10.14 15:34:35 tstincl (EURJPY,M1) ハンドル=10

は2分ごとに変更する必要があります、あなたが見るように約45分からm2の新しいバーが利用できない、どちらも最初の後、2番目またはそれらに10回呼び出した後です。

もしかしたら、似たようなものをお持ちかもしれませんね。

開発者への質問:CopyBufferを正しく呼び出すには?タイムスケールを同期させるために、その呼び出しの前に毎回? それから、どのタイムスケールとどの文字がハンドルイニシエータを参照するかを知る必要があり、これを知るためには、どこかに保存して、CopyBufferを呼び出すすべての場所にこの情報を送信する必要があります:コードは複雑で乱雑になってしまう。

 

テスターについて質問です。

テスターパスの結果はどれくらいの頻度で保存されますか?

ログを見ると、キャッシュに結果が保存されている場合は、再計算せずにそこから取得し、時間を節約していることがわかります。長い最適化の実行中にコンピュータがクラッシュする事態に直面しました(理由は重要ではありません)。同じExpert Advisorと同じパラメータで次の最適化を 実行すると、何も保存されず、時間が無駄になった。もちろん、時々最適化を停止して再開するという安全策もありますが、あまり便利ではありません。342を構築。

 
Ashes:

テスターについて質問です。

テスターパスの結果はどれくらいの頻度で保存されますか?

ログを見ると、キャッシュに結果が保存されている場合は、再計算せずにそこから取得し、時間を節約していることがわかります。長い最適化の実行中にコンピュータがクラッシュする事態に直面しました(理由は重要ではありません)。同じExpert Advisorと同じパラメータで次の最適化を実行すると、何も保存されず、時間が無駄になった。もちろん、時々最適化を停止して再開するという安全策もありますが、あまり便利ではありません。342を構築。

最適化が完了すると、最適化結果がファイルに書き 込まれます。緊急停止した場合、結果は記憶されません。

何ができるかを考えていきます。

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo:

最適化が完了すると、最適化結果がファイルに書き込ま れます。緊急停止した場合、結果は記憶されません。

何ができるかを考えていきます。

ということになるのでしょう。

ちなみに、最適化の結果は、写真だけでなく、何か使える形で保存しておきたいですね。それとも、正しいボタンが見つかっていないのでしょうか?

 
Ashes:

これは良いアイデアでしょう。

ちなみに、最適化の結果は、写真だけでなく、加工に適した何らかの形で保存しておきたいですね。それとも、正しいボタンが見つかっていないのでしょうか?

testercache<ea_name>.<symbol>.<period>.< mode>.xml
 
Ashes:

これは良いアイデアでしょう。

ちなみに、最適化の結果は、写真だけでなく、加工に適した何らかの形で保存しておきたいですね。それとも、正しいボタンが見つかっていないのでしょうか?

また、強制終了した後に最適化を継続する方法についても質問があるのですが、ヘルプには何も書かれていませんでした。
 

sergey1294:
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

スタートボタンを押すだけ。
 
stringo:
testercache<ea_name>.<symbol>.<period>.<mode>.xml

そして、もう一つのMQL5の 記事:Expert Advisor Testing and Optimization Guide(エキスパートアドバイザーのテストと最適化ガイド)です。

最適化が完了すると、「MQL5TesterCache」フォルダに、最適化の結果として得られたすべてのパラメータと特性の数値を含む「cci_ma_ea.EURUSD.H1.2.xml」ファイルが格納されるので、それを見ることができます。

最適化結果は、ExpertName.SYMBOL.PERIOD.GenerationMode.xmlというファイルに保存されます。

  • ExpertName - 最適化されるExpert Advisorの名前です。
  • SYMBOL - シンボル。
  • PERIOD - 時間枠(M1,H1,...)。
  • GenerationMode - 刻み目生成のモード (0 - "Every tick", 1 - "OHLC on M1", 2 - "Opening prices only").

このファイルはエクセルで開いて、さらに分析することができます。

 
stringo:
スタートボタンを押すだけです。
では、テスターは自動的に過去のランのリストを「最適化結果」タブに読み込み、中断したところから最適化を続ければよいのですね。