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

 
 while (Count < FindPeak)
   {
// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка
 
Novaja:

もう一つ、あなたと似たようなバリエーションがあります・・・forループのタイトルにi++とあるので、下の中括弧を削除してみました。中括弧を削除したのは、ループ内の演算子が1つしかないためです(if else)

 while (Count < FindPeak)
 {
    double ZZCur;
    for(i=0,ZZCur=0; ZZCur==0 && i<Bars; i++)
       if      (iCustom(NULL, 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(NULL, 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);

    if (ZZCur == 0) return(False);   // Если ни один из экстремумов не определен, то это ошибка
.......
}
 
STARIJ:

これはあなたと似た別のバリエーションです...forループのヘッダーにはi++と書かれているので、一番下でそれらを削除しました。ループ内の演算子が1つしかないため、中括弧を削除(if else)


代替案を本当にありがとうございます。すべて貯金箱の中です。私もそうでした。ただ、フクロウはトレードをしたがらないので、探し続けます。

 

こんにちは!注文の開始価格の 配列があります。この注文のインデックスがわかっている場合、その種類はどのように判断すればよいのでしょうか?

if(index_elementa_masiva=OP_BUY)???
 
vikzip:

こんにちは!注文の開始価格の 配列があります。このオーダーのインデックスを知ることで、どのようにそのタイプを決定することができるのでしょうか?

この種のタスクでは、始値の配列を持つことはあまり好ましくない。なぜなら、同じ始値の注文が複数存在する可能性があるからである。

しかし、一般的には、既知のオープン価格を取得し、すべての注文をループして、オープン価格が既知のインデックスの配列のものと等しいものを選択する必要があります。

そして、そのようなオーダーが複数ある場合は、他の条件、例えば時間などで比較し、必要なオーダーであることを理解する必要があるのです。

そして、注文がひとつしかなければ、他の基準でさらに選択することなく、その注文が正しいということになるのです。

 
Artyom Trishkin:

このタスクでは、同じ建値の注文が複数存在する可能性があるため、建値の配列を持つことは望ましくありません。

しかし、一般的には、既知のオープンプライスを取り、すべての注文をループして、オープンプライスが配列内のものと等しいものを、既知のインデックスで選択する必要があります。

そして、複数の順番がある場合は、他の基準、例えば時間などで比較し、この順番が正しいということを理解する必要があります。

そして、もし1つしかないのであれば、他の基準でさらに選択することなく、それが正しいのです。


ありがとうございました。

 
注文の種類が 同じであれば、という条件の書き方を教えてください。
 bool TYP_A=OrderType;
 bool TYP_B=OrderType;
 if (TYP_A=TYP_B)????
double PriceBlizkoA;                          // Цена выбранного ордера
         bool TYP_A; 
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:  
        if (OrderOpenPrice=PriceBlizkoA);                                     //если цена ордера равна цене заданого   и вот здесь ошибка. Догадываюсь неверно записано условие. Подскажите, что исправить?
         TYP_A=OrderType;   
 
vikzip:
注文の種類が 同じであれば、というような条件の書き方を教えていただけませんか?
比較演算子とは何か、代入演算子とは何か、そしてそれらがどのように書かれているかを読みます。
 
vikzip:
注文の種類が 同じであれば、というような条件の書き方を教えていただけませんか?

これと同じことです。

bool TYP_A=OrderType;
bool TYP_B=OrderType;

bool TYP_A=0; // Buy
bool TYP_B=1; // Sell

その結果、次のようになります。

if(TYP_A) // false
if(TYP_B) // true
アルティオムのアドバイスを読んでください。
 

皆さん、ごきげんよう。

ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。

彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。

これで、指標の 条件が満たされれば、取引を開始することが判明しました。

テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここではもう必要なく、問題が生じています。

フィードバックすることが重要だと感じています。

1キャンドル-1ディールというように、厳密なものが必要です。

ありがとうございました。