Zitat:
Zitat von Max2018
mmmh scheint der ganze EA irgendwie nicht richtig aufgesetzt zu sein (Eine Meinung eines Mittelanfängers wie mir )
|
#
Will ich definitiv nicht abstreiten. Wie bereits erwähnt, bin ich noch nicht sehr lange in der Materie und auf jeden Fall noch in der Lernphase - aber wer ist das nicht.
Hier mal der Code:
Code:
extern int MagicNummer = 12345;
extern int StartHour = 10;
extern int EndHour = 12;
extern double HandelsLots= 0.1, SL_Punkte = 2.5, TP_Punkte = 0.0;
datetime NeueKerze;
bool NeuePeriodeBegonnen, ZeitfensterOffen, ZeitfensterGeschlossen, LongSignal, LastTradeLose;
int CurrentTime, Ticket, ShortOrder;
int openbuy = 0;
int opensell = 0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//Überprüfen ob neue Kerze vorliegt:
if(NeueKerze != Time[0])
{
NeuePeriodeBegonnen = true;
NeueKerze = Time[0];
Print("Neue Kerze Vorhanden");
}
else NeuePeriodeBegonnen = false;
Print("Keine Neue Kerze Vorhanden");
//Überprüfen ob wir uns im Zeitfenster befinden:
CurrentTime = TimeHour(TimeCurrent());
{
if((CurrentTime >= StartHour) && (CurrentTime < EndHour))
{
ZeitfensterOffen = true;
Print("Zeitfenster geöffnet");
}
else ZeitfensterOffen = false;
Print("Zeitfenster geschlossen");
}
//Bedingungen prüfen und Short-Order platzieren:
if((NeuePeriodeBegonnen == true) && (ZeitfensterOffen == true))
{
ShortOrder=OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,100,0.0,0.0,"Trade offen",MagicNummer,0,Blue);
}
//SL Short Deals setzen:
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
double StoppLoss = NormalizeDouble(OrderOpenPrice()+(SL_Punkte/10000),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
}
}
//TP Short Deals setzen:
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderTakeProfit()==0)
{
double TakeProfit = NormalizeDouble(OrderOpenPrice()-(TP_Punkte/10000),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
}
}
//Neuer Befehl Order max. 1 Stunde geöffnet lassen!
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if((OrderOpenTime()+3600) < TimeCurrent())
{
if (OrderType() == OP_SELL)
{
bool Closed = OrderClose(OrderTicket() ,OrderLots(), Bid, 10, Red);
opensell = 0;
}
}
}
//Wenn letzter Trade nicht in den TP gelaufen ist, beim nächsten Trade 4 Positionen eröffnen
for (int i = 0; i < 1; i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderProfit()<0.0)
{
ShortOrder=OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,100,0.0,0.0,"Trade offen",MagicNummer,0,Blue);
ShortOrder=OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,100,0.0,0.0,"Trade offen",MagicNummer,0,Blue);
}
}
//Ticketnummern nach Closing auf 0 zurücksetzen:
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}
}
Ich bin für jeden Kommentar, von totaler Schrott bis hin zu erste erkennbare Ansätze, dankbar.