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

 
Slava:

まずは記事を読むことから始めましょうhttps://www.mql5.com/ru/articles/239

読んでみてください。しかし、なぜ CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time); がテスターでは100kバーではなく30kバーを読み取るのか、答えは見つかりませんでした。 同時にターミナルでは、すべてを正しく読み取ることができます。
 
elibrarius:
読んでみてください。しかし、なぜCopyTimeの テスターが100kbarsではなく30barsを計算したのか、その答えはまだ出ていません。同時にターミナルでは、すべてを正しく読み取ることができます。

使用した商品の履歴は、その商品に初めてアクセスする際に、テスターがクライアント端末から(取引サーバーからではなく!)自動的にダウンロードします。

テストエージェントは、テスト時の指標算出に必要な履歴のデータを提供するため、わずかなマージンをもって不足する履歴のみをダウンロードする。タイムフレームD1以下の場合、トレードサーバーからダウンロードされる履歴は最低1年です。つまり、2010.11.01-2010.12.01(1ヶ月間隔)のテストを期間M15(各バーは15分)で開始すると、ターミナルは2010年全体の履歴を要求することになるのです。Weeklyの時間枠では、約2年分である100本の履歴を要求します(1年は52週あります)。 月単位でのテストでは、エージェントは8年分の履歴を要求します(12ヶ月×8年=96ヶ月)。


概要

テストの設定で、毎月のタイムフレームを設定します。

 
Slava:

使用されたシンボルの履歴は、テスターがそのシンボルに初めてアクセスしたときに、クライアント端末から自動的にダウンロードされます(取引サーバーからではありません!)。

テストエージェントは、テスト開始時に指標を計算するために必要な履歴のデータを提供するために、わずかなマージンで不足する履歴のみをダウンロードする。タイムフレームD1以下の場合、トレードサーバーからダウンロードされる履歴は最低1年です。つまり、2010.11.01-2010.12.01(1ヶ月間隔)のテストを期間M15(各バーは15分)で開始すると、ターミナルは2010年全体のツールの履歴を要求することになるのです。Weeklyの時間枠では、約2年分である100本の履歴を要求します(1年は52週あります)。 月単位でのテストでは、エージェントは8年分の履歴を要求します(12ヶ月×8年=96ヶ月)。


概要

テストの設定で、毎月のタイムフレームを設定します。

それは明快で、資源の節約になるのです。

M15でテストしたいが、(ニューラルネットワークを学習させるために)数年分のデータが必要な場合はどうすればいいのか?バーは自分たちのファイルに保存したほうがいいのか?

 
Roman:

Renateの 例文にあるようにmemcpyを使用。
他のコピー機能を使っても同じ問題が発生します。
これらの関数による動作は、この投稿とこの
可能な限りのコピー機能を試した。

複数のスレッドからデータを共有することについての知識は?

 
Ilyas:

マルチスレッドのデータ共有について教えてください。

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

recursive_mutex mtx;
const wchar_t* data;
bool success ;
                
while (condition)
{
        
   if (DataAvailable())
   {
      lock_guard<recursive_mutex> locker(mtx);
      success = ReadData();
   }
        
   if (success)
   {
      lock_guard<recursive_mutex> locker(mtx);
      data = getData();
                
      memcpy(out, data, wcslen(data) * (sizeof(char)*3));
   }
        
   Sleep(1);
}
それでも漏れるようになったが、その理由は理解できる、間違ったサイズオブ
ファイル:
222.PNG  13 kb
 
elibrarius:

なるほど、省資源化ですね。

しかし、M15でテストする必要があるけれども、(ニューラルネットワークを学習させるために)数年分のデータが必要な場合はどうでしょうか?ファイルにバーを保存する必要があるのでしょうか?

あとは待つだけです。

input int InpBars = 100000;

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

}
 
elibrarius:

なるほど、省資源化ですね。

しかし、M15でテストしたいが、数年分のデータ(ニューラルネットワークの学習用)が必要な場合はどうすればいいのだろうか?バーは自分たちのファイルに保存したほうがいいのか?

何が問題なのか?どの時間軸のデータにもアクセスできます。
 
Slava:
何が問題なのか?どの時間軸のデータにもアクセスできます。

テスターでの取引はM15で行われるため、M15でテストを実行すると、履歴から100000バーをカウントすることができません。しかし、M15での売買をテストする必要がある。

8年分の履歴を残すためにМンテューで実行すると、月1回以上の取引ができなくなる。

 
elibrarius:

テスターでの取引はM15になるので、M15でテストを実行すると、履歴から10万バーをカウントすることができません。そして、M15でのトレードをテストする必要があります。

8年分の履歴を残すためにМンテューで実行すると、月1回以上の 取引ができなくなる。

なぜダメなのか?

 
Alexey Viktorov:

なぜ?

初値が 試されている。ダニは月に1回やってきます。
すべての実数値で実行する場合、強力な再設計とコードの複雑化で可能です。また、資源の浪費にもなります。ファイルからバーを読み取る方が簡単だと思うのですが。