Danke für deine Antwort.
Dafür sind ja diese Schalter eingebaut, die einfach weg ignoriert werden.
Nun habe ich das Programm so geändert, dass er nicht einen bool Wert abfragt sondern Zahlen vergleicht. Das funktioniert schon mal.
Code:
void OnTick()
{
string OP = "";
double price = 0;
int MagicNumber = 0;
string Farbe = "";
string OrderName = "";
if(OrdersTotal()<5)
{
if(iOpen(_Symbol,PERIOD_M15,0)>iOpen(_Symbol,PERIOD_M15,1)&&(Schalter_30>=1))
{
OP = OP_BUY;
price = Ask;
MagicNumber = Order3;
Farbe = "Green";
OrderName = "BUY-Order 3.1";
BuyOrder =1;
Schalter_30=0;
Print(OrderName);
}
else
{
if(iOpen(_Symbol,PERIOD_M15,0)>iOpen(_Symbol,PERIOD_M15,1)&&(Schalter_30>=1)
{
OP = OP_SELL;
price = Bid;
MagicNumber = Order3;
OrderName = "SELL-Order 3.1";
SellOrder =1;
Schalter_31=0;
Print(OrderName);
}
}
if(BuyOrder>0)
{
//Order = OrderSend(_Symbol,OP,Lots,Ask,3,0,0,NULL,MagicNumber,0,Green);
if(TimeCurrent()==iTime(_Symbol,PERIOD_M15,0))
{
if(Schalter_30==0)
{
Schalter_30=1;
}
}
bool Note = SendNotification (OrderName +" Einstieg = " + price);
}
else
{
if(SellOrder>0)
{
//Order = OrderSend(_Symbol,OP,Lots,Bid,3,0,0,NULL,MagicNumber,0,Red);
if(TimeCurrent()==iTime(_Symbol,PERIOD_M15,0))
{
if(Schalter_31==0)
{
Schalter_31=1;
}
}
Note = SendNotification (OrderName +" Einstieg = " + price);
}
}
}
Comment("BuyOrder = ", BuyOrder, "\n",
"SellOrder = ", SellOrder, "\n",
"Schalter_30 = ", Schalter_30, "\n",
"Schalter_31 = ", Schalter_31,"\n",
"Schalter = ",Schalter);
}
Die Schalter sind Global deklariert.
Nun die Frage warum öffnet er, trotz Schalter, 2 Sell Order am Anfang?
Gibt es dort eine Art delay, das noch eine 2te Order schnell mit durchschlüpft?
Warum funktioniert das mit der bool Variante nicht? (Wieso muss ich Zahlen vergleichen)
Wenn ich jetzt 4 oder 5 verschiedene Kauf oder Verkauf Möglichkeiten habe, warum funktioniert das Zurücksetzen des Schalters nicht mehr wenn ich es so habe?
Code:
if(BuyOrder>0)
{
//Order = OrderSend(_Symbol,OP,Lots,Ask,3,0,0,NULL,MagicNumber,0,Farbe);
if(TimeCurrent()<=iTime(_Symbol,PERIOD_M15,0))
{
if(Schalter_10B==0)
{
Schalter_10B=1;
}
else
{
if(Schalter_20B==0)
{
Schalter_20B=1;
}
else
{
if(Schalter_21B==0)
{
Schalter_21B=1;
}
else
{
if(Schalter_22B==0)
{
Schalter_22B=1;
}
else
{
if(Schalter_23B==0)
{
Schalter_23B=1;
}
else
{
if(Schalter_24B==0)
{
Schalter_24B=1;
}
else
{
if(Schalter_25B==0)
{
Schalter_25B=1;
}
else
{
if(Schalter_30B==0)
{
Schalter_30B=1;
}
else
{
if(Schalter_31B==0)
{
Schalter_31B=1;
} } } } } } } } } } }
ich weiß das ist jetzt nicht ganz so leicht mit diesem Codeschnipsel aber warum funktioniert die zurück Setzung des Schalters jetzt nicht mehr?
Und könnte man das nicht auch über ein Array lösen?