Einzelnen Beitrag anzeigen
  #18 (permalink)  
Alt 16.12.15
TLO Trader TLO Trader ist offline
Gesperrter Benutzer
 
Registriert seit: Dec 2015
Beiträge: 53
TLO Trader befindet sich auf einem aufstrebenden Ast
Standard

Hi Adlerauge,
nachdem sich meine "Wut" wieder etwas gelegt hat, habe ich noch ein wenig probiert. Hier der lauffähige EA, ist nicht ausgefeilt und ich habe alle "Krücken" dringelassen, denn Du willst ja was lernen , aber er tut was er soll, immer einen Long- und dann einen Short-Trade eröffnen und umgekehrt.

Der EA arbeitet übrigens ohne OnTick(), bin ich so gewohnt und funktioniert auch. Verbesserungsvorschläge sind aber gerne willkommen.

P.S.: Ich habe festgestellt, dass hier beim Einfügen von Text manchmal Leerzeichen hinzugefügt werden, wo keine hingehören, da musst Du evtl. drauf achten. Diesmal scheint aber auf den ersten Blick alles o.k., wo ich die Funktion zum Codeeinfügen benutzt habe. Man ist ja lernfähig.


Code:
//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
extern string EAName = "Test";
extern double HandelsLots=0.01;
extern double StopLoss=50;
extern double TakeProfit=50;
bool LongShortWechsel=true;
extern int MagicNumber=1234;

int Zaehler_History;

bool LastTradeShort= false;
bool LastTradeLong = false;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int Init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
int start()
  {
   double iMom=iMomentum(NULL,0,14,0,0);
   int OffeneTrades=CountTrades();
      //Alert(iMom + "  " + OffeneTrades);
//Auf einen Long- folgt immer ein Short-Trade und umgekehrt
   if(LongShortWechsel==true)
     {
      for(Zaehler_History=OrdersHistoryTotal();Zaehler_History>=0;Zaehler_History--)
        {
         OrderSelect(Zaehler_History,SELECT_BY_POS,MODE_HISTORY);
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber)
            continue;

         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
           {
            if(OrderType()==OP_BUY)
              {
               LastTradeLong=true;
               LastTradeShort=false;
               break;
              }
            else if(OrderType()==OP_SELL)
              {
               LastTradeLong=false;
               LastTradeShort=true;
               break;
              }

           }
        }
         //Alert("LastTradeLong " + LastTradeLong);
         //Alert("LastTradeShort " + LastTradeShort);
     }

   if(OffeneTrades==0 && iMom>100 && LastTradeLong==false)
        {
         Alert(OffeneTrades + " LastTradeLong " + LastTradeLong);
         OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,2,Ask-StopLoss*Point,Ask+TakeProfit*Point,EAName,MagicNumber,0,Green);
        }

      if(OffeneTrades==0 && iMom<100 && LastTradeShort==false)
        {
         Alert(OffeneTrades + " LastTradeShort " + LastTradeShort);
         OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,2,Bid+StopLoss*Point,Bid-TakeProfit*Point,EAName,MagicNumber,0,Red);
        }
return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   int trade;
   for(trade=OrdersTotal()-1;trade>=0;trade--)
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber)
         continue;

      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         if(OrderType()==OP_SELL || OrderType()==OP_BUY)
            count++;
     }//for
   return(count);
  }
//+------------------------------------------------------------------+