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

 
elibrarius:
ファイルからバーを読み取る方が簡単だと思います。

この条件にテスト日を追加し、テスターでテストすれば問題なく、少なくともパフォーマンスは低下します。

もちろんファイルは問題ありませんが、ニューロネットで間違った場所を覗いてしまうという大きな誘惑があります - 私はいつもそうでした )))

 
Roman:

このコードでは lock_guard
を使用していますが、コメントアウトしても変化は
ありません。

しかし、その理由は明らかです。
休暇から帰ってきて、面倒でなければ勉強します。しかし、論理的にはバグはmqlにあるのではなく、あなたのコードにあります。ところで、ちょっと面白いことに、そのライブラリがどのようなエンコーディングで動作するのか?utf-16で間違いないのか、でもutf-8だったらどうしよう、結局一番多いのは。
 
Igor Makanu:

この条件にテスト日を追加し、テスターでテストすれば問題なく、少なくともパフォーマンスは低下します。

あるいは、管理者の提案に従えば、ファイルは問題ないでしょうが、neuronetを使って覗いてはいけないところを覗きたくなるかもしれません-私はいつもそうしています )))

チェックアウトした-役に立たなかった。

そして、そうであってはならないのです。結局、管理人さんが引用された記事によると
タイムフレームD1以下の場合、取引サーバーからダウンロードする履歴は最低 1年分です。

そして、私が依頼したM15バー100000本が約3年。最初の1年はバーがコピーされているので37kバー、それ以降はテスターにないだけで、待っていてもどうにもなりません。

 
elibrarius:

確認したところ、動作しませんでした。

そうであり、そうであってはならないのです。結局、管理人が引用した記事によると
タイムフレームD1以下の取引サーバーからダウンロードする場合の履歴は、最低 1年です。

そして、私が依頼したM15バー100000本が約3年。最初の1年はバーがコピーされているので37kバー、それ以降はテスターにないだけで、待っていてもどうにもなりません。

M15にテスト2000~2019を入れ、エキスパートコードで動作しています。

input int InpBars = 100000;

void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

   if(print_once)
   {  Print("OK - ", TimeCurrent());
      print_once = false; }

}

がログに残りました。

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: ExpertsIgorMtst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs.のテストが開始されました。

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 最終残高 10000.00 USD

NSのテストとトレーニングを開始する条件を追加する。
 
Igor Makanu:

私はすべてを動作させ、M15、エキスパートコードにテスト2000〜2019を置く。

がログに残りました。

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: ExpertsIgorMtst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs.のテストが開始されました。

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 最終残高 10000.00 USD

コンディションにテストを開始する日を追加してNSを教えるか、管理者が提案する方法で行ってください。

今、私はあなたの考えを理解しました)

つまり、過去2ヶ月間ではなく、3年分のテストを実行し、OnTickでこれら3年分をすべてスキップし、過去2ヶ月間だけで計算を開始する必要があります。

そうですね~、それが一番簡単な解決策ですね。ありがとうございました。

 
elibrarius:

そして、私が依頼した10万本のM15は約3年です。最初の1年間はバーをコピーして、それが37,000本、あとはテスターにないだけ、待っていてもどうにもならない。

オプティマイザーモード「数学的計算」で履歴ファイルを扱うと、より速く作業できます。

 
elibrarius:

今、私はあなたの考えを理解しました)

例えば、過去2ヶ月間ではなく、3年分のテストを実行し、OnTickでその3年分をすべてスキップして、過去2ヶ月間だけ計算を開始する。

はい - これが最も簡単な解決策です。ありがとうございました。

条件に時間を加える

input int InpBars = 100000;
input datetime InpDataTest = D'2015.01.01 00:00'; 
void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   datetime t = TimeCurrent();
   if(bars < InpBars || t < InpDataTest  ) return;

   if(print_once)
   {  Print("OK, TimeCurrent() =  ", t);
      print_once = false; }

}

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: expertsIgorMtst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK,TimeCurrent() = 2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 最終残高 10000.00 USD



 
Igor Makanu:

時間に余裕を持たせる

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: expertsIgorMtst.ex5 from 2000.01.01 00:00 to 2019.10.03 00:00 started with inputs:

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent() = 2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 最終残高 10000.00 USD



はい、ありがとうございます。すべてがうまくいく。

 
Aleksey Vyazmikin:

オプティマイザーの"数学的計算"モードで履歴ファイルを扱うと早いでしょう。

これは、純粋にNSそのもので、結果を見ている場合です。

今、コストとスプレッドの両方を考慮したトレードをテストしているところです。この結果、取引ロボットはテスターで使用できる状態になり、実際の取引に接続できるようになりました。

 
elibrarius:

まあ、純粋にNSそのもので結果を見ていればの話ですが。

今、コストとスプレッドの両方を考慮したトレードをテストしているところです。だから、テスターで見て、実際の取引につなげられる既製のロボットに興味があるんです。

まだ理解できないのですが、予測計算にはもっと深い計算が必要なのでしょうか?本当に必要なんだ - MA on the days :)1年早くテストを始めて、その前の取引は禁止されることもあるくらいですから...。