El problema es qué sucede si la operación se coloca en la misma barra. (presumiblemente después de la alta). Me doy cuenta de que esto no es perfecto, pero al menos estoy tratando de cubrir mis bases.Cita:
Iniciado por ;
Versión para imprimir
El problema es qué sucede si la operación se coloca en la misma barra. (presumiblemente después de la alta). Me doy cuenta de que esto no es perfecto, pero al menos estoy tratando de cubrir mis bases.Cita:
Iniciado por ;
Podemos rastrear el precio más altomás bajo dentro de un rango de barras fácilmente usando iHighest () iLowest ()
Simplemente arrastre el altobajo de velas de 1 min entre la orden abierta y la hora actual. Si las velas de 1 minuto no son suficientes, entonces realmente no hay una buena solución y es probable que tengas que buscar otro intermediario (otra plataforma probablemente) que permita las paradas del lado del servidor.Cita:
Iniciado por ;
Comience con OrderOpenTime () e iBarshift en M1 hasta la hora actual. extrae el valor alto de M1 de cada barra y guarda el más alto para calcular la mayor ganancia de pips. Es un poco desordenado, pero funciona, pero no importa para tu ejemplo, porque te perdiste la altura y si estás 30 pips bajo el agua, el Tráiler se habría activado. Solo tienes que jugar desde tu punto de restauración.
Hola a todos. En primer lugar, estas son soluciones muy brillantes que veo aquí. El principal problema que tengo con mis versiones de estos códigos es la capacidad de recuperación. Digamos que la parada final es de 40 pips. La distancia actual de stoploss es de 30 pips. De repente, la terminal se apaga. Durante ese período: El precio sube 70 pips Retraces 30 pips. Cuando el terminal vuelva a estar en línea, el stoploss, de acuerdo con el stop final, debería ser el precio actual, 10 pips. Pero, para el EA, el precio se movió 40 pips, lo que tira del stoploss hasta 40 pips por debajo del precio actual en lugar de 10. ¿Alguna solución para eso? Estaba pensando en usar el altobajo de una barra. El problema es que no siempre puedo decir si el altobajo ocurrió después del intercambio.
Suena como una buena idea, almacenar el TPSL real dentro de un gran TPSL.Cita:
Iniciado por ;
RR: una mejor idea solo dame. Simplemente agregue 1000 pips a su SLTP y guárdelo bien en el orden normal. Simpy hace que tu rutina de salida sigilosa resta 1000 pips del SL o TP en orden. Hace que sea fácil de guardar y fácil de leer.
no solo es sigiloso, sino que dibuja líneas en el gráfico para que puedas ver el sl, solo lo probé en ibfx, mientras que en línea, si no está conectado, el marketinfo no funciona
Me acabo de dar cuenta de que publiqué el código incorrecto, aquí está el camino sigiloso Inserted Code void trail () {int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {OrderSelect (i, SELECT_BY_POS); if (OrderTicket () == ticket || OrderTicket () == ticket2 || OrderTicket () == ticket3 || OrderTicket () == ticket4 || OrderTicket () == ticket5 || OrderTicket () == ticket6) { if (MarketInfo (OrderSymbol (), MODE_LOTSTEP) == 0.001) dígitos = 3; if (MarketInfo (OrderSymbol (), MODE_LOTSTEP) == 0.01) dígitos = 2; if (MarketInfo (OrderSymbol (), MODE_LOTSTEP) == 0.1) dígitos = 1; if (MarketInfo (OrderSymbol (), MODE_LOTSTEP) == 1) dígitos = 0; if (MarketInfo (OrderSymbol (), MODE_POINT) == 0.0001) my_point = 0.0001; if (MarketInfo (OrderSymbol (), MODE_POINT) == 0.00001) my_point = 0.0001; if (MarketInfo (OrderSymbol (), MODE_POINT) == 0.01) my_point = 0.01; if (MarketInfo (OrderSymbol (), MODE_POINT) == 0.001) my_point = 0.01; if (OrderSymbol () == OrderSymbol ()! HideTrailingStop) {if (OrderStopLoss () lt; OrderOpenPrice () OrderType () == OP_BUY MarketInfo (OrderSymbol (), MODE_ASK) -OrderOpenPrice () gt; = TrailingStop * my_point OrderStopLoss ( )! = OrderOpenPrice ()) OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice (), OrderTakeProfit (), 0, CLR_NONE); if (OrderStopLoss () gt; OrderOpenPrice () OrderType () == OP_SELL OrderOpenPrice () - MarketInfo (OrderSymbol (), MODE_BID) gt; = TrailingStop * mi_punto OrderStopLoss ()! = OrderOpenPrice ()) OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice (), OrderTakeProfit (), 0, CLR_NONE); if (OrderStopLoss () gt; = OrderOpenPrice () OrderType () == OP_BUY MarketInfo (OrderSymbol (), MODE_ASK) -OrderStopLoss () gt; = TrailingStop * my_point MarketInfo (OrderSymbol (), MODE_ASK) gt; = OrderStopLoss () (TrailingStep * 2) * my_point) OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () TrailingStop * my_point, OrderTakeProfit (), 0, CLR_NONE); if (OrderStopLoss () lt; = OrderOpenPrice () OrderType () == OP_SELL OrderStopLoss () - MarketInfo (OrderSymbol (), MODE_BID) gt; = TrailingStop * my_point MarketInfo (OrderSymbol (), MODE_BID) lt; = OrderStopLoss () - (TrailingStep * 2) * my_point) OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () - TrailingStop * my_point, OrderTakeProfit (), 0, CLR_NONE); } if (OrderSymbol () == OrderSymbol () HideTrailingStop) {if (OrderType () == OP_BUY) {if (MarketInfo (OrderSymbol (), MODE_ASK) -OrderOpenPrice () gt; = TrailingStop * my_pointObjectGet (sl OrderTicket () b, OBJPROP_PRICE1) lt; OrderOpenPrice ()) {ObjectCreate (sl OrderTicket () b, OBJ_HLINE, 0, 0, 0); ObjectSet (sl OrderTicket () b, OBJPROP_PRICE1, OrderOpenPrice ()); ObjectSet (sl OrderTicket () b, OBJPROP_COLOR, rojo); ObjectSet (sl OrderTicket () b, OBJPROP_STYLE, 3); } if (MarketInfo (OrderSymbol (), MODE_ASK) -ObjectGet (sl OrderTicket () b, OBJPROP_PRICE1) gt; = TrailingStop * my_pointObjectGet (sl OrderTicket () b, OBJPROP_PRICE1) gt; = OrderOpenPrice () ObjectGet (sl OrderTicket () b, OBJPROP_PRICE1) lt; MarketInfo (OrderSymbol (), MODE_ASK) -TrailingStep * my_point) {ObjectSet (sl OrderTicket () b, OBJPROP_PRICE1, MarketInfo (OrderSymbol (), MODE_ASK) -TrailingStop * my_point); }} If (OrderType () == OP_BUYMarketInfo (OrderSymbol (), MODE_ASK) lt; = ObjectGet (sl OrderTicket () b, OBJPROP_PRICE1)) OrderClose (OrderTicket (), OrderLots (), MarketInfo (OrderSymbol (), MODE_ASK ), Slippage, CLR_NONE); count_orders (); si (OrderType () == OP_SELL) {if (OrderOpenPrice) (- MarketInfo (OrderSymbol (), MODE_BID) gt; = TrailingStop * my_pointObjectGet (sl OrderTicket () s, OBJPROP_PRICE1) gt; OrderOpenPrice ()) {ObjectCreate ( sl OrderTicket () s, OBJ_HLINE, 0, 0, 0); ObjectSet (sl OrderTicket () s, OBJPROP_PRICE1, OrderOpenPrice ()); ObjectSet (sl OrderTicket () s, OBJPROP_COLOR, rojo); ObjectSet (sl OrderTicket () s, OBJPROP_STYLE, 3); } Si (ObjectGet (sl OrderTicket () s, OBJPROP_PRICE1) -MarketInfo (OrderSymbol (), MODE_BID) gt; = TrailingStop * my_pointObjectGet (sl OrderTicket () s, OBJPROP_PRICE1) lt; = OrderOpenPrice () ObjectGet (sl OrderTicket () s, OBJPROP_PRICE1) gt; MarketInfo (OrderSymbol (), MODE_BID) TrailingStep * my_point) {ObjectSet (sl OrderTicket () s, OBJPROP_PRICE1, MarketInfo (OrderSymbol (), MODE_BID) TrailingStop * my_point) ; }} if (OrderType () == OP_SELLMarketInfo (OrderSymbol (), MODE_BID) gt; = ObjectGet (sl OrderTicket () s, OBJPROP_PRICE1)) OrderClose (OrderTicket (), OrderLots (), MarketInfo (OrderSymbol (), MODE_ASK ), Slippage, CLR_NONE); count_orders (); }}}}
Me acabo de dar cuenta de que este es tu hilo ronald, después de todo el código de u visto, ¿cómo no puedes saber esto?