ホーム システムトレード 投稿

MetaTrader 5での最後のクローズトレードを確認する方法

添付ファイル
49374.zip (825 bytes, ダウンロード 0回)

今回は、MetaTrader 5で最後にクローズしたトレードのデータをループを使わずに取得する方法をご紹介します。

  • まず、現在の日の開始時間を設定する変数を作成します。(これは必須ではありません。)
  • チャート出力用の他の変数を作成し、他のコードブロックでも使用できるようにします。(これも必須ではありません。)
  • このコードをOnTick();関数内で使用すると、毎回のティックで結果が表示されます。また、バーごとに設定することも可能です。
// 変数の定義
string DayStart = "00:00"; // 日の開始時間
double LastClosed_Profit; // 最後のクローズしたトレードの利益
string TradeSymbol, TradeType;


// エキスパートの初期化--------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

// エキスパートの非初期化-------------------
void OnDeinit(const int reason)
  {

  }

// エキスパートのOnTick--------------------------
void OnTick()
  {
// 最後のクローズしたトレードをチェック。
   CheckLastClosed();

  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void CheckLastClosed()
  {
   datetime HistoryTime = StringToTime(DayStart);

// "日の始まりから現在までの履歴を取得
   if(HistorySelect(HistoryTime,TimeCurrent()))
     {
      int Total = HistoryDealsTotal();

      // 最後の取引チケット番号を取得し、選択します。
      ulong Ticket = HistoryDealGetTicket(Total -1);

      // 必要な情報を取得します。
      LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);
      TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);

      // 売りトレードを特定します。
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)
        {
         TradeType = "売りトレード";
        }

      // 買いトレードを特定します
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)
        {
         TradeType = "買いトレード";
        }

      // チャート出力。
      Comment("\n","取引総数 - :  ", Total,
              "\n","最後の取引チケット - :  ", Ticket,
              "\n", "最後のクローズ利益 -:  ", LastClosed_Profit,
              "\n", "最後の取引は -:  ", TradeType);

     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

全トレード履歴(アカウントの最初から)を取得するには、HistorySelect();関数を以下のように使います。

// 全履歴を取得
HistorySelect(0,TimeCurrent());


関連記事

コメント (0)