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

逆ポジションを自動で開く!MetaTrader 5用のEA解説

添付ファイル
18904.zip (1.11 KB, ダウンロード 0回)

皆さん、こんにちは!今日はMetaTrader 5で使える「逆ポジション」を自動的に開くエキスパートアドバイザー(EA)についてお話しします。これを使えば、ポジションを閉じた際に自動で逆の取引が行われるのでとても便利です。

例えば、AUDUSDで0.01ロットの買いポジションを持っているとします。このポジションを手動で閉じると、逆ポジションのEAがすぐに新たなAUDUSDの売りポジションを開いてくれます。

コードの概要

このEAの全てのコードは、OnTradeTransaction関数の中に収められています。

//+------------------------------------------------------------------+
//| TradeTransaction 関数                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 取引タイプを取得
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- 取引が履歴に追加された結果である場合
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_type         =-1;
      long     deal_entry        =-1;
      double   deal_volume       =0.0;
      string   deal_symbol       ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
        }
      else
         return;
      if(deal_entry==DEAL_ENTRY_OUT)
        {
         switch((int)deal_type)
           {
            case  DEAL_TYPE_BUY:
               m_trade.Buy(deal_volume,deal_symbol);
               break;
            case  DEAL_TYPE_SELL:
               m_trade.Sell(deal_volume,deal_symbol);
               break;
            default:
               break;
           }
        }
     }
  }

このコードでは、ポジションが閉じる取引(DEAL_ENTRY_OUT)を待ちます。取引が確認できたら、取引のタイプをチェックし(例えば、BUYを閉じた場合はSELLの取引が行われます)、新たにポジションを開きます。

関連記事

コメント (0)