Home Systeemhandel Bericht

Tegenovergestelde Handelsstrategie voor MetaTrader 5

Bijlage
18904.zip (1.11 KB, Downloaden 2 keer)

Bij het openen van een positie die tegenovergesteld is aan de gesloten positie, met hetzelfde volume, krijg je een interessante handelsstrategie die voor elk symbool en elke magic number kan worden toegepast.

Stel je voor, je hebt een open AUDUSD BUY 0.01 positie. Zodra deze positie wordt gesloten (bijvoorbeeld handmatig), zal de tegenovergestelde handels Expert Advisor onmiddellijk een nieuwe AUDUSD positie openen, maar dit keer als een SELL positie.

De volledige code is te vinden in de functie OnTradeTransaction:

//+------------------------------------------------------------------+
//| TradeTransaction functie                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- krijg het transactie type als enumeratie waarde 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- als transactie het resultaat is van toevoeging van de transactie in geschiedenis
   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;
           }
        }
     }
  }

Hier wachten we op de sluiting van de positie (DEAL_ENTRY_OUT). Zodra deze deal verschijnt, controleren we het dealtype (als we een BUY sluiten, wordt dit een SELL deal, en vice versa) en openen we een nieuwe positie.

Gerelateerde berichten

Reactie (0)