Strategi Trading: Menggunakan EA untuk Posisi Berlawanan di MetaTrader 5

Mike 2017.11.03 21:25 10 0 0
Lampiran

Pernahkah kamu mendengar tentang strategi Opposite Trade? Ini adalah teknik yang bisa sangat berguna untuk trader yang menggunakan MetaTrader 5. Konsepnya sederhana: kita membuka posisi yang berlawanan dari posisi yang baru saja ditutup, dengan volume yang sama. Teknik ini bisa diterapkan pada simbol apa pun dan dengan nomor magic apa pun.

Misalnya, jika kita memiliki posisi BUY AUDUSD dengan volume 0.01 dan kita menutup posisi tersebut (misalnya dengan menutupnya secara manual), Expert Advisor Opposite Trade akan secara otomatis membuka posisi baru AUDUSD, kali ini dengan jenis SELL.

Kode untuk Fungsi OnTradeTransaction

Seluruh kode untuk strategi ini terdapat dalam fungsi OnTradeTransaction:

//+------------------------------------------------------------------+
//| Fungsi TradeTransaction                                          |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- ambil tipe transaksi sebagai nilai enumerasi 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- jika transaksi adalah hasil dari penambahan transaksi dalam riwayat
   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;
           }
        }
     }
  }

Di sini, kita menunggu transaksi penutupan posisi (DEAL_ENTRY_OUT). Begitu transaksi ini muncul, kita akan memeriksa posisi transaksi (jika kita menutup posisi BUY, maka ini akan menjadi transaksi SELL, dan sebaliknya) dan kita akan membuka posisi baru.

Daftar
Komentar 0