保留中の注文を閉じる

私は未決注文を閉じるためにこのコードを書きました。私がEAを運営するとき、注文は閉じられません。

誰かが私に手助けをしてくれる?何が悪いの?

これがコードです(私のプログラムの一部です)。

(cnt = 0; cnt <total; cnt )の場合
{
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderType()<= OP_SELL && //オープンポジションをチェック
OrderSymbol()== Symbol())//シンボルをチェックする
{
if(OrderType()== OP_BUYSTOP)
{
if(OrderOpenPrice()<= Ask-StopLoss * Point)
{
OrderDelete(OrderTicket());
}
(0)を返します。
}


まあ、初心者のために{にマッチするのに十分な}がありません。次に、(OrderType()<= OP_SELL)と(OrderType()== OP_BUYSTOP)をもう一度チェックしているようです。これらは同時に成り立つことはできません。1つ目は注文が満たされたかどうかを確認することです。そして第三に、あなたは0からtotal-1までではなく、total-1から0までcntを減らすべきです。そうでなければ、削除する必要がある保留中の注文が複数ある場合、潜在的なバグがあります。 (その理由については、このフォーラムの他の投稿を参照してください。)


(cnt = total-1; cnt> = 0; cnt–)の場合
{
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderSymbol()== Symbol())//シンボルをチェックする
{
if(OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP)//購入ストップ/リミットを確認する

{
if(OrderOpenPrice()<= Ask-StopLoss * Point)
{
OrderDelete(OrderTicket());
}

}

それ以外の場合(OrderType()== OP_SELLLIMIT || OrderType()== OP_SELLSTOP)//売りストップ/リミットを確認する

{
if(OrderOpenPrice()<= Bid-StopLoss * Point)
{
OrderDelete(OrderTicket());
}

}

}
(0)を返します。
}

これでうまくいくはずです。あなたのEAがそれが置かれた順序を知ることができるようにそこにマジックナンバーを挿入することも良い考えです。

ジョン


現在の価格とトリガーが保留中の注文を削除するためのDropjeの基準の一部にな っている理由完全には明らかではありませんが、「 if(OrderOpenPrice()<= Bid-StopLoss * Point) 」が望んでいることとは思えません売ります。ほぼ間違いなく Stoplossが-Stoplossになるはずです。そしてDropjeは制限ではなくストップを使用しているように思われるので、それはおそらく<= Bidではなく> = Bidによって行われるべきです。


おっと、私はただコピー/貼り付けして素早く編集するだけです。その行を変えるのを忘れてね。

ええjjc、これらの行は実際にも私には意味がありません。 Dropjeは、 保留中の注文が実際に有効化されると売買注文になることを知らないと思います。未決注文のストップロスをチェックしてはいけません、それを削除するだけです。ここに:

< p> 1。未決注文のOrderDelete

2.未決済注文の場合は閉じる

(cnt = total-1; cnt> = 0; cnt–)の場合
{
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderSymbol()== Symbol())//シンボルをチェックする
{
if(OrderType()== OP_BUY || OrderType()== OP_SELL)//未処理注文を確認する

{

//ストップロス/テイクプロフィットをここでチェック
// OrderClose(…);

}

それ以外の場合(OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP)//購入ストップ/リミットを確認する

{
OrderDelete(OrderTicket());

}

それ以外の場合(OrderType()== OP_SELLLIMIT || OrderType()== OP_SELLSTOP)//売りストップ/リミットを確認する

{
OrderDel ete(OrderTicket());

}

}
(0)を返します。
}

ジョン


こんにちは仲間、

これの完全なソースコードをここに投稿することは可能でしょうか?

前もって感謝します、

ミハイル・ミハイロフ


どうして?

CB




3498: https://www.mql5.com/en/forum/119596


Originally posted 2019-08-03 17:30:11.

Translate »