Startseite Systemhandel Beitrag

Gegenteilige Handelsstrategie für MetaTrader 5: So funktioniert's

Anhang
18904.zip (1.11 KB, Herunterladen 0 mal)

In der Welt des Tradings kann es manchmal sinnvoll sein, eine Position entgegen der geschlossenen Position zu öffnen – und genau das ermöglicht unser Gegenteilige Handels-Expert Advisor. Dieser funktioniert für jedes Symbol und jede Magic-Nummer.

Nehmen wir als Beispiel eine offene AUDUSD BUY-Position mit 0,01 Lot. Sobald diese Position geschlossen wird (zum Beispiel durch manuelles Schließen), öffnet der Gegenteilige Handels EA sofort eine neue AUDUSD-Position, und zwar als SELL-Position.

Der gesamte Code befindet sich in der Funktion OnTradeTransaction:

//+------------------------------------------------------------------+
//| TradeTransaction Funktion                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- Transaktionstyp als Enumerationswert erhalten 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- Wenn die Transaktion das Ergebnis einer Addition der Transaktion in der Historie ist
   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 warten wir also auf den Abschluss der Handelsposition (DEAL_ENTRY_OUT). Sobald dieser Deal erscheint, überprüfen wir die Deal-Position (wenn wir ein BUY schließen, wird dies ein Sell-Deal, und umgekehrt) und öffnen eine neue Position.

Verwandte Beiträge

Kommentar (0)