Code:
//+------------------------------------------------------------------+
//| Test001.mq4 |
//| abc |
//| http:// |
//+------------------------------------------------------------------+
#property copyright "abc"
#property link "http://"
#property version "1.00"
#property strict
//--- Externe Variablen (vom Nutzer einstellbar)
extern double Lots = 0.01;
extern double SL_in_Pips_bzw_Punkten = 100;
extern double TP_in_Pips_bzw_Punkten = 100;
extern int MagicNumber = 12345;
//--- Interne Variablen (nicht vom Nutzer einstellbar)
datetime PeriodenStartZeit;
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
bool Time1Flag, Time2Flag;
int LongOrder;
int ShortOrder;
string Time1 = "18:53", Time2 = "19:27";
//+------------------------------------------------------------------+
//| Expert Initialisierungsfunktion |
//+------------------------------------------------------------------+
int OnInit()
{
//---
PeriodenStartZeit = Time[0];
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert Tick-Funktion |
//+------------------------------------------------------------------+
void OnTick()
{
//--- Überprüfung, ob neuer Periodenbeginn vorliegt
if(PeriodenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriodenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;
//--- Handelssignale ermitteln
//--- Long Signal ermitteln
if(NeuePeriodeBegonnen == true)
{
LongSignal = false;
if(!Time1Flag && TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time1))
{
LongSignal = true;
Time1Flag = true;
}
if(!Time2Flag && TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time2))
{
LongSignal = true;
Time2Flag = true;
}
}
//--- Short Signal ermitteln
if(NeuePeriodeBegonnen == true)
{
ShortSignal = false;
if(TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time1))
{
ShortSignal = true;
}
}
//--- Handelssignale umsetzen
//--- Long Signal umsetzen
if(LongSignal == true)
{
while(LongOrder<=0)
{
LongOrder = OrderSend(Symbol(),OP_BUY,Lots,Ask,50,SL_in_Pips_bzw_Punkten,TP_in_Pips_bzw_Punkten,"Test001",MagicNumber,0,Green);
}
}
//--- Short Signal umsetzen
if(ShortSignal == true)
{
while(ShortOrder<=0)
{
ShortOrder = OrderSend(Symbol(),OP_SELL,Lots,Bid,50,SL_in_Pips_bzw_Punkten,TP_in_Pips_bzw_Punkten,"Test001",MagicNumber,0,Red);
}
}
}
//+------------------------------------------------------------------+
Das Time1Flag verhindert, dass die Order bei Erreichen der Zeit mit jeder neuen Kerze wieder geöffnet wird.
Das LongSignal = false; braucht nur einmal gesetzt werden. Entweder die Zeit wurde erreicht, dann wird LongSignal = true; gesetzt, ansonsten bleibt die Variable false! (Verkürzung des Codes!)
Entsprechend für Sell noch coden.
traderdoc