Necesita ayuda con el código OrderModify
Necesita ayuda con el código OrderModify

 

Publi

Resultados 1 al 5 de 5

Tema: Necesita ayuda con el código OrderModify

  1. #1
    Hola, no sé mucho de codificación pero ya hice algo a partir de ejemplos de
    http://book.mql4.com/EA que fue desactivado por mi corredor,
    https://www.forosforex.com/trading-d...ok-review.html

    pero estoy decidido a que todo funcione como antes, o el cierre que pueda lograr, así que lo que necesito es verificar las órdenes cuando las operaciones abiertas sean verdaderas.

    Código insertado int start { if( _SellTicket gt; 0 || _BuyTicket gt; 0) { _VerifyOrders() }/el resto del código...
    entonces el código para verificar será:
    Código insertado int _VerifyOrders() { int _index; _Pedidos totales; _TotalOrders = OrdersTotal(): for(_index=_TotalOrders-1;_index gt;=0;_index--)/bucle para órdenes abiertas if( OrderSymbol() == Symbol() OrderMagicNumber() == _MagicNumber ( OrderType() == OP_SELL || OrderType() == OP_BUY))/lt;-- es la orden una orden de parada o de compra {/define el tipo, el precio de apertura y las paradas para el ticket actual int _type = OrderType(); doble _sl=OrderStopLoss(); double _tp=OrderTakeProfit(); int _stop;_profit;_open; while(True) { switch(_type) { caso 0:/orden de compra _open = OrderOpenPrice(); _stop = _open-50*Punto; _beneficio = _abierto 50*Punto; if( OrderStopLoss() lt; _stop ) { OrderModify(OrderTicket(),_open,_stop,_profit); } caso 1:/orden de venta _stop = OrderOpenPrice() 50*Point; _profit = OrderOpenPrice()-50*Punto; if( OrderStopLoss() gt; _stop ) { OrderModify(OrderTicket(),_open,_stop,_profit); } } } }
    ¿Será esto correcto? ¿Esto cambiará todas las órdenes abiertas que tengo solo si el stop es mayor que 50?
    También me gustaría eliminar el ticket de pedido específico si la modificación devuelve un error, ¿alguna ayuda?

  2.                         
    Publicidad
  3. #2

  4. #3

    Cita Iniciado por ;
    Hola, no sé mucho de codificación pero ya hice algo a partir de ejemplos de
    http://book.mql4.com/EA que fue desactivado por mi corredor,
    https://www.forosforex.com/trading-d...ok-review.htmlpero estoy decidido a que todo funcione como antes, o lo más cerca posible, así que lo que necesito es
    Este . . . Código insertado int _stop;_profit;_open; . . . debería ser esto. . . Código insertado doble _stop, _profit, _open; Todos los precios son dobles. . . Tu bucle while (verdadero), ¿para qué sirve? ¿Cómo saldrá del bucle? No creo que lo necesites. . . su bucle for recorre todas las órdenes abiertas por usted. No puede eliminar un ticket, puede eliminar una orden pendiente, puede cerrar una orden de mercado abierto.

  5. #4
    Gracias por la respuesta, me equivoqué un poco, lo siento. entonces... Código insertado int _verifyOrders() { string _symb=Symbol();/------------------------------------------------ ------------------------------- 2 -- para(int a=1; alt;=TotalPedidos(); a )/Búsqueda cíclica en pedidos { if (OrderSelect(a-1,SELECT_BY_POS)==true)/Si el siguiente está disponible {/Análisis de pedidos: int _type=OrderType();/Tipo de orden if(OrderSymbol()!=_symb || _typegt;1 ) continuar;/La orden no es nuestra double SL=OrderStopLoss();/SL del pedido seleccionado/----------------------------------------- ----------------------- 3 -- while(true)/Ciclo de modificación { int mTicket;/billete doble _sl, _tp; double _open = PedidoPrecioApertura();/Precio de apertura para la orden seleccionada double _bstop = _open-50*Point;/nueva parada para caso de compra double _sstop = _open 50*Point;/nueva parada para caso de venta/----------------------------------------- -------------------------- 4 -- bool Modificar=falso;/No debe modificarse switch(_type)/Por tipo de orden { case 0 :/Compra de orden - si el stop es mayor ejemplo: open: 1,32350, el stop debe ser 1,32300 si es 1,32290 entonces modifíquelo si ( SL lt; _bstop ) { mTicket=TicketPedido();/no sé si necesito esto... _sl = _bstop;/nueva parada _tp = _open 100*Point;/nueva ganancia Modify=true; } romper;/Salir de 'cambiar'/para vender caso 1: if( SL gt; _sstop ) { mTicket=OrderTicket(); _sl = _bparada; _tp = _open-100*Punto; Modificar=verdadero; } }/Fin del 'cambio' if (Modify==false)/Si no se modifica { break; }/Salir 'mientras'/----------------------------------------- -------------------------- 5 -- Alerta (Modificación:,mTicket,. Esperando respuesta...); bool Ans=OrderModify(mTicket,_open,_sl,_tp,0);//¡Modifícalo!/------------------------------------------------ ------------------- 6 -- if (Respuesta==verdadero)/¡Entendido! { Alerta (Orden, mTicket, se modifica );romper;/Del ciclo de modificación. }/----------------------------------------------- -------------------- 7 -- int Error=GetLastError();/Error /creo que el cierre de orden debería estar aquí, necesitará: ticket, lotes, oferta o demanda según el tipo, ¿verdad? break;/Desde el ciclo de modificación }/Fin del ciclo de modificación/----- -------------------------------------------------- --------------- 8 -- }/Análisis de fin de orden } } Creo que ahora está un poco mejor

  6. #5

    Cita Iniciado por ;
    alguien ?
    ¿Por qué cambiaste completamente tu código en lugar de arreglar el que ya tenías? copiar pegar pegar y esperar?

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.