一部のブローカーで[tp]タグが削除された?

 

注文がTakeProfitやStopLossで閉じられたかどうかを知るためにコメントを使用しています...MIG BANK(リアル口座)では、注文の中の「[tp]」や「[sl]」のタグが削除されていることに気づきました。私のEAはデモ口座では動いていますが、リアル口座ではタグが削除されているので動きません。TakeProfitの価格と終値の比較を考えているのですが、終値でスリップした場合など、正確性に欠ける可能性があります。何かいい方法はないでしょうか?

 
新しいルールのため、ordersend()の後にordermodify()でTPとSLを設定するために注文を修正する必要があるブローカーの一つではないでしょうか?
 
NablaQuant:

私はこのコメントを使って、注文がTakeProfitやStopLossで閉じられたかどうかを知ることができるのですが・・。ミグバンク(リアル口座)では、注文の中の「[tp]」や「[sl]」のタグが削除されていることに気づきました。私のEAはデモ口座では動いていますが、リアル口座ではタグが削除されているので動きません...。TakeProfitの価格と終値の比較を考えているのですが、終値でスリップした場合など、正確性に欠ける可能性があります。何かいい方法はないでしょうか?


tp]'、'[sl]'のコメントは、ブローカー固有のものです。あるブローカーにはあり、ないブローカーにはない。

注文の終値が始値より上か下か、また注文の 種類を確認することができます。

 
Matutin:
新しいルールのために、ordersend() の後に ordermodify() で TP と SL を設定するために注文を修正する必要があるブローカーの一つではないでしょうか?

これは、BTブリッジ(準「ECN」ブローカー)を使用しているためで、新しいルールのためではありません。

 
Matutin:
新しいルールのために、OrderSend()の後にOrderModify()でTPとSLを設定するために注文を修正する必要があるブローカーの一つではないでしょうか?

いいえ、MIGはOrderSend()の中でSLとTPを設定することを許可しています。


CB

 
gordon:

tp]'、'[sl]'のコメントは、ブローカー固有のものです。あるものは持っているし、ないものもある。

注文の終値が始値より上か下か、また注文の種類を確認することができます。

これは、OrderProfit関数と同じですが、私が必要とするものではありません。TakeProfitによる注文は、プラスでもマイナスでも閉じることができる(後でTakeProfitを変更する場合)。


私が必要とするのは、注文がTakeProfitまたはStopLossによって閉じられたかどうかを知ることであり、このコメントがなければそれは不可能だと思います。


私は、クローズ価格と 最初のTakeProfit価格を比較することができましたが、それはスリップのために不正確である可能性があります?


ご回答ありがとうございました。

 
NablaQuant:

TakeProfitがプラスでもマイナスでも注文を閉じることができます(後でTakeProfitを変更する場合)。

良い点です。


終値と最初のTakeProfitの価格を比較することができますが、スリップアゲのために不正確である可能性があります?

MathAbs(closeprice - tp) > MathAbs(closeprice - sl)ならチェック できます。

 
それは可能です。EA がクローズした注文に関する情報を持続させる - 「範囲内」にあるが EA がクローズしていない注文を Order History プールで継続的にチェックする - ブローカーが SL または TP を起動したかどうかを判断するために利益の兆候をチェック する 以下のことを行うロジックを構築する必要があるでしょう。 CB
 
それしかないようです...ありがとうございます
 
NablaQuant:
それしかないようです...ありがとうございます

役に立つかどうかわからないが、CBが提案していることに加えて、ブローカーが重要なものを上書きしないように、注文コメントを スペースで右詰めしている。フェイルセーフではありませんが、外部データファイルが紛失した場合の追加保護として、私はこれを気に入っています。

 

うーん...。何か見落としているのかもしれませんが、下記だけでは不十分なケースはありますか?


   // select the closed order first and then do this:
   
   double sl_diff = MathAbs(OrderClosePrice() - OrderTakeProfit()),
          tp_diff = MathAbs(OrderClosePrice() - OrderStopLoss());
   
   if ( sl_diff > tp_diff )
      Print("order closed at tp");
   else
      Print("order closed at sl");

   // I assume here that an equality of sl_diff and tp_diff is impossible...?
理由: