Did you look at what error 1 means ?
"OrderModify attempts to replace the values already set with the same values. One or more values must be changed, then modification attempt can be repeated."
if(Use_Fixed_TS==true) { if(Trailing_Stop(Fixed_Trail_Stop)==1) Comment("Trail Stop ok"); else { Comment("Error in Trailing Stop"); //-------------------------------------------------------------------------------- 7 -- // Error handling section //-------------------------------------------------------------------------------------- int Error=GetLastError(); // Failed :( switch(Error) // Overcomable errors { case 130:Alert("Wrong stops. Retrying."); RefreshRates(); // Update data break; // At the next iteration case 136:Alert("No prices. Waiting for a new tick.."); while(RefreshRates()==false) // To the new tick Sleep(1); // Cycle delay break; // At the next iteration case 146:Alert("Trading subsystem is busy. Retrying "); Sleep(500); // Simple solution RefreshRates(); // Update data break; // At the next iteration // Critical errors case 2 : Alert("Common error."); break; // Exit 'switch' case 5 : Alert("Old version of the client terminal."); break; // Exit 'switch' case 64: Alert("Account is blocked."); break; // Exit 'switch' case 133:Alert("Trading is prohibited"); break; // Exit 'switch' default: Alert("Occurred error ",Error); //Other errors } } // End of If Ans==false } // End of Trail Stop section return(0); // End of start function } //--------------------------------------------------------------------------------- // function Trailing Stop //--------------------------------------------------------------------------------- bool Trailing_Stop(int Stop) { bool Answer=false; string Text; int Tipo=OrderType(); // Order type int i; for(i=0; i<=OrdersTotal(); i++) // Cycle searching in orders { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Select if the next is available { // Analysis of orders: if(OrderSymbol()!=Symbol()||Tipo>1)continue; // The order is not "ours" continue with next OrderSelect double SL=OrderStopLoss(); // SL of the selected order while(true) // Modification cycle { double TS=Stop*pips2dbl; // Trail Stop x 10 because I use a 5 digit broker double Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL); // Min. distance Comment(MarketInfo(Symbol(),MODE_STOPLEVEL)); // if(TS<Min_Dist) TS=Min_Dist; // If less than allowed New value of TS bool Modify=false; // start with a Not to be modified instruction switch(Tipo) // Evaluate By order type { case 0 : // Case Buy Order SL=NormalizeDouble(Bid-TS,Digits); // calculate new SL if(OrderStopLoss()<SL) // If Order Stop Loss is lower than what we want { Text=" Buy "; // Text for Buy Modify=true; // To be modified } break; // Exit 'switch' case 1 : // Case Sell Order SL=NormalizeDouble(Ask+TS,Digits); // calculate new SL if(OrderStopLoss()>SL) // If Order Stop Loss is higher than what we want { Text=" Sell "; // Text for Sell Modify=true; // To be modified } } // End of 'switch' if(Modify==false)break; // If it is not modified exit while Alert("Modification to",Text,"#",OrderTicket()," - Awaiting response.."); Answer=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0); //Modify it! if(Answer==true) // Got it! :) { Alert("Order ",Text,OrderTicket()," is modified:)"); break; // From modification cycle. } } // End of modification cycle while (true) continue; // continue with next OrderSelect } // End of select operator } // End of order search return(Answer); } //+------------------------- the end ------------------------------------------------+
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
I am getting error 1 a good percentage of the time when modifying the stop loss on existing orders. When looking at the openprice, current stoploss and the proposed stoploss it looks ok.
For example, on a EURUSDm short trade (after checking the conditons are valid) I use ASK + 0.0025 for the new stoploss so thought the distance from the BID price would be sufficient in most cases.
My question are;
1. My EA display says its ok but it fails - could this be due to the rounding of the 5th decomal place. In other words is the 5th decimal place significant when setting the stoploss. requiring normalise double all the time?
If so should MT4 be changed to do this automatically??
2. I have checked the spread with Error 1 and its ok at about 185 but the stop and freeze levels are both 05. Assume this is 0.00005, but how do i use these figures. I know they can prevent a trade modification, but how can i determine if the trade will be accepted or rejected - how exactly do I use these levels