The following code whenever I back test it I keep getting an ordermodify error 1 but I don't know where in the source code to change it so I can put it right. Please if anyone can help me with this I would appreciate it.
//+------------------------------------------------------------------+ //| Big Dog Breakout - ALBERTO TORTELLA | //+------------------------------------------------------------------+ // CARATTERISTICHE// ENTRATA ROTTURA RANGE DEFINITO A INIZIO MATTINATA.// STOP LATO OPPPOSTO DEL RANGE, ASSENZA DI TAKE PROFIT// TAKE PROFIT MIN/MAX ULTIME DUE BARRE PRECEDENTIexternint Box = 4; // ampiezza del box di riferimentoexternint Start_Trade = 7; // prima ora utile per aprire posizioniexternint Stop_Trade = 15; // ultima ora utile per aprire posizioniexternint Close_Trade = 21; // orario chiusura posizioni aperteexternint Filter_In = 20; // filtro da aggiungere al livello di breakoutexternint Filter_Out = 20; // filtro da aggiungere al livello di stopexterndouble Risk = 0.01; // rischio massimo accettabile su ogni tradeexterndouble FixedLots = 0.00; // lasciare 0 per utilizzare il fixed fractional methodint Num_Order_Long, Num_Order_Short, Lotti ;
bool Long, Short ;
bool Entry_Long, Entry_Short ;
bool can_trade_long = false ; // variabile di controllo per breakout longbool can_trade_short = false ; // variabile di controllo per breakout shortdouble Line_Up, Line_Down;
double Distanza_Long, Distanza_Short ;
double Potential_Loss_Long, Potential_Loss_Short, Punto ;
double Spread, pipValue, Lots, Apertura, Trailing_Stop ;
double Min_Stop, Stop_Long, Stop_Short ;
double Lots_Long, Lots_Short;
int a = 0, Contatore ;
int Ora_Entrata, cnt, total, ticket_long, ticket_short;
double lotStep;
#include <Punto.mqh>#include <Lots_Long.mqh>#include <Lots_Short.mqh>//+------------------------------------------------------------------+ //| ESECUZIONE DELL'EXPERT | //+------------------------------------------------------------------+ int start()
{
//+------------------------------------------------------------------+ //| DEFINIZIONE DEL BOX | //+------------------------------------------------------------------+ if(Hour()==7)
{
Line_Up = High[iHighest(NULL,0,MODE_HIGH,Box,1)] ;
Line_Down = Low [iLowest(NULL,0,MODE_LOW,Box,1)] ;
}
// SE CAMBIA LA BARRA RESETTO LA VARIABILE "NO TRADE" if (Apertura != Open[0])
{
a=0;
}
// CONTROLLO CHE NON CI SIANO ORDINI APERTI SU QUESTO CROSS // DA QUESTO EXPERT
total = OrdersTotal();
Num_Order_Long = 0;
Num_Order_Short = 0;
for(cnt=0;cnt<=total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber()==3)
{ // Controlla il cross e l'expert che ha aperto la posizioneif (OrderType()==OP_BUY)
{
Num_Order_Long++;
}
if (OrderType()==OP_SELL)
{
Num_Order_Short++;
}
}
}
if(Bid<Line_Up && Num_Order_Long==0 )
{
can_trade_long = true;
}
if(Bid>Line_Down && Num_Order_Short==0 )
{
can_trade_short = true;
}
//+------------------------------------------------------------------+ //| APERTURA POSIZIONI | //+------------------------------------------------------------------+
Entry_Long = Bid>=Line_Up+Filter_In/Punto() && High[1]<=Line_Up ;
Entry_Short = Bid<=Line_Down-Filter_In/Punto() && Low[1]>=Line_Down ;
// POSIZIONI LONGif(Entry_Long && can_trade_long && Hour()>=Start_Trade && Hour()<Stop_Trade)
{
Min_Stop = Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)/Punto() ;
Stop_Long = MathMin(Line_Down-Filter_Out/Punto(),Min_Stop) ;
Distanza_Long = Bid - Stop_Long ;
Lots_Long = Lots_Long();
if (Lots_Long>=0.01)
{
ticket_long = OrderSend(Symbol(),OP_BUY,Lots_Long,Ask,NULL,NULL,NULL,"Big Dog",3,0,Green) ;
if(ticket_long>0)
{
if(OrderSelect(ticket_long,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Perdita potenziale è : ", (Potential_Loss_Long*Lots_Long)/AccountFreeMargin()*100 );
can_trade_long = false;
Apertura = Open[0];
}
elsePrint("Error opening BUY order: ",GetLastError());
return(0);
}
}
elseif (a == 0)
{
Print("No trade man!");
a = 1;
Apertura = Open[0];
}
}
// POSIZIONI SHORTif(Entry_Short && can_trade_short && Hour()>=Start_Trade && Hour()<Stop_Trade)
{
Min_Stop = Bid+MarketInfo(Symbol(),MODE_STOPLEVEL)/Punto() ;
Stop_Short = MathMax(Line_Up+Filter_Out/Punto(),Min_Stop) ;
Distanza_Short = Stop_Short - Bid ;
Lots_Short = Lots_Short();
if (Lots_Short>=0.01)
{
ticket_short = OrderSend(Symbol(),OP_SELL,Lots_Short,Bid,NULL,NULL,NULL,"Big Dog",3,0,Red);
if(ticket_short>0)
{
if(OrderSelect(ticket_short,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Perdita potenziale è : ", (Potential_Loss_Short*Lots_Short)/AccountFreeMargin()*100 );
can_trade_short = false;
Apertura = Open[0];
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
}
elseif (a == 0)
{
Print("No trade man!");
a = 1;
Apertura = Open[0];
}
}
//+------------------------------------------------------------------+ //| INSERIMENTO STOP LOSS | //+------------------------------------------------------------------+ for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==3) // SIMBOLO
{
if(OrderType()==OP_BUY) // POSIZIONI LONG
{
// trailing stop
Min_Stop = Bid - MarketInfo(Symbol(),MODE_STOPLEVEL)/Punto() ;
Stop_Long = MathMin(Line_Down-Filter_Out/Punto(),Min_Stop) ;
if(OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Stop_Long,OrderTakeProfit(),0,Blue);
}
} // Chiude Long else// POSIZIONI SHORT
{
// trailing stop
Min_Stop = Bid + MarketInfo(Symbol(),MODE_STOPLEVEL)/Punto() ;
Stop_Short = MathMax(Line_Up+Filter_Out/Punto(),Min_Stop)+(Ask-Bid) ;
if(OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Stop_Short,OrderTakeProfit(),0,Blue);
}
} // Chiude Short
} // Chiude Simbolo
} // Chiude Ciclo For //+------------------------------------------------------------------+ //| CHIUSURA POSIZIONI | //+------------------------------------------------------------------+ for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==3) // SIMBOLO
{
if(OrderType()==OP_BUY) // POSIZIONI LONG
{
// trailing stop
Trailing_Stop=Low[iLowest(NULL,0,MODE_LOW,2,1)]-Filter_Out/Punto();
if(Apertura!=Open[0] && OrderStopLoss()<Trailing_Stop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Trailing_Stop,OrderTakeProfit(),0,Blue);
}
// chiusura posizioni a fine giornataif(Hour()==Close_Trade)
{
OrderClose(OrderTicket(),OrderLots(),Bid,NULL,PaleGoldenrod);
}
// chiusura posizioni il venerdì seraif(DayOfWeek()==5 && Hour()==19 && Minute()==50)
{
OrderClose(OrderTicket(),0.01,Bid,NULL,Violet);
}
}
else// POSIZIONI SHORT
{
// trailing stop
Trailing_Stop=High[iHighest(NULL,0,MODE_HIGH,2,1)]+Filter_Out/Punto()+(Ask-Bid);
if(Apertura!=Open[0] && OrderStopLoss()>Trailing_Stop )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Trailing_Stop,OrderTakeProfit(),0,Blue);
}
// chiusura posizioni a fine giornataif(Hour()==Close_Trade)
{
OrderClose(OrderTicket(),OrderLots(),Ask,NULL,PaleGoldenrod);
}
// chiusura posizioni il venerdì sera if(DayOfWeek()==5 && Hour()==19 && Minute()==50)
{
OrderClose(OrderTicket(),0.01,Ask,NULL,Violet);
}
} // Chiude Short
} // Chiude Simbolo
} // Chiude Ciclo For
} // Chiude Start
You'll get an " ordermodify error 1" if you try to modify an order with the same values. So nothing was changed. To resolve the error test if at least one value was changed before executing the modify function.
Allow the use of cookies to log in to the MQL5.com website.
Please enable the necessary setting in your browser, otherwise you will not be able to log in.
You are signed in. Two-factor authentication has been disabled. Set it up again and scan a new QR code, or continue with two-factor authentication disabled.
hi
The following code whenever I back test it I keep getting an ordermodify error 1 but I don't know where in the source code to change it so I can put it right. Please if anyone can help me with this I would appreciate it.