int nCnt = 0; // Счетчик количества своих ордеровfor (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS))
continue;
if (OrderSymbol() != Symbol())
continue;
if (OrderMagicNumber() != <значение ID ордеров эксперта>)
continue;
++nCnt;
}
int nCnt = 0; // Счетчик количества своих ордеровfor (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS))
continue;
if (OrderSymbol() != Symbol())
continue;
if (OrderMagicNumber() != MagicNumber)
continue;
++nCnt;
{
if (nCnt>0)
return;
}
}
Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении. Могут возникнуть вычислительные проблемы при переносе вышеуказанного выражения из одной среды программирования в...
このキャノンは何ですか?公式のドキュメントがあります - それはあなたのものと全く同じです...他のすべてはただの偽物です。
1. OnCalculateの内部で、使用するすべての配列のシリアライズを設定する価値があります。
2.ループに入る前に、buff[length]=Bid+size; -とすると、ほぼ思い通りの結果が得られます。Bid+sizeで曲線とその先にある "バイザー"
3.アレイの境界を見る。もちろん、rates_total < lengthですが、冗談では済まされませんよ :-)
つまり、最初にArraySetAsSeriesと書いて、そこから踊らなければならないのですか?
そうそう、表現が悪かったですね。この線はチャート上で左に進み、各ティックで 更新される必要があります。
詳細なご回答をいただき、誠にありがとうございました
アドバイスに従って枝分かれして、すべてがうまくいきました。
私は10-15個の保留中の注文を同時に開く問題に直面しましたが、その後にあなたのコードを追加することで問題を解決しました。
これも解決策にはならない。注文は手動または他のEAによって開くことができます。その結果、開発中のEAでは何も開くことができません。したがって、Expert Advisor が開いた注文の数をカウントする必要があります。このデータをもとに、注文を出すか出さないかを決める。
きっと、もっといい方法があるはずです。
あなたのコードに関して、1; i >=0; --i とは何か、説明してください。
これが標準的な注文のループです。OrdersTotal() は、注文数です。注文はゼロから始まるインデックスを持つ。つまり、注文が1件あれば、そのインデックスは0になり、OrdersTotal()は1を返します。したがって、ループは注文数より1少ないインデックスで開始する必要があります。OrdersTotal() - 1 を得る。第2オペランドは、ループ本体の実行条件である。この場合、ループは i = -1 で終了する。第3オペランドは、次のインデックスへのループジャンプの実行(1ずつ減少)です。
ループ演算子については、ドキュメントに 記載されています。
これも仕方がないことです。注文は手動または他のEAによって開くことができます。その結果、開発中のEAでは何も開くことができません。したがって、Expert Advisor が開いた注文の数をカウントする必要があります。このデータがあれば、注文を出すかどうかの判断ができる。
この方法で試しましたが、また1シグナルあたり10~15個の注文を開くようになりました。
第3オペランドは、次のインデックスに移動します(1つ減らします)。
すべての注文を端から見ているのですね。
これを試したが、また1シグナルで10~15オーダーを開くようになった。
すべての注文を端から見ているわけですね。
OrderMagicNumber()関数を使用するには、まず注文を選択 する必要があります。自分の注文に関する情報を収集する標準的なループは次のようになる(例えば、自分の注文の数を数える)。
このコードが実行されると、変数 nCnt には Expert Advisor のワークオーダーの数が格納されます。
私は次のように問題を解決しています...
ありがとうございます。
OrderMagicNumber()関数を使用するには、まず注文を選択 する必要があります。自分の注文に関する情報を収集する標準的なサイクルは、次のようになる(例えば、自分の注文数を数える)。
このコードが実行されると、変数 nCnt には EA の作業オーダーの数が格納されます。
ありがとうございました。うまくいった!
また、++nCntは、取得したオーダー数をnCnt変数そのものに代入しているのか、アドバイスをお願いします。
ありがとうございました。うまくいった。
++nCntは、受信した注文数をnCnt変数自体に代入しているのかどうか教えてください。
そのような場合は、すぐに書類を ご覧ください。))
ありがとうございました。うまくいった。
++nCnt は、受信した注文数を nCnt 変数自身に代入しているのか、教えてください。
言語の完全なドキュメントがあります。サイトのトップメニューを見てみてください。
読むのを怠るな!全てを頭に入れるのは不可能だ。 初心者に限らず、ほぼ全員が必ずそこで管理している。
言語に関する完全なドキュメントがありますので、ウェブサイトのトップメニューからご覧ください。
読むのを怠らないでください - すべてを頭に入れておくことはできません - 初心者だけでなく、ほとんどすべての人のために常にそこにあるのです。
ありがとうございます。どのセクションを見ればいいのか、まだあまり得意ではないし、F1エディタがいつも正しい場所に送ってくれるわけでもないので、いつも迷ってしまいます)
くだらない質問で悩まないようにします、よろしくお願いします)
1.最初にArraySetAsSeriesと書いて、そこからということでしょうか?
そうそう、表現が間違っていました。この線はチャート上で左に進み、各ティックで 更新される必要があります。
そこで、水平線を描きます。
なぜ、バッファとその再計算が必要なのですか?ObjectSetDoubke(0,myHLine,OBJPROP_PRICE,concrete_price_value);
ユーザはその行を見ることができ、バッファの再計算に時間を費やすこともなく、誰もがハッピーで幸せな気分になることができます。
追記・正しく理解しましょう。インジケータ・バッファは、最初に行った計算結果を転送(共有/シェア)するためのものです。長さNの水平線を引くと、違うものになる