OnTradeTransaction - ページ 6

 
prostotrader:

何も覚えていないかもしれない

これならいけると思う(満注の場合)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

しかし、話は少し広がっている ようです。
 
Andrey Dik:

随分と不用心ですね、私はトピックスターターでは ありませんよ。

こんなコードも見せてください。

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

それが嫌なら、Joba!そうなんですか?

あなたの質問に答えるために十分な時間を費やしました。

もし、あなたの質問がそれほど「抽象的」でなければ、おそらく答えはもっと具体的なものになったでしょう。

名付けて。

1.FORTSまたはFOREX

2.ネット型、ヘドバン型など、どのようなタイプをお使いですか?

3.ポジションのライフタイム 中に他のオーダーが使用されているかどうか。

質問と回答は同じです。

 
fxsaber:
これならいけると思う(フルフィルの場合)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

しかし、話は少し広がっている ようです。

ST/TPにボリュームが設定できるのは記憶にない。

そうでない場合(今確認します)、ポジションはFULLまたはSLまたはTPを閉じます。

 
prostotrader:

そうでなくてもST/TPの音量設定を待った覚えはないのですが。

の場合、ポジションはFULLまたはSLまたはTPで終了します。

流動性が十分でないだけかもしれません。
 
fxsaber:
流動性だけでは足りないかもしれません。
そう、そしてブローカーは電源を切るかもしれない :)...。
 
prostotrader:
そう、そしてブローカーは電源を切ることができるのです :)...。
低流動性の楽器を取って、それでおしまい。
 
fxsaber:
低流動性の楽器を取って、それでおしまい。

そのため、保留注文の 利用を推奨しました

によって追加されました。

市場や楽器に大きく左右される...。

 
<br/ translate="no">。

OnTradeTransaction イベントでどの注文に対応したかを正確に識別するために、最初の注文イベント以外のイベントにはチケットで署名しています。

最初のイベントは、チケットとrequest_idの両方で署名されています。request_id は、注文が送信された直後に、OrderSendAsinc 関数からユーザが取得する。このように、特定のOrderSendAsincの繰り返しとOnTradeTransactionで得られた結果が連動しているのです。

OrderSendAsync のチケットは存在しないかもしれませんし、毎秒 100 枚のオーダーを発射しているのであれば、存在しない可能性が高いです (せいぜい 10008 のレ コードです。)。

 
dmipec:

OrderSendAsyncのチケットはあってもなくてもよく、1秒間に数千個(せいぜいretcode10008とか)のオーダーが発射されるならない可能性が高いです。

まあ、10個どころか、標準的なログインで1秒間に30個くらいですけどね。

正しく書かれていれば、注文(複数可)は必ずあります。

 
Vasiliy Sokolov:

事象を分析するのではなく、取引環境を分析 し、取引環境が変化した場合にのみ、必要な判断を下すべきである。OnTransactionは非常に限られたケースでしか使用できないので、通常、仕事では使用しないほうがよいでしょう。MetaTrader 4にはOnTransactionがなく、誰もがそれなしでやっています。

私もそう思います。しかし、残念ながらMT5では、MT4と異なり、取引環境が現実に対応していない場合があります。例えば、保留中の注文が数ミリ秒間実行されたとき、その注文がどこにも見当たらないことがあります。また、OnTradeTransactionでも ここでは役に立ちません。