hi guys please help me solve the problem with the trailing stop i want to add it to oco orders
No matter how hard I try but the code doesn’t work I don’t know where the error is
when compiling, there are no errors, OCO Orders works, trailing stop does not work
Thank you very much in advance
#include
CTrade trade;
void OnTick()
{
double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), _Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID), _Digits);
if(PositionsTotal()==0 && OrdersTotal()==0)
{
trade.BuyStop(1,Ask+3*_Point,_Symbol,Ask-27*_Point,Ask+63*_Point, ORDER_TIME_GTC,0,0);
trade.SellStop(1,Bid-3*_Point,_Symbol,Bid+27*_Point,Bid-63*_Point, ORDER_TIME_GTC,0,0);
}
if(Balance!=Equity)
{
CancelOrder();
}
TrailingStop(Ask, Bid);
}
void CancelOrder()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
ulong OrderTicket = OrderGetTicket(i);
trade.OrderDelete(OrderTicket);
}
}
void TrailingStop(double Ask, double Bid)
{
double SL_Ask = NormalizeDouble(Ask-7*_Point, _Digits);
double SL_Bid = NormalizeDouble(Bid+7*_Point, _Digits);
for (int i=PositionsTotal()-1; i>=0; i--)
{
string symbol=PositionGetSymbol(i);
if (_Symbol==symbol)
{
ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
double CurrentSL = PositionGetDouble(POSITION_SL);
if(CurrentSL>SL_Ask)
{
trade.PositionModify(PositionTicket,(CurrentSL+3*_Point),0);
}
if(CurrentSL3*_Point),0);
}
}
}
}