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()); //удаляем его
}
}
}
こんにちは。アドバイスお願いします。タスクは、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;
...そして、オブジェクトを使った標準的な描画です。
どなたか、何かできるとしたら、教えてください。
一方、フラグ(trueまたはfalse)のように、少なくとも2つの値を受け入れることができる条件を設定する必要があります。条件ではなく、定数(true)であれば、whileは必要ありません。while (true)とブラケットを削除しても、同じ結果になります。
while文を削除した場合、continue文はどのように動作するのでしょうか?
やはり、エラーになった場合は、条件を再確認して注文を出す必要があります。
continue 文は、最も近い外部while 文またはfor 文の先頭に制御を移し、次の繰り返しを開始させる。
もしかしたら、私が何か理解していないのかもしれません。
こんにちは。
私は、すでに形成されたペナルティバー[番号1]で保留中の注文を 開くように形成された取引戦略を持っています。つまり、ポジション(buystopとsellstopの保留注文)を開き、価格が1本目のバー(始値)の価格範囲の最大/最小を超えて20pips移動した場合にトリガーされます。
また、トリガーされていない保留中の注文は、以下に基づき自動的に削除されます。1という新しいバーが形成された場合、保留中の注文の建値は、新しい現在のバー1 +/- 20 pipsの最大/最大値と一致しません(隣接する2つのバーの高値/最小値が一致することはほとんどないので、おそらく一致します)。
しかし、何らかの理由で、最初に両方のポジションをオープンし、数秒後にどちらかをクローズします(1番の下の新しいバーはまだ形成されていませんが)。
専門家の皆さん、私は初心者なので、もしかしたら微妙に考慮できていないかもしれません。どこがエラーになる可能性があるか教えてください。
分数を比較する場合、有効数字に正規化する必要があります。
注文を削除するときは、最初からではなく、最後からカウントダウンしてください。
while文を削除した場合、continue文はどのように動作するのでしょうか?
やはり、エラーになった場合は、条件を再確認して注文を出す必要があります。
continue 文は、最も近い外部while 文またはfor 文の先頭に制御を移し、次の繰り返しを開始させる。
もしかして、私が何か理解していないのでは?
while(true)文は、反復回数やループ終了条件が不明な場合によく使われますので、ご安心ください。
そのため、例えば与えられたループで囲まれた多くの条件が満たされたとき、break演算子によってその終了が行われる。
あるいは、カチカチと音を立てて動くのではなく、start関数ではなく、while(true) 演算子を使って連続的にループするフクロウ(例えばmcllts)もある。
こんにちは、良い一日、私を助けてください、私はエキスパートアドバイザーをデバッグすることができません(オープニングとクローズ注文が期待どおりに動作しません(毎回ストキャスティックを交差させることによって)、ストキャスティックで開くことは非常にまれで、私はなぜ(()、またすべての注文はストップロまたはテイクプロフィット(チケット番号エラー、またどこにエラーがあるかを理解できない)で閉じています。すべての答えに感謝:
Ticketのエラーは、Ticket変数が最初と関数内で2回初期化されていることが原因である可能性が高いです。
せめてTicket1だけでも、関数内の別の名前を試してみてください:)
それぞれのバーでトレンドラインの価格を調べる方法を教えてください。
ObjectGetValueByShift()を使用します。
エキスパートアドバイザーがうまく調整 できません。
グローバルに宣言された変数は、もうそれ自身の関数に渡す必要はなく、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つ作成します。