Buenos días, estoy intentando modificar los StopLoss y TakeProfit de una posición abierta
Y me canta error continuamente, he mirado la información de la función y no se si me falta algo que establecer antes o que sucede.
Lo he intentado tanto en el evento OnTrade como en el evento OnTick
Codigo:
ulong spread = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
double price_open=PositionGetDouble(POSITION_PRICE_OPEN);
double stoploss; //= price_open-inpSL;
double takeprofit; //= price_open+inpTP;
stoploss=PositionGetDouble(POSITION_SL);
takeprofit=PositionGetDouble(POSITION_TP);
if (stoploss == 0)
{
Print("El Ticket: ", ticket, " no tiene configurado el #SL:", stoploss, " -- Nuevo SL: ", price_open-inpSL+spread);
stoploss = price_open-inpSL+spread;
modificar = true;
}
if (takeprofit == 0)
{
Print("El Ticket: ", ticket, " no tiene configurado el #TP:", takeprofit, " -- Nuevo TP: ", price_open+inpSL+spread);
takeprofit= price_open+inpTP+spread;
modificar = true;
}
if (modificar)
{
if (trade.PositionModify(ticket, stoploss, takeprofit))
Print("Ticket " + (string) ticket + " modificado por #ticket");
else
Alert((string) trade.ResultRetcode() + "No se ha podido modificar");
}
Un ejemplo en el DAX del resultado:
CTrade::OrderSend: modify position DAX30 (sl: 14718.14, tp: 14758.14) [invalid stops]
El precio de mercado estaba en ese momento justo en medio (14738.14)
Suele haber una distancia mínima para colocar los stops SYMBOL_TRADE_STOPS_LEVEL.
Como es un número entero tendrás que multiplcarlo por _Point y sumar o restar al precio Ask/Bid para obtener el precio mínimo al que puedes moverlos para que te acepte la orden.
https://www.mql5.com/es/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_integer
- www.mql5.com
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Buenos días, estoy intentando modificar los StopLoss y TakeProfit de una posición abierta
Y me canta error continuamente, he mirado la información de la función y no se si me falta algo que establecer antes o que sucede.
Lo he intentado tanto en el evento OnTrade como en el evento OnTick
Codigo:
Un ejemplo en el DAX del resultado:
CTrade::OrderSend: modify position DAX30 (sl: 14718.14, tp: 14758.14) [invalid stops]
El precio de mercado estaba en ese momento justo en medio (14738.14)