Hi
I am writing some code to try modifying my order , I keep getting this message in the strategy tester
failed modify order #2 buy 0.00 at market sl: 0.00000 tp: 0.00000 -> 1.28769 (1.28669), sl: 1.27452 tp: 1.29569 [Invalid request]
the trade is being opened normally but modification fails
can anyone help with this , attached below is the code i am trying
#include <Trade\Trade.mqh>
CTrade trade;
bool buy_once;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
buy_once = false;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double askNow =NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double bidNow =NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double balance = AccountInfoDouble(ACCOUNT_ASSETS);
double SL = bidNow-(500*_Point);
double TP = askNow+(500*_Point);
// open orders
if(equity >= balance && !buy_once)
{
trade.Buy(0.04,NULL,askNow,(bidNow-(500*_Point)),(askNow+(500*_Point)),NULL);
buy_once = true;
ulong ticket=trade.RequestOrder();
double price=trade.RequestPrice();
modifyOrder(price,SL,TP);
}
}
//+------------------------------------------------------------------+
void modifyOrder(double price, double SL, double TP )
{
ulong oTicket = trade.ResultOrder();
double stopLoss = SL-(500*_Point) ;
double takeProfit = TP+(500*_Point);
double nPrice = price+(200*_Point);
double slimit = price+(100*_Point);
if (trade.OrderModify(oTicket,nPrice,stopLoss,takeProfit,ORDER_TIME_GTC,0,slimit))
{
Print( "modified" + GetLastError());
} else
{
Print("unable to modify " + GetLastError());
}
}