どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 963

 

はい、atztek さん、説明文が不正確で申し訳ありません。

1.なぜなら、MAと交差する前は、これらは買いストップ注文であり、Ur1 Ur2 Ur3は価格がMAを交差した後にのみ特定されるからです。

2.そしてそれぞれ、すべての買い注文の中から上記のフォーサイクルを検索する(さらに3つの売り停止注文があり、それらはローソク足ごとに異なるMAでクロールするため)。

 
vadimvborisov:


はい、atztek さん、説明文が不正確で申し訳ありません。

1.なぜなら、MAと交差する前は、これらは買いストップ注文であり、Ur1 Ur2 Ur3は価格がMAを交差した後にのみ特定されるからです。

2.そしてそれぞれ、すべての買い注文の中から上記のフォーサイクルを検索する(さらに3つの売り停止注文があり、それらはローソク足ごとに異なるMAでクロールするため)。

1.とおっしゃいましたね。
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

逆指値注文は価格とクロスした瞬間に成行注文となり、MAは関係ありません。
OK、EAをどのように動かすかはあなた次第です。

2.目的は何なのか - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

つまり、"for "の各サイクルに1つのオーダーが表示され、同時に3つのオーダーが表示されることはありません。
 

atztek さん、1.最初の投稿はすでに訂正しました。

2.bool mod_Buy1 の代入 = 注文の変更 (OrderTicket (前の注文から最初の BUY 注文)、始値変更なし、 StopLoss 変更なし、TakeProfit は Ur1,0,clrNONE から取得);

"for "の各ループで、1つの命令は見るが、3つの 命令は同時に見ないということだ。

この3つの注文をチケットごとに調べて、それぞれに適切なTakeprofitレベルを設定する方法がわからないんです(Ur1 Ur2 Ur3)。

 
vadimvborisov:

atztek さん、1.最初の投稿はすでに訂正しました。

2.bool mod_Buy1 の代入 = 注文の変更 (OrderTicket (前の注文から最初の BUY 注文)、始値変更なし、 Stop Loss 変更なし、TakeProfit は Ur1,0,clrNONE から取得);

"for "の各ループで、1つの命令は見るが、3つの 命令は同時に見ないということだ。

この3つの注文をチケットごとに調べて、それぞれに適切なTakeprofitレベルを設定する方法がわからないんです(Ur1 Ur2 Ur3)。


1.私があなたを理解していないか、あなたがやりたいこと(仕組み)を理解していないかのどちらかです。
あなたは訂正した後も、ストップオーダーを持っていて、「MAを超えた後」成行注文になったという話をしています。
- すぐに成行注文を出すか(例えば「MAを超えたら」)、価格がそれを超えた瞬間に自動的に成行注文になる逆指値注文を出すかです。

2.なるほど、これは補正の問題ではなく、御社のEAのロジックの問題なのですね。
(例えば、この時間帯に他の注文を開いていないか、なぜポジションではなくチケットに基づいて注文が選択されるのか、など多くの疑問があります)。
一度に3つの注文で始めるのではなく、1つの注文で簡単な例から始めて、Expert Advisorがエラーなく動作することを確認します。そして、3つのオーダーを加えて複雑化させる。
 

1) その通りです。「逆指値注文を出し、価格がそれを超えた瞬間に自動的に成行注文に なる」のです。"

2) 指値注文が成行注文に変換された時点では、他の(成行)注文はなく、指値注文のみが存在します。もしかしたら、チケットではなくポジションで選択することもできるかもしれませんね〜。では、2つの注文がある場合を考えてみよう。1つは自分で対応できるから......。

 
vadimvborisov:

1) その通りです。「逆指値注文を出し、価格がそれを超えた瞬間に自動的に成行注文に なる」のです。"

2) 指値注文が成行注文に変換された時点では、他の(成行)注文はなく、指値注文のみが存在します。もしかしたら、チケットではなくポジションで選択することもできるかもしれませんね〜。では、2つの注文がある場合を考えてみよう。1つは自分で対応できるから......。

リミットのものはもう入荷したのでしょうか?
よし、やってみよう。それができれば、あとは見えてくる。
 
vadimvborisov:

1) その通りです。「逆指値注文を出し、価格がそれを超えた瞬間に自動的に成行注文に なる」のです。"

2) 指値注文が成行注文に変換された時点では、他の(成行)注文はなく、指値注文のみが存在します。もしかしたら、チケットではなくポジションで選択 することもできるかもしれませんね〜。では、2つの注文がある場合を考えてみよう。1つは自分で対応できるから......。

それこそが、私たちに必要なことなのです。

int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 

1.すみません、ストップオーダーのことです。

2.1枚ではすべてうまくいくのですが、2枚以上になるとわからなくなる...。

 

AlexeyVik さん、こんにちは。

bool mod_Buy1 = 注文の変更 ( オーダーチケット(取得したもののうちi番目のBUY) )

と、他の2つのBUYはどうですか?同じように?

////////////////////////////
 int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy2 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy3 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 
vadimvborisov:

AlexeyVik さん、こんにちは。

bool mod_Buy1 = 注文の変更 ( オーダーチケット(取得したもののうちi番目のBUY))

と、他の2つのBUYはどうですか?同じように?

私の例では、ループに注目してください。ループの中で、すべての注文を種類別にチェックし、シンボルとマジックでもチェックし、注文を不必要に修正しようとせず、エラー1が出ないように、ストップなしの注文かテイクアウト注文か、重要なものによってOrderStopLoss == 0 または OrderTakeProfit == 0をチェックすると良いと思います。

このループでは、注文が次々と選択され、すべての条件を満たした場合、修正に回される。これにより、必要な命令がすべて修正されます。

2つ目の方法:3つの注文しか用意されていない場合、例えばint tick_buy_1, tick_buy_2, tick_buy_3をグローバル変数のレベルで宣言し、注文を開くときにこれらの変数にティックを記録することができます。そして、チケットで注文を選択し、その種類を確認し、注文が終了しているかどうかを確認し、その時だけ、ループを使わずに、注文を行うことができます。

   bool mod_Buy1 = Модифицировать ордер ( tick_buy_1 );
   bool mod_Buy2 = Модифицировать ордер ( tick_buy_2 );
   bool mod_Buy3 = Модифицировать ордер ( tick_buy_3 );