Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 22.01.15
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
//+------------------------------------------------------------------+
//|                                                   Signal Dax.mq4 |
//|                                                              xxx |
//|                                             https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "xxx"
#property link      "https://www.mql4.com"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
// --- Variablen vom Benutzer Festlegen: (Global)
//+------------------------------------------------------------------+
extern double HandelsLots = 0.1; // Größe der Handels Lots
extern double SL_Prozent = 0.5; // StopLoos in Prozent
extern double TP_Prozent = 1.5; // TakeProfit in Prozent
extern int MagicNummer = 12345;
//+------------------------------------------------------------------+
// --- Variablen fest Festlegen: (Global)
//+------------------------------------------------------------------+
datetime PeriondenStartZeit; // zum feststellen einer neuen Perionde
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;


// --- String für Dax30 festlegen
string syDax = "EUREX.FDX";

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PeriondenStartZeit = Time[0];
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function - Ausführen beim Ende von EA    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
   
  }
//+------------------------------------------------------------------+
//| Expert tick function  (StartZeit                                           |
//+------------------------------------------------------------------+
void OnTick()
{
//---

double StoppLoss;
double TakeProfit;
bool OrderAngepasst;

// Überprüfen ob ein neuer Periodenbeginn vorliegt
if (PeriondenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriondenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;

   
// --- MA20 für Dax Abfragen 
double maDAX = iMA(syDax,0,20,0,MODE_SMA,PRICE_CLOSE,0);


// ---Aktuellen BID Kurs für Dax Abfragen (letzter Kurs?)
double bidDax  = MarketInfo(syDax, MODE_BID);



// Anzeige auf Bildschirm 
Print("DAX 30 MA Kurve =",maDAX);  


//+------------------------------------------------------------------+
//| HandelsSignale ermitteln                                         |
//+------------------------------------------------------------------+  


if (NeuePeriodeBegonnen == true)
{ 

     //  --- Kauf Signal --- 

     if (bidDax>maDAX)
     {
     LongSignal = true;
     }
     else LongSignal = false;

     // --- Verkauf Signal ---

     if (bidDax<maDAX)
     {
     ShortSignal = true;
     }
     else ShortSignal = false;
}
else
{
LongSignal = false;
ShortSignal = false;
}


//+------------------------------------------------------------------+
//| Kauf / Verkauf Signal umsetzen                                   |
//+------------------------------------------------------------------+  
 
// Kaufen
if(LongSignal == true)
{
       // Evtl Short Order vorher Schließen
       if(ShortOrder>0)
          {
             if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
             {
             bool ShortOrderGeschlossen = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
             if (ShortOrderGeschlossen==true) ShortOrder=0;
             } 
          }
       // Jetzt erst Long Order eröffnen
       while(LongOrder<=0)
           {
           LongOrder = OrderSend(syDax,OP_BUY,HandelsLots,Ask,10,0,0,"Dax30 LONG",MagicNummer,0,Green);
           }
}

// Verkaufen
if (ShortSignal == true)
{
      // Evtl Long Order vorher Schließen
     if (LongOrder>0)
        {
           if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
           {
           bool LongOrderGeschlossen = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
           if (LongOrderGeschlossen==true) LongOrder=0;
           }
        }
      // Verkaufs Order jetzt eröffnen
      while(ShortOrder<=0)
         {
         ShortOrder = OrderSend(syDax,OP_SELL,HandelsLots,Bid,10,0,0,"Dax30 SHORT",MagicNummer,0,Red);
         }
}

//+------------------------------------------------------------------+
//|StopLoos und TakeProfit setzen                                   |
//+------------------------------------------------------------------+  
 


// SL bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// SL bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()*(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// Ticketnummern nach schließen auf 0 zurücksetzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
   if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}

if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
   if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}


//+------------------------------------------------------------------+
}
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.