どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 935

 
皆さん、お久しぶりです!今回の質問ですが、配列の要素の インデックスを1単位ずつずらすことは、同様の配列をもう1つ作成し、要素ごとに最初の配列から情報をコピーする(そして戻す)ことなく可能でしょうか?実際、MT4では、時系列の配列で何らかの形で行われています(新しいバーが形成されると、インデックス0がそれに割り当てられ、配列の以前のすべての要素のインデックスが1単位分シフトされます)。
 
FxRoller:
皆さん、おはようございます!今回の質問ですが、このような配列をもう一つ作って、要素ごとに最初の配列から情報をコピー(そして元に戻す)せずに、配列要素のインデックスを1単位ずつずらすことは可能ですか?実際、MT4では、時系列の配列で何らかの形で行われています(新しいバーが形成されると、インデックス0がそれに割り当てられ、配列の以前のすべての要素のインデックスが1単位分シフトされます)。

私は質問に参加します:組み込み関数を使って、配列のN次元をM要素だけ右または左にずらすと便利です。

私の知る限り、今のところ、配列の大きさを 定義してループでシフトする必要があります。ダイナミックに使いにくくなる(+データが消えない)。

 
kosmos0975:

私は質問に参加します:組み込み関数を使って、配列のN次元をM要素だけ右または左にずらすと便利です。

私の知る限り、今のところ、配列の大きさを定義してループでシフトする必要があります。動的な使用はより困難(+データは失われない)。

SetIndexShift()は役に立ちませんか?

チャートの先頭からのインジケータラインの 移動量を設定します。

voidSetIndexShift(
intindex,// 数値)
int shift// shift
);

パラメータ

インデックス

[in] 行の連番。0~7 であること。

シフト

[in] シフト量(小節単位)。

戻り値

いいえ

備考

正の値で線画を右に、負の値で左に移動させる。現在のバーで計算された値が、現在のバーに対して指定されたオフセットで描画される。

 

また、オフセットを指定して配列を自分自身にコピー することもできます。

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

そのため、配列は1要素分のオフセットで自分自身にコピーされます。ゼロは捨てられ、最後は空っぽになる。逆に、最後の要素を捨てるというのは、私は試していませんが、関数の最後の3つのパラメータを正しく設定できるのではないでしょうか。

 
AlexeyVik:

また、オフセットを指定して配列を自分自身にコピーすることもできます。

そのため、配列は1要素分のオフセットで自分自身にコピーされます。ゼロは捨てられ、最後は空っぽになる。逆に最後の要素を捨てるというのは、試したことはありませんが、関数の最後の3つのパラメータは正しく設定できるのではないでしょうか。


試したことはありませんが、インデックスの向きを 変えるのは便利かもしれませんね。

追伸:ストラテジーテスターについて、いくつか質問があります。手伝ってくれる?

 
kosmos0975:

試したことはないが、インデックスの方向が変わると便利かもしれない。

追伸:攻略テスターについて質問があります。手伝ってくれる?

配列自体をコピーした後にインデックス方向を 変更するということでしょうか?必要なのか?この手続きは、単にコピーのためだけでなく、特に配列の値(ゼロまたは最後)を新しいものに置き換えるために必要なので、ゼロのインデックスは空のままか古い値のままですが、最後のインデックスなしでゼロのインデックスからコピーして最初のインデックスからペーストしても問題はないかと思います。そのため、コピー後の「空いた」要素には、新しい値が入る。そして、その中に何が残っていたかは問題ではありません。

テスターで、できることなら-協力します。しかし、ここには提案できる価値ある人がもっといる。

 

制御信号とオープンポジションの制御は、インジケータによって行われます。オープンポジションとクローズポジションのコマンドは、ターミナルのグローバル変数を通じてExpert Advisorに送信されます。

インジケーターの使用は、インジケーターの数が多く、複数の論理ブロックの働きを同時に見ることができるため便利です。

質問です。ストラテジーテスターでは、OrderSelect()関数やOrdersTotal() などと連動するインジケーターが使用できます。

 
AlexeyVik:

配列を自分自身にコピーした後、インデックスの方向を逆にするということでしょうか?それは本当に必要なことなのでしょうか?この手続きは、単にコピーするためだけでなく、特に配列の値(ゼロまたは最後)を新しい値に置き換えるために必要なので、ゼロインデックスからコピーして、最初のインデックスからペーストしても問題はないと思います。そのため、コピー後の「空いた」要素には、新しい値が入る。そして、その中に何が残っていたかは問題ではありません。

テスターで、できることなら - 手伝います。しかし、ここには提案できる価値ある人がもっといる。

コピー前とコピー後。
 
確認していないが、自分で確認することを妨げるものは何か?EA名の下にすべてのインジケータを含むテンプレートを保存しておけば、テスターでEAを起動したときにすべてのインジケータが読み込まれ、おそらく 正しく動作するはずです。しかし、「取引」タブや「アカウント履歴」タブから値を取得する可能性があります。
 
kosmos0975:
コピー前とコピー後。
なぜ、左手の指で右耳を掻くのか?あるいは足...私は、2つ目の選択肢は、必然性がないため、テストしていないと言っただけです。しかし、論理的には何の問題もなく動作するはずです。