for (int j = 0; j < OrdersTotal(); j ++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol())continue; // Another security //--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose()
に変更しました。
for (int k = 0; k < OrdersTotal(); k ++)
{
OrderSelect(k, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
{
//--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose(....)
for (int j = 0; j < OrdersTotal(); j --)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol()) // Another security
{
//--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose(....)
for (int j = 0; j < OrdersTotal(); j ++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol())continue; // Another security
から、閉じる機構を変更しました。
に変更しました。
に変更したところ、すべてが期待通りに動作するようになりました。しかし、私はその理由を理解していません。なぜなら、2番目のコードに追加された行が本当に理解できないからです。でも、ありがとうございました。
から、閉じる機構を変えています。
に変更しました。
に変更したところ、すべてが期待通りに動作するようになりました。ありがとうございました。
から、閉じる機構を変更しました。
に変更しました。
に変更したところ、すべてが期待通りに動作するようになりました。しかし、私はその理由を理解していません。なぜなら、2番目のコードに追加された行が本当に理解できないからです。でも、ありがとうございます。
あなたの2番目のコードは正しいですが、少しおかしいです。MetaEditorを開き、ナビゲーターウィンドウ(Ctrl + D)、辞書タブ、そしてMQL4 Reference > Standard constants >Trade operationsを 選択してください。
ループの中で未決済の注文を閉じたり、保留中の注文を削除するときは、カウントアップではなく、カウントダウンしなければ なりません。そして、Symbol()にチャックを戻す必要があります ... そうしないと、EURUSDのEAがGBPUSDの注文を閉じる可能性があります ... あなたが必要としたのは、継続を 取り除くことでした ... または== を!= にすることです。
ただ、正しく理解するために。あなたが言っているのは、もし私が最初のコードを修正して
に変更すれば、それも動作するはずだということですか?私はこれを試してみたので、それはちょうど再び通貨ペア ごとに1つの注文を開いている。
あるいは、2番目のコードを(k++からk--)に変更すると、それも1つの通貨ペアに1つの取引しか開きません。
ただ、正しく理解するために。あなたが言っているのは、もし私が最初のコードを修正して
に変更すれば、それも動作するはずだということですか?私はこれを試してみたので、それはちょうど再び通貨ペアごとに1つの注文を開いている。
また、2番目のコードを(k++からk--)に変更しても、1つの通貨ペアに1つの取引しか開きません。
私は最初のコードについて話しています、あなたが使用しているループは、注文を閉じる... ...それはデクリメントする必要があります... ...そうでなければ、注文を見逃すことになります。 私はあなたがcontinueを 削除し、 { } 中括弧を追加したことを参照してください、非常に良い:-)。
通貨 ペアごとに1つの注文を出すのか、それとも全部で1つの注文を出すのか?
1つの通貨ペアで1つの注文を出すのか、それとも合計で1つの注文を出すのか?
はい、もちろん合計でです。さて2つ目のコードです。
ループについて話しているとき、私はあなたがこれを意味すると思います。
実際、私ならこのように変更します。
この行は、1つの通貨 ペアにつき1つの注文しか開きません(希望通り!)。
ループはこの問題に関して正しいですか?
RaptorUK です。
ループの中で未決済の注文を閉じたり、保留中の注文を 削除するときは、 カウントアップではなく、カウントダウンを しなければ なりません。 そして、あなたはSymbol()にチャックを戻す必要があります ... さもなければ、EURUSDのEAはGBPUSDの注文を閉じる可能性があります ... あなたがする必要があったのは、 continueを 取り除くこと でした .. .... または == を!= にすることです。ええ、もちろんトータルで。さて、2つ目のコードです。
ループについて話しているとき、私はあなたがこれを意味すると思います。
実際、私ならこのように変更します。
この行は、通貨ペアごとに1つの注文しか開きません(希望通り!)。
この問題に関して、ループは正しいですか?
いいえ、こうしてください ... ...
最初の注文の位置は0なので、5つの 注文がある場合、位置は0、1、2、3、4 ... だから最後はOrdersTotal() - 1 ... だからカウントダウンするには、OrdersTotal()-1から始めて0を終了させる。
いいえ、こうしてください ... ...
最初の注文の位置は 0 で、5 つの 注文がある場合の位置は 0、1、2、3、4 ... で、最後の位置は OrdersTotal() - 1 ... なので、カウントダウンするには OrdersTotal()-1 から始めて 0 で終了します。
ということで、このようになるはずです。
というのは、あなたがこう書いたからです。
それとも、私が間違っているのでしょうか?
だから、こんな感じになるはずです。
というのは、あなたがこれを書いたからです。
ということになるのですが、間違っていますか?