MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1577

 
Mihail Matkovskij:

OnTradeTransactionは、サーバー上の任意のストップオーダーがトリガーされたときにトリガーされます。

しかし、その機能は規定されていなければならないのですか?
 
Eugen8519:
スルーはどうですか?

deal_reason_sl
DEAL_REASON_TP

ノー

ドキュメントにOnTradeTransactionの 非常に良い例があります。

 
MakarFX:
しかし、その機能は規定されていなければならないのですか?

専用に 機能を追加していただければ、便利だと思います。なぜダメなのか...?

しかし、サーバーがそれを行い、OnTradeTransactionに 信号を送信するので、その中でストップクロスを追跡する必要はありません。

 
Mihail Matkovskij:

専用に 機能を追加していただければ、便利だと思います。なぜダメなのか...?

しかし、その中でストップの交差をトレースする必要はありません。なぜなら、それはサーバーによって行われ、OnTradeTransactionに シグナルが送られるからです。

ミーシャ、私はmql5があまり得意ではなく、まだ最初の方です。

というようなことをまず書くべきだと思うのですが、いかがでしょうか。

if(OnTradeTransaction(...)==....)  SendNotification ("текст");

間違っていたら、訂正していただけると幸いです

 
MakarFX:

ミーシャ、私はmql5が苦手で、まだ始めたばかりなんです。

というようなことをまず書くべきだと思うのですが...。

間違っていたら、訂正していただけるとうれしいです。

OnTradeTransactionはそのようなイベントハンドラ です。したがって、すべての処理コードがその中にあるはずです。必要であれば処理関数を呼び出すこともできます。リンク先のドキュメントにある説明をご覧ください。
 
Mihail Matkovskij:
OnTradeTransactionはそのようなイベントハンドラ です。したがって、すべての処理コードがその中にあるはず です。必要なら加工機能も。リンク先のドキュメントに記載されている説明をご覧ください。

同じことを言ってるのか?

if(OnTradeTransaction(...)==....)  SendNotification ("текст");
 
mql4で見つけたと思うのですが、いかがでしょうか?
void AlertOrder()

{

   string txt;

   double OCP;

   int i=OrdersHistoryTotal()-1;

   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

   {                                

      OCP=OrderClosePrice();

      if (OCP==OrderStopLoss()) txt="SL";

      if (OCP==OrderTakeProfit()) txt="TP";

      }

      SendNotification(Symbol() + " hit "+txt+"");

 }
 
Eugen8519:
mql4で見つけたものですが、こんなのはどうでしょう?
OrdersHistoryTotal

mql5ではありません

 
MakarFX:

同じことを言ってるのか?

いいえ、条件(if)の中でハンドラを呼び出すことになります。でも、どこにもかけなくていいんです。OnTradeTransactionに 処理コードを書くだけで、それだけでOKです。ストップがトリガーされたときにOnTradeTransaction に渡されるパラメータを見ます。

イベントやイベントハンドラとは何か、MQLにどんなイベントがあるのかを知っておく必要がありますが。そうすれば、すべてが理解できるようになります。

イベントハンドラとは 何かについては、こちら(https://www.mql5.com/ru/docs/basis/function/events#ontradetransaction)をご覧ください。

混乱を避けるため、単にイベントハンドラと 呼ばれることが多い。例えば、OnTradeTransaction if で呼び出される普通の関数と 混同しているように。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Eugen8519:
mql4で見つけたものですが、こんなのはどうでしょう?

これを試してみてください(テストはしていません)

datetime lastclouse; 
int OnInit()
  {
   lastclouse=TimeCurrent();
   .....
  }
void OnTick()
  {
   if(LastClouseProfit()!=EMPTY_VALUE) SendNotification (LastClouseProfit());
   .....   
  }  
double LastClouseProfit()
  {
   ulong ticket=0;
   double profit=EMPTY_VALUE;
   HistorySelect(lastclouse,TimeCurrent());
   ticket=HistoryDealGetTicket();
   profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
   if(profit!=EMPTY_VALUE) lastclouse=TimeCurrent();
   return(profit);
  }