Pregunta de lógica sobre el código de salida comercial
Pregunta de lógica sobre el código de salida comercial

 

Publi

Resultados 1 al 5 de 5

Tema: Pregunta de lógica sobre el código de salida comercial

  1. #1
    ¿Qué enunciado lógico es preferible codificar?


    if (OrderType() == OP_BUY (iOpen(NULL,1,1) iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) )
    resultado = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red );

    o

    if (OrderType() == OP_BUY (iOpen(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3))
    (iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)))
    resultado = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red );


    Estoy usando el primero de arriba muy bien (al menos compila y ejecuta transacciones bien), pero me preguntaba si el segundo es mejor o se ejecutaría de manera diferente. ¿Alguna idea sobre las diferencias lógicas entre los dos?

  2.                         
    Publicidad
  3. #2
    ¿Por qué usa normalizeddouble para los precios? Es una tontería (¿por qué quiere normalizar oferta/demanda/precio de apertura de pedido/precio de cierre de pedido/etc.?), véase también
    http://forum.mql4.com/45425ver también
    http://forum.mql4.com/45425#564188si desea normalizar los precios, puede utilizar la siguiente función:/El precio de apertura de la orden pendiente debe ajustarse para que sea un múltiplo del tamaño del tick, no del punto, y en los metales no son iguales. Código insertado double NormalizePrice(símbolo de cadena, precio doble) { if (price==0.00000000) return(0.0); doble ts = MarketInfo(símbolo,MODE_TICKSIZE); return(MathRound(precio/ts)*ts ); } Lo mismo para los tamaños de lote:/El tamaño del lote debe ajustarse para que sea un múltiplo de lotstep, que puede no ser una potencia de diez en algunos corredores/vea también la función original de WHRoeder,
    http://forum.mql4.com/45425#564188, código insertado fxdaytrader double NormalizeLots(símbolo de cadena, lotes dobles) { if (MathAbs(lots)lt;MarketInfo(símbolo,MODE_MINLOT)) return(MarketInfo(símbolo,MODE_MINLOT)); if (MathAbs(lots)gt;MarketInfo(símbolo,MODE_MAXLOT)) return(MarketInfo(símbolo,MODE_MAXLOT)); doble ls = MarketInfo(símbolo,MODE_LOTSTEP); lotes=MathRound(lots/ls)*ls; return(MathMin(MarketInfo(símbolo,MODE_MAXLOT),Ma thMax(MarketInfo(símbolo,MODE_MINLOT),lotes)));/verifica si hay lotes gt;= min. lotes lt;= máx. lotes, fxdaytrader }//doble NormalizeLots(símbolo de cadena, lotes dobles) {

  4. #3

    Cita Iniciado por ;
    ¿Qué enunciado lógico es preferible codificar? if (OrderType() == OP_BUY (iOpen(NULL,1,1) iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) ) result = OrderClose( OrderTicket(), OrderLots( ), Oferta, 50, Rojo ); o si (OrderType() == OP_BUY (iOpen(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss),3)) (iClose(NULL,1,1) lt; NormalizeDouble(OrderOpenPrice()-StopLoss ),3))) resultado = OrderClose( OrderTicket(), OrderLots(), Bid, 50, Red ); Estoy usando el primero de arriba muy bien (al menos compila y ejecuta intercambios bien),...
    No creo que el primero funcione correctamente Personalmente, lo haría Código insertado si (OrderType()==OP_BUY MathMax(iOpen(NULL,1,1),iClose(NULL,1,1))lt; NormalizeDouble(OrderOpenPrice()-StopLoss,3) )

  5. #4

    Cita Iniciado por ;
    {quote} No creo que el primero funcione correctamente Personalmente, lo haría si (OrderType()==OP_BUY MathMax(iOpen(NULL,1,1),iClose(NULL,1,1))lt ;NormalizeDouble(OrderOpenPrice()-StopLoss,3) )
    El primero está funcionando en el comercio en vivo, pero todavía no estoy seguro de si realmente está comprobando ambos valores antes del cierre, pero se está compilando perfectamente y cerrando operaciones a los precios sugeridos. Solo necesito que espere y verifique ambos. Estoy tratando de eliminar posibles picos de precios erróneos solo en la apertura o el cierre de la barra, lo que crearía estragos con este EA que tiene múltiples posiciones abiertas. Su sugerencia de mathmax parece interesante. Puedo hacer una copia masiva, volver a pegar y probar con él. Pensándolo bien después de un minuto o dos, el mathmax no hará lo que quiero que haga. Quiero que verifique los valores dos veces en un minuto y que el precio esté por debajo o por debajo en ambas instancias, no solo en la instancia máxima. Gracias de todos modos por la sugerencia, supongo que tengo que intentar probar con mi segunda versión del código para ver las diferencias en las operaciones de salida.

  6. #5

    Cita Iniciado por ;
    ¿Por qué usa normalizeddouble para los precios? Es una tontería (¿por qué quiere normalizar oferta/demanda/precio de apertura de pedido/precio de cierre de pedido/etc.?), véase también
    http://forum.mql4.com/45425{
    Por lo que leo en las publicaciones creo que la sugerencia es normalizar antes de enviar pedidos. Hay razones por las que normalizaría un precio, por ejemplo, cuando el precio se calcula sobre precio variable. Creo que lo que está diciendo es que la normalización de la oferta/demanda/precio pura basada en el servidor es redundante. Pero si el cálculo del precio del EA es de oferta/demanda/apertura más una cantidad variable con demasiados decimales, normalizar al tamaño de lote/paso de lote equivalente para el bróker es la única forma de enviar la orden correctamente. Si me equivoco en mi lógica aquí, por favor hágamelo saber.

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.