MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1901

 
JRandomTrader #:

古くからデータ通信に利用されている。

便利です。それに異論はないだろう。しかし、先ほども言ったように、どの程度のデータをロールバックできるかは常に考えておく必要があります。

 
Vitaly Muzichenko #:

例題を出しましょう。

アップグレードのための コードがあります

このコードでは、インジケータ・バッファは我々とは独立して生きており、その中にリングバッファを編成していないので、うまくいきません - このMTを説明する方法はありません。

 
Mihail Matkovskij #:

ArrayCopyでは、他のアレイからのデータ転送のみ可能です。でも、ずらすことはできません。

誰がそんなバカなことを言ったんだ?

その方法をよく読んでください。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4やMQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプやディスカッションなど。

アレクセイ・ビクトロフ, 2022.02.13 18:21

このコードでは、1つの配列を指定する必要があります。

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );

どのインデックスから書き込み、どのインデックスをコピーするかは、配列のオフセット方向に依存します。つまり、インデックス0に常に新しいデータを入れておきたい場合は、0からコピーし、1から書き込むようにします。したがって、インデックス0と1の値は同一となり、その後、0に新しい値がコピーされます。

また、ArrayCopy()の内部がユーザーと同じループになっているかは非常に疑問です。つまり、あるサイズの配列を持っていて、それを1ティックごとに1ずつシフトして、インジケータバッファにコピーして行として表示する...ということです。


 
JRandomTrader #:

このコードでは、インジケータ・バッファは我々とは独立して生きており、その中にリングバッファを編成していないので、うまくいきません - このMTを説明する方法はありません。

なるほど。

まあ、それは動作します - それは今のところ動作させ、結果はまだありません、我々は市場が開くまで、ピンドスから我々の "友人 "を待たなければならない、それはすぐにではありません。

アービトラージできるものを見てみる。

 
JRandomTrader #:

いやしくも

そして、誰もそのジョイントに気づかなかったのです

static int head=0;
for(i=head,count=0;count<ArraySize(A);count++)
  {
   -if(++i>=ArraySize(A))i=0;
   DoSomething(A[i]);
   +if(++i>=ArraySize(A))i=0;
  }
 
JRandomTrader #:

そして、誰もそのジョイントに気づかなかったのです

まだ見ぬ

 
Vitaly Muzichenko #:

まだ見えません。

i は使用後,ループの最後でインクリメントする必要があります.

しかし、ループの最後と次のループの最初にも配列のオーバーランをチェックすることができます。

 
Alexey Viktorov #:

誰がそんなバカなことを言ったんだ?

その方法をよく読んでください。


この機能がこれほど普遍的なものだとは知りませんでした。しかし、仮にそうであったとしても、どのような違いがあるのでしょうか。ArrayCopyは、通常のループよりも高速にデータをシフトするのでしょうか?

 
Vitaly Muzichenko #:

現在、コードは動いていますが、サイクルがあるため、スピードに疑問があります。

どんなものになるのでしょうか?

100msに一度、タイマーで動作し、値の差を描画するインジケータを使用して、裁定取引の可能性をテストしたい。このような状況では、コードの実行遅延は致命的です。

では、どうでしょう。ArrayCopyを試してみてください。この機能は、データをシフトすることができるようです。しかし、通常のループより速くできることはほとんどない。まあ、誰にもわからないけど...。ぜひ試してみてください。

 
Mihail Matkovskij #:

では、どうでしょう。ArrayCopyを試してみてください。この機能は、データをシフトすることができるようです。しかし、通常のループよりも高速に行うことはできそうにない。まあ、誰にもわからないけど...。ぜひ試してみてください。

どこから手をつけていいかわからない