hallo zusammen,
Evtl könnt ihr mir ja weiter helfen ...
ich versuche mich jetzt seit ein paar wochen auch mal im Programmieren mit denn EA´s
hab vor kurzen im Netz mal ne Anleitung für einen Code gefunden und hab denn auch gleich mal ausprobieren wollen .... dort scheint er auch gut zu funktioneren
nur leider bei mir nicht
Benutze denn MetaTrader 4
Version 4.00 Build 765 (12Dez 2014)
mit dem MetaEditor
Version 5.00 Build 1035 (11Dez 2014)
bin mir sicher das ich alles richtig geschrieben hab, habs auch mehrmals kontrolliert und auch selber schon ein bishen dran rumgebastelt
aber bekomm es einfach nicht zum laufen
könnte mir vieleicht jemad einen Hinweis geben was daran nicht stimmt?
habe 5 FehlerMeldungen und 2 Warnungen:
'StoppLoss' - undeclared identifier dax test 1.mq4 175 7
possible loss of data due to type conversion dax test 1.mq4 175 17
'OrderAngepasst' - undeclared identifier dax test 1.mq4 176 7
'OrderAngepasst' - undeclared identifier dax test 1.mq4 186 7
'TakeProfit' - undeclared identifier dax test 1.mq4 195 7
possible loss of data due to type conversion dax test 1.mq4 195 18
'OrderAngepasst' - undeclared identifier dax test 1.mq4 196 7
5 error(s), 2 warning(s)
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()
{
//---
// Ü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)
{
double StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100)),Digits);
bool 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)
{
double 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;
}
//+------------------------------------------------------------------+
}
für Hilfe währ ich dankbar