Hallo Leute,
ich habe heute versucht, meinen ersten EA zu programmieren.
Ich wollte den Smash-Day von Larry Williams testen.
Aber der Strategietester hängt sich immer auf und beendet den Test nicht.
Kann mir jemand helfen, warum das so ist?
Vielen Dank!
Flocky
Hier der Code:
Code:
//+------------------------------------------------------------------+
//| smash-day |
|
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property version "1.00"
#property strict
//Globale externen Variablen
extern double HandelsLots = 1;
extern double SL_inPunkten = 20;
extern double TP_inPunkten = 20;
extern int MagicNummer = 1974;
//Globale Variablen
datetime PeriodenStartZeit;
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;
double TakeProfit;
double StoppLoss;
bool OrderAngepasst;
bool LongOrderGeclosed;
bool ShortOrderGeclosed;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
PeriodenStartZeit = Time[0];
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
//Überprüfen ob neuer Periodenbeginn vorliegt
if (PeriodenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriodenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;
//Handelssignale ermitteln
if(NeuePeriodeBegonnen == true)
{
//Buy Signal
if(iClose(NULL,0,0) < iLow(NULL,0,1))
{
LongSignal = true;
}
else LongSignal = false;
}
else
{
LongSignal = false;
ShortSignal = false;
}
//Long Signale umsetzen
if(LongSignal == true)
{
TakeProfit = iHigh(NULL,0,1)+TP_inPunkten;
StoppLoss = iHigh(NULL,0,1)-SL_inPunkten;
//Long Order eröffnen
while(LongOrder<=0)
{
LongOrder = OrderSend(Symbol(),OP_BUYSTOP,HandelsLots,iHigh(NULL,0,1),10,StoppLoss,TakeProfit,"Longorder eröffnet",MagicNummer,0,Green);
}
//Alarm ausgeben
{
Alert("Long-Trade wurde gestartet!");
}
}
//Ticketnummern nach Closing auf 0 zurück setzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET) == true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}
}
//+------------------------------------------------------------------+