you reset the value of orderprofit on every new cycle.
//+------------------------------------------------------------------+ double orderprofit=0.0; double lastorderprofit=0.0; for(i=0;i<=OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if(OrderOpenTime()==LastBuy1()) { orderprofit=orderprofit+OrderProfit(); lastorderprofit=LastOrderProfitBuy(); if(orderprofit-lastorderprofit>=Min_Profit && orderprofit<0) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); OrderClose(OrderTicketNumberBuy(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); } } } } //+------------------------------------------------------------------+
it needs to be declared outside of the loop.
Also please use the styler (Ctrl+,)
And may want to check the return value of OrderClose() function.
you reset the value of orderprofit on every new cycle.
it needs to be declared outside of the loop.
Also please use the styler (Ctrl+,)
And may want to check the return value of OrderClose() function.
i tried but no luck can you fix it
/////////////Order Close At Average//////////////// double orderprofit = 0.0; double lastorderprofit = 0.0; for(i=0;i<=OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderOpenTime()== LastBuy1()) { orderprofit =OrderProfit(); lastorderprofit = LastOrderProfitBuy(); if( orderprofit + lastorderprofit >= Min_Profit ) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); OrderClose(OrderTicketNumberBuy(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); } } } else orderprofit = 0.0; lastorderprofit = 0.0; }
It's not complete.
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderOpenTime()== LastBuy1()) { orderprofit =OrderProfit(); lastorderprofit = LastOrderProfitBuy(); if( (orderprofit + lastorderprofit) >= Min_Profit ) { orderprofit = 0.0; lastorderprofit = 0.0; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); OrderClose(OrderTicketNumberBuy(),OrderLots(),OrderClosePrice(),Slippage,clrYellow); } } } else orderprofit = 0.0; lastorderprofit = 0.0; }
even i tried with this but no luck. i will be very thankful to you if you do some help to fix this. i really stuck on this from 3 days
It's not complete.
can you help me to complete it please
can you help me to complete it please
You can by adding
LastBuy1()
LastOrderProfitBuy()
OrderTicketNumberBuy()
You can by adding
should i reset all them to 0 on every cycle
No that is the problem you can not reset them if you want to add them together.
I meant adding the code to your post here.
Your code is incomplete, functions are missing.
datetime LastSell0() { datetime orderopentime[]; //--- declare array int orderstotal=OrdersTotal(); //--- declare orderstotal ArrayResize(orderopentime,orderstotal,0); //--- resize array for(int i=0;i<orderstotal;i++) //--- loop { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) //--- check result { Print("Access to history failed with error (",GetLastError(),")"); break; } else if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol() == Symbol() && OrderType()==OP_SELL ) //--- check result { //Print("Symbol: ",OrderSymbol(), // " Ticket: ",OrderTicket(), // " Open Time: ",OrderOpenTime(), // " Open Price: ",OrderOpenPrice(), // " Close Time: ",OrderCloseTime(), // " Close Price: ",OrderClosePrice()); //--- fill array orderopentime[i]=OrderOpenTime(); //--- fill array } } int index; //--- declare index index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find oldest order Print(" Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find second oldest order Print(" Second Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find third oldest order Print(TimeToString(orderopentime[index])); //--- print result return(OrderOpenTime()); } datetime LastBuy0() { datetime orderopentime[]; //--- declare array int orderstotal=OrdersTotal(); //--- declare orderstotal ArrayResize(orderopentime,orderstotal,0); //--- resize array for(int i=0;i<orderstotal;i++) //--- loop { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) //--- check result { Print("Access to history failed with error (",GetLastError(),")"); break; } else if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol() == Symbol() && OrderType()==OP_BUY ) //--- check result { //Print("Symbol: ",OrderSymbol(), // " Ticket: ",OrderTicket(), // " Open Time: ",OrderOpenTime(), // " Open Price: ",OrderOpenPrice(), // " Close Time: ",OrderCloseTime(), // " Close Price: ",OrderClosePrice()); //--- fill array orderopentime[i]=OrderOpenTime(); //--- fill array } } int index; //--- declare index index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find oldest order Print(" Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find second oldest order Print(" Second Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find third oldest order Print(TimeToString(orderopentime[index])); //--- print result return(OrderOpenTime()); } datetime LastSell1() { datetime orderopentime[]; //--- declare array int orderstotal=OrdersTotal(); //--- declare orderstotal ArrayResize(orderopentime,orderstotal,0); //--- resize array for(int i=0;i<orderstotal;i++) //--- loop { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) //--- check result { Print("Access to history failed with error (",GetLastError(),")"); break; } else if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol() == Symbol() && OrderType()==OP_SELL ) //--- check result { //Print("Symbol: ",OrderSymbol(), // " Ticket: ",OrderTicket(), // " Open Time: ",OrderOpenTime(), // " Open Price: ",OrderOpenPrice(), // " Close Time: ",OrderCloseTime(), // " Close Price: ",OrderClosePrice()); //--- fill array orderopentime[i]=OrderOpenTime(); //--- fill array } } int index; //--- declare index index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find oldest order Print(" Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find second oldest order Print(" Second Last order: ",TimeToString(orderopentime[index])); return(OrderOpenTime()); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find third oldest order Print(TimeToString(orderopentime[index])); //--- print result } datetime LastBuy1() { datetime orderopentime[]; //--- declare array int orderstotal=OrdersTotal(); //--- declare orderstotal ArrayResize(orderopentime,orderstotal,0); //--- resize array for(int i=0;i<orderstotal;i++) //--- loop { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) //--- check result { Print("Access to history failed with error (",GetLastError(),")"); break; } else if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol() == Symbol() && OrderType()==OP_SELL ) //--- check result { //Print("Symbol: ",OrderSymbol(), // " Ticket: ",OrderTicket(), // " Open Time: ",OrderOpenTime(), // " Open Price: ",OrderOpenPrice(), // " Close Time: ",OrderCloseTime(), // " Close Price: ",OrderClosePrice()); //--- fill array orderopentime[i]=OrderOpenTime(); //--- fill array } } int index; //--- declare index index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find oldest order Print(" Last order: ",TimeToString(orderopentime[index])); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find second oldest order Print(" Second Last order: ",TimeToString(orderopentime[index])); return(OrderOpenTime()); //--- print result orderopentime[index]=0; //--- reset value so it will not be found again index=ArrayMaximum(orderopentime,WHOLE_ARRAY,0); //--- find third oldest order Print(TimeToString(orderopentime[index])); //--- print result } int OrderTicketsBuy () { for(int i = 0 ; i <= OrdersTotal() ; i++) { bool Orderinfo = OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(Orderinfo == True && OrderType()==OP_BUY) { int OrderTicketBuy=OrderTicket(); } return(OrderTicketBuy); } } int OrderTicketsSell () { for(int i = 0 ; i <= OrdersTotal() ; i++) { bool Orderinfo = OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(Orderinfo == True && OrderType()==OP_SELL) { int OrderTicketSell=OrderTicket(); } return(OrderTicketSell); } }
these are functions
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
i dont know why SUM of 2 Orders are not correct , i am trying to close Last 2 orders with Minimum 1 usd profit. but in stratgy tester it,s closing no logic some time 0.50 cents and second trade at 0 , some time first order profit 1 usd and second order close at 17 usd loss. i cant understand what is the matter. any thing i am doing wrong
i also have function for LAST AND SECOND LAST OrderOpenTime.
trying hard but dont know what is the matter
please help me