Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1640 1...163316341635163616371638163916401641164216431644164516461647...1954 Nuevo comentario Tretyakov Rostyslav 2021.10.02 10:24 #16391 EVGENII SHELIPOV #:¡¡¡Buenos días a todos!!! Estoy escribiendo código para un EA para Trailing Stop de órdenes de grupo a partir del precio medio de una parrilla de órdenes. No hay errores en el registro, pero la red de arrastre tampoco funciona. Aquí está el código, por favor, sugiera dónde está el error. Gracias. ¡La red de arrastre está en el lugar equivocado! Debería ser algo así ¡Si el precio de equilibrio+beneficio-tral! = TakeProfit, ¡comienza el arrastre! ¿De dónde proceden estos datos? //+----------------------------------------------------------------------------+ //| Трейлинг стоп групповых ордеров | //+----------------------------------------------------------------------------+ void TrailingGroupOrder() { price += OrderOpenPrice() * OrderLots(); order_lots += OrderLots() ; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) OrderOpenPrice Devuelve el precio de apertura de la orden seleccionada dobleOrderOpenPrice(); Nota: El pedido debe ser preseleccionado mediante la función OrderSelect(). [¡AVISO CERRADO!] Cualquier pregunta ¿Cómo puedo establecer el [¡Archivo!] Cualquier pregunta de Maksim Burov 2021.10.02 14:48 #16392 MakarFX #: Gracias). EVGENII SHELIPOV 2021.10.02 14:59 #16393 MakarFX #:¡Ahí no está la red de arrastre! Debería ser así: si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre ¡¡¡¡Buenas tardes Makar!!!! Según tengo entendido, esta es la línea en cuestión. En este caso una orden de compra: if(Bid - NormalizeDouble(price / order_lots, Digits) > TrailingStopGroupOrder*Point || OrderStopLoss() == 0) Makar si pudieras explicar con más detalle EVGENII SHELIPOV 2021.10.02 15:06 #16394 MakarFX #:¡Ahí no está la red de arrastre! Debería ser así: si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre ¿De dónde proceden estos datos? Makar, hoy estás hablando en clave. Puede haber otra pregunta por la que calculamos el precio de equilibrio sin comprobar???? EVGENII SHELIPOV 2021.10.02 15:07 #16395 MakarFX #:¡Ahí no está la red de arrastre! Debería ser así: si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre ¿De dónde proceden estos datos? OrderOpenPrice Devuelve el precio de apertura de la orden seleccionada dobleOrderOpenPrice(); Nota: El pedido debe ser preseleccionado mediante la función OrderSelect(). Sí, he pensado en eso y ya lo has escrito Tretyakov Rostyslav 2021.10.02 15:22 #16396 EVGENII SHELIPOV #:¡¡¡¡Buenas tardes Makar!!!! Según tengo entendido, esta es la línea en cuestión. En este caso una orden de compra: Makar si pudieras explicar con más detalle Tienes un grupo de órdenes, defines un punto de equilibrio y creas una línea, ¡y esto es mejor hacerlo como una función separada! avg_price = NormalizeDouble(price / order_lots, Digits); { ObjectDelete(0, "AveragePriceLine"); ObjectCreate(0,"AveragePriceLine" ,OBJ_HLINE, 0, 0, avg_price); ObjectSet("AveragePriceLine",OBJPROP_COLOR, Magenta); } A continuación, tiene el valor de la ganancia en pips que desea obtener y añadir / restar a / de avg_price if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits); if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); Y luego una función de arrastre separada para comprar: si BID > avg_price = OrderModify() para ventas: si avg < avg_price = OrderModify() Lamentablemente en su código no veo acciones lógicas (subjetivamente) Discusión sobre el artículo FOREX - Tendencias, previsiones necesito consejo de un Tretyakov Rostyslav 2021.10.02 15:33 #16397 EVGENII SHELIPOV #:Eso es lo que estaba pensando y ya has escrito. Separe las funciones para que le resulte más fácil navegar. Este es un ejemplo de OnTick() //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1) { CloseOrder(); } sl = MathMax(Stoploss, MarketInfo(_Symbol, MODE_STOPLEVEL)) * Point(); SL = NormalizeDouble(sl*Point(),Digits); tp = MathMax(Takeprofit, MarketInfo(_Symbol, MODE_STOPLEVEL)) * Point(); TP = NormalizeDouble(tp*Point(),Digits); //--- if(CountOrders()==0&&ObjectGetInteger(0,"lab_Button",OBJPROP_STATE)) { if(TradeSignal()>=0) { SendOrder(TradeSignal()); } } //--- if (!IsTradeAllowed()) {DrawLABEL("lab_Торговля",0,0,0,clrRed,"Торговля запрещена"); return;} else {DrawLABEL("lab_Торговля",0,0,0,clrLime,"Торговля разрешена");} } //+------------------------------------------------------------------+ Como puede ver, sólo hay llamadas a funciones EVGENII SHELIPOV 2021.10.02 17:20 #16398 MakarFX #:Separe las funciones para facilitar la navegación. Este es un ejemplo de OnTick() Como puede ver, sólo hay llamadas a funciones. Gracias, Makar. Concentraré mis pensamientos y pensaré así Tretyakov Rostyslav 2021.10.02 17:33 #16399 EVGENII SHELIPOV #:Gracias, Makar. Pondré en común mis ideas y pensaré en esa dirección. (Habla) Анатолий Железняк 2021.10.02 17:57 #16400 Pregunta: ¿Cómo puedo conseguir una orden de retirada de la custodia del EA? Tal vez ya hay algunas capturas de pantalla o funciones de mt4 que no conozco. Por favor, ilumíname. No tengo ningún afán y posibilidades de estudiar mql 3, 4, 5 etc. ¿Puede alguien ayudarme con Cualquier pregunta de novato, El mercado. Preguntas, problemas 1...163316341635163616371638163916401641164216431644164516461647...1954 Nuevo comentario
¡¡¡Buenos días a todos!!!
Estoy escribiendo código para un EA para Trailing Stop de órdenes de grupo a partir del precio medio de una parrilla de órdenes.
No hay errores en el registro, pero la red de arrastre tampoco funciona. Aquí está el código, por favor, sugiera dónde está el error. Gracias.
¡La red de arrastre está en el lugar equivocado!
Debería ser algo así
¡Si el precio de equilibrio+beneficio-tral! = TakeProfit, ¡comienza el arrastre!
¿De dónde proceden estos datos?
OrderOpenPrice
Devuelve el precio de apertura de la orden seleccionada
dobleOrderOpenPrice();
Nota:
El pedido debe ser preseleccionado mediante la función OrderSelect().
Gracias).
¡Ahí no está la red de arrastre!
Debería ser así:
si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre
¡¡¡¡Buenas tardes Makar!!!!
Según tengo entendido, esta es la línea en cuestión. En este caso una orden de compra:
Makar si pudieras explicar con más detalle
¡Ahí no está la red de arrastre!
Debería ser así:
si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre
¿De dónde proceden estos datos?
Makar, hoy estás hablando en clave.
Puede haber otra pregunta por la que calculamos el precio de equilibrio sin comprobar????
¡Ahí no está la red de arrastre!
Debería ser así:
si el precio de equilibrio+beneficio-tral! = TakeProfit ejecuta la red de arrastre
¿De dónde proceden estos datos?
OrderOpenPrice
Devuelve el precio de apertura de la orden seleccionada
dobleOrderOpenPrice();
Nota:
El pedido debe ser preseleccionado mediante la función OrderSelect().
Sí, he pensado en eso y ya lo has escrito
¡¡¡¡Buenas tardes Makar!!!!
Según tengo entendido, esta es la línea en cuestión. En este caso una orden de compra:
Makar si pudieras explicar con más detalle
Tienes un grupo de órdenes, defines un punto de equilibrio y creas una línea, ¡y esto es mejor hacerlo como una función separada!
A continuación, tiene el valor de la ganancia en pips que desea obtener y añadir / restar a / de avg_price
Y luego una función de arrastre separada
para comprar: si BID > avg_price = OrderModify()
para ventas: si avg < avg_price = OrderModify()
Lamentablemente en su código no veo acciones lógicas (subjetivamente)
Eso es lo que estaba pensando y ya has escrito.
Separe las funciones para que le resulte más fácil navegar.
Este es un ejemplo de OnTick()
Como puede ver, sólo hay llamadas a funciones
Separe las funciones para facilitar la navegación.
Este es un ejemplo de OnTick()
Como puede ver, sólo hay llamadas a funciones.
Gracias, Makar. Concentraré mis pensamientos y pensaré así
Gracias, Makar. Pondré en común mis ideas y pensaré en esa dirección.