[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 545

 
Lonely_man:

こんにちは。アドバイスお願いします。タスクは、1分ごとに縦線を引くことです。分足だけでなく、分足の始値にも描画を連動させる方法。難点は、分足の始値を標準時間以外、つまり1分足以外で特定する必要があることです。私はコードスニペットを書きましたが、誘導変数が非標準の時間に設定される場合、私は分の開始価格を入力する方法を理解していない

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Buffer_0[i]=0とする。

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max;

...そして、オブジェクトを使った標準的な描画です。

どなたか、何かできるとしたら、教えてください。

縦線は 価格という座標を持ちません。
 
paladin80:
一方、フラグ(trueまたはfalse)のように、少なくとも2つの値を受け入れることができる条件を設定する必要があります。条件ではなく、定数(true)であれば、whileは必要ありません。while (true)とブラケットを削除しても、同じ結果になります。


while文を削除した場合、continue文はどのように動作するのでしょうか?

やはり、エラーになった場合は、条件を再確認して注文を出す必要があります。

 if (Fun_Error(GetLastError())==1)      // Обработка ошибок
 continue;                              // Повторная попытка
 return;                                // Выход из start()

continue 文は、最も近い外部while 文またはfor 文の先頭に制御を移し、次の繰り返しを開始させる。

もしかしたら、私が何か理解していないのかもしれません。

 

こんにちは。

私は、すでに形成されたペナルティバー[番号1]で保留中の注文を 開くように形成された取引戦略を持っています。つまり、ポジション(buystopとsellstopの保留注文)を開き、価格が1本目のバー(始値)の価格範囲の最大/最小を超えて20pips移動した場合にトリガーされます。

また、トリガーされていない保留中の注文は、以下に基づき自動的に削除されます。1という新しいバーが形成された場合、保留中の注文の建値は、新しい現在のバー1 +/- 20 pipsの最大/最大値と一致しません(隣接する2つのバーの高値/最小値が一致することはほとんどないので、おそらく一致します)。

しかし、何らかの理由で、最初に両方のポジションをオープンし、数秒後にどちらかをクローズします(1番の下の新しいバーはまだ形成されていませんが)。

専門家の皆さん、私は初心者なので、もしかしたら微妙に考慮できていないかもしれません。どこがエラーになる可能性があるか教えてください。

 RefreshRates();
for(int n=1;n<=OrdersTotal();n++)            //цикл перебора всех имеющихся ордеров
{
  if(OrderSelect(n-1,SELECT_BY_POS)==true)   //если найден ордер, то...
  {
    if((OrderType()==4)&& (OrderOpenPrice()!= High[1]+20*Point))                      // проверяем его тип (buystop/sellstop), если его тип buystop и цена покупки не совпадает с максимумом текущего 1-го бара, то..
      {
          OrderDelete(OrderTicket());                                                  // удаляем его
         
       }
    if((OrderType()==5) && (OrderOpenPrice()!= Low[1]-20*Point))                       // если его тип sellstop и цена продажи не совпадает с минимумом текущего 1-го бара, то ...
    {      
           
            OrderDelete(OrderTicket());                                                //удаляем его
         
    }
  }
}
ファイル:
 

分数を比較する場合、有効数字に正規化する必要があります。

注文を削除するときは、最初からではなく、最後からカウントダウンしてください。

 
...その通りです。また、新しいバーが できるまで、専門家が仕事をすることを禁止しています。
 
Pacman:


while文を削除した場合、continue文はどのように動作するのでしょうか?

やはり、エラーになった場合は、条件を再確認して注文を出す必要があります。

continue 文は、最も近い外部while 文またはfor 文の先頭に制御を移し、次の繰り返しを開始させる。

もしかして、私が何か理解していないのでは?

while(true)文は、反復回数やループ終了条件が不明な場合によく使われますので、ご安心ください。

そのため、例えば与えられたループで囲まれた多くの条件が満たされたとき、break演算子によってその終了が行われる。

あるいは、カチカチと音を立てて動くのではなく、start関数ではなく、while(true) 演算子を使って連続的にループするフクロウ(例えばmcllts)もある。

 
Equilibrium:
こんにちは、良い一日、私を助けてください、私はエキスパートアドバイザーをデバッグすることができません(オープニングとクローズ注文が期待どおりに動作しません(毎回ストキャスティックを交差させることによって)、ストキャスティックで開くことは非常にまれで、私はなぜ(()、またすべての注文はストップロまたはテイクプロフィット(チケット番号エラー、またどこにエラーがあるかを理解できない)で閉じています。すべての答えに感謝:

Ticketのエラーは、Ticket変数が最初と関数内で2回初期化されていることが原因である可能性が高いです。

せめてTicket1だけでも、関数内の別の名前を試してみてください:)

 
各バーでトレンド ラインの価格を調べる方法を教えてください。
 
sss2019:
それぞれのバーでトレンドラインの価格を調べる方法を教えてください。

ObjectGetValueByShift()を使用します。
 
Equilibrium:
エキスパートアドバイザーがうまく調整 できません。


グローバルに宣言された変数は、もうそれ自身の関数に渡す必要はなく、TicketとAns変数を使うだけで、関数内で可視化されます。

コメントでM_1とS_1は最初のバーと書いていますが、iStochastic()関数では、ゼロバーでそれらの値を抽出していますね。どうしてもゼロバーのデータが必要な場合は、まず引け値の注文を確認し、1つの注文で作業する場合は、条件によって終了します。if(Total > 0) return; そして、その時だけ新しい注文を開くための条件。もし、大きなTFを扱う予定であれば、終了条件を次のように置き換えるのが良いでしょう:現在のバーで注文が開かれた場合、現在のバーではまだ何も新しいものは開かれていません。そうでなければ、H4では、1つのバーで何度も注文が開き、1つの条件でストップロスが発生する可能性があります。

今現在、何が起こっているかというと、メインバーがシグナル1をクロスした、例えば上向きになったら、買い注文が開かれる。次のティックでは、条件は保存されていますが、Totalが0より多く、クローズ条件が発動しようとし、Close_Order_S()関数を使って、Ask価格で買いポジションをクローズしようとします。注文の種類をチェックし、注文の種類に応じてAskまたはBidをパラメータに渡して閉じる関数を1つ作成します。