EA setzt nicht alle Signale um - Fehlermeldung 130
Guten Morgen zusammen,
mein EA funktioniert nicht ganz... Ich habe beim Test -Symuator beobachtet das dies nicht alle Handelssignale umsetztet d.h. Order eröffnet(Buy/Sell).
Als Fehlermeldung bekomme ich
- 2021.10.17 08:28:12.764 2021.06.25 16:49:25 EA (CCI+EMA200) + Zeiteinstellung + Trailing + BreakEven EURUSD,M15: modify #27 buy 0.10 EURUSD at 1.19327 sl: 1.19437 tp: 1.20227 ok
- 2021.10.17 08:28:12.764 2021.06.25 16:52:30 EA (CCI+EMA200) + Zeiteinstellung + Trailing + BreakEven EURUSD,M15: OrderModify error 1
-2021.10.17 08:28:12.764 2021.06.25 16:53:20 EA (CCI+EMA200) + Zeiteinstellung + Trailing + BreakEven EURUSD,M15: modify #27 buy 0.10 EURUSD at 1.19327 sl: 1.19448 tp: 1.20227 ok
Ich vermute beim Trailling. oder Breakeven ist ein fehler drin.... kann jemand den Fehler sehen bzw. beheben?
PHP-Code:
#property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict
//Globale Externe Variable extern double TrendScalping; extern double HandelsLots = 0.1, SL_Point = 325, TP_Point = 900; extern int MagicNummer = 12345;
//Break Even extern int BreakEven = 45; extern bool UseTrailingStop = true; extern int TrailingStop = 250;
//Globale Veriable datetime PeriodenStartZeit; bool NeuePeriodeBegonnen, LongSignal,ShortSignal; int LongOrder,ShortOrder;
// Variable Handelszeiten extern string OOO1="Open Orders"; extern string OOO2="from/till"; extern string OOO3="(Server Time)";
extern int From_Hour=8; extern int From_Min=26;
extern int Till_Hour=20; extern int Till_Min=56;
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- PeriodenStartZeit = Time [0]; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //---
// Üperprüfen ob neuer Periodenbeginn vorliegt if(PeriodenStartZeit != Time[0]) { NeuePeriodeBegonnen = true; PeriodenStartZeit = Time[0]; } else NeuePeriodeBegonnen = false; // Marktdaten ermitteln TrendScalping = iCCI(NULL,0,35,0,1); double TrendScalpingVorperiode = iCCI(NULL,0,35,0,2); double TrendKanal = iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,1); //Handelssignale ermitteln if(NeuePeriodeBegonnen == true) { // Handelzeit von 8:00 - 17:00 Uhr if(Hour()>=From_Hour&&Minute()>=From_Min&&Hour()<=Till_Hour&&Minute()<=Till_Min) { //Buy Signal if(TrendScalping<-200 && TrendScalpingVorperiode>-200 && TrendKanal < Bid) { LongSignal = true; } else LongSignal =false; //Sell Signal if(TrendScalping<200 && TrendScalpingVorperiode>200 && TrendKanal > Bid) { ShortSignal = true; } else ShortSignal = false; } } else { LongSignal = false; ShortSignal = false; }
//Long Signale umsetzten if(LongSignal == true) { if (LongOrder<15)
{ LongOrder = OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,10,0,0,"Maxing Long",MagicNummer,0,clrGreen); } } //Short Signale umsetzten if(ShortSignal == true) { if (ShortOrder<15) { ShortOrder = OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,10,0,0,"Maxing Short",MagicNummer,0,clrRed); } } //SL Long Deals Setzen for(int b= OrdersTotal()-1; b>= 0; b--) { //Eine Order wird ausgewählt if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) //Symbol Order mit Chart prüfen if(OrderSymbol() == Symbol()) //Wir pruefen ob es sich um eine Kauf Order handelt if(OrderType() == OP_BUY) { if(OrderCloseTime()==0 && OrderStopLoss()==0) { double StopLoss= NormalizeDouble(OrderOpenPrice()- (SL_Point* _Point),Digits); bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,clrYellow);
} //Breakeven if(BreakEven > 0 && OrderStopLoss() > OrderOpenPrice()) { if ( OrderOpenPrice()-Ask>Point*BreakEven ) { double BuyStop = OrderOpenPrice(); if(OrderStopLoss() > BuyStop) OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble(BuyStop,3), OrderTakeProfit(),0,clrRed); } } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Ask - OrderOpenPrice() > Point * TrailingStop) { if(OrderStopLoss() < Ask - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask - Point * TrailingStop, OrderTakeProfit(), 0, clrMediumSeaGreen); } } } } } //SL Short Deals Setzen for(int b= OrdersTotal()-1; b>=0; b--) { //Wir wählen eine Order aus if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) //Symbol Order mit Chart prüfen if(OrderSymbol() == Symbol()) //Wir pruefen ob es sich um eine Kauf Order handelt if(OrderType() == OP_SELL) { if(OrderCloseTime()==0 && OrderStopLoss()==0) { double StopLoss= NormalizeDouble(OrderOpenPrice()+ (SL_Point* _Point),Digits); bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,clrYellow);
} //Breakeven if(BreakEven > 0 && OrderStopLoss() > OrderOpenPrice()) { if (Bid < OrderOpenPrice() - BreakEven* _Point) { double SellStop = OrderOpenPrice(); if(OrderStopLoss() > SellStop) OrderModify(OrderTicket(),OrderOpenPrice()-6*_Point, OrderTakeProfit(),0,clrRed); } } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if((OrderOpenPrice() - Bid) > (Point * TrailingStop)) { if((OrderStopLoss() > (Bid + Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid + Point * TrailingStop, OrderTakeProfit(), 0, clrDarkOrange); } } } } } //TP Long Deals Setzen if(OrderSelect(LongOrder,SELECT_BY_TICKET) == true) { if(OrderCloseTime()==0 && OrderTakeProfit()==0) { double TakeProfit= NormalizeDouble(OrderOpenPrice() + (TP_Point* _Point),Digits); bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,clrOrange); } } //TP Short Deals Setzen if(OrderSelect(ShortOrder,SELECT_BY_TICKET) == true) { if(OrderCloseTime()==0 && OrderTakeProfit()==0) { double TakeProfit= NormalizeDouble(OrderOpenPrice() - (TP_Point* _Point),Digits); bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,clrOrange); } } //Ticketnummern nach Closing auf zurücksetzen if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true) { if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0; } if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true) { if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0; } } //+------------------------------------------------------------------+
|