int deinit() // Спец. функция deinit()
{
int Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовfor(int k=Quant_Objects; k>=0; k--) // По количеству объектов
{
string Obj_Name=ObjectName(k); // Запрашиваем имя объектаstring Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 симif (Head==Prefix) // Если найден объект, …
{ // ... начинающийся с Paint_,ObjectDelete(Obj_Name); // … то его и удаляем
} //конец if
} //конец forreturn; // Выход из deinit()
} //конец deinit//-------------------------------------------------------------- 10 --
double x = ... // Задаем на сколько пипсов вышеdouble sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
こんにちは。マジック買いオープンポジションを計算するブロックを作りましたが、問題は、ブロックが異なる通貨ペアで動作する場合、ブロックは1つの通貨ペア(最後のオープンポジション)の結果を生成するだけであることです。ブロックが各通貨ペアの結果を与えるように、(魔法を変えずに)コードを修正するにはどうしたらよいですか?
...続き...
StringSubstr 関数のサブセクションの最後に、次のような文言が括弧で囲まれています。「別に注意しなければならないのは、最初のforループ (私の注:他にオブジェクトを削除する方法がないのでdeinit()でなければならない)では、オブジェクトを削除できない ことだ。しかし、引用したEAでは、2つ目のfor ループが全くありません。また、for ループ の前のdeinit() 関数で定義された変数 Quant_Del は 0 で初期化され、変数i はfor ループの前のどこにも定義されていない。
上記のコードは、いくつかのプログラム行を些細に省略しているだけであることが判明した。
本当に数行の些細な省略だったのか、それとも外部の助けがないと初心者が意味を理解できないほどトリッキーなプログラムなのか、1つ目の質問 です。
さらに...同じ章の同じセクションの引用文の前に、同じExpert Advisor(添付ファイル)へのリンクがあり、クリックするとMetaElitorで同じExpert Advisorが開かれるようになっています。しかし、このExpert Advisorのテキストは異なって おり、deinit()関数は次のようになります。
では、もし 「コンバイン 言習わし"別に、最初のforループでオブジェクトを削除できないことに注意してください。この場合、削除のたびにオブジェクトの総数とその番号が変わり、一部のオブジェクト名がスキップ されるからです "とテキスト 最後のバリアントのdeinit()関数について、2つ目の質問があります。
質問 です。 ObjectDelete(Obj_Name)関数をif 文の中に配置し、最初のfor ループでオブジェクトを削除できないのはなぜですか?
なぜ削除のたびに「...オブジェクトの総数が変化 する」...?この場合、オブジェクトの総数を決定するQuant_Objects 変数が ObjectsTotal() と等しい値を取得するため、for ループをFORWARD するのですか?
P.S. フォーラムを散らかさないためにも、回答をよろしくお願いします。
ループを逆拡大して、できる限り削除する
ちゃんと理解できたかな?deinit関数(特にループ)は、次のように考えるのがよいでしょう。
このデータは、買い注文と売り注文の差を計算するために必要です。
例えば、数量0.09の買い注文が1つ、数量0.11の売り注文が2つ出たとすると、その差は0.09-0.11=-0.02、可能ならその差の1.0倍となります。
では、関数OrderLots.
こんにちは。マジック買いオープンポジションを計算するブロックを作りましたが、問題は、ブロックが異なる通貨ペアで動作する場合、ブロックは1つの通貨ペア(最後のオープンポジション)の結果を生成するだけであることです。ブロックがすべての通貨ペアで計算されるように、(マジックを変更せずに)コードを修正するにはどうすればよいですか?
変更する。
へ。
EAのピップ単位のストップロスを、最後のローソク足より上のストップロスに置き換えるにはどうしたらいいですか?
Reshetov:спасибо
извиняюсь за то что не в SRC
入れ方
ちゃんと理解できたかな?deinit関数(特にループ)は、次のように考えるのがよいでしょう。
この場合、例えば18のオブジェクトを削除すると、19がその場所になり、19=>18、つまり1つの逆反復が自動的に得られます。ご注文の際にもご利用ください。
また、オブジェクトと オーダーのリストは形式的に=0から始まる配列なので、最大インデックスは配列のサイズより1つ小さくなります。