Resultados 1 al 6 de 6

Tema: Contando órdenes múltiples con números mágicos múltiples en un EA

  1. #1
    OK, así que he podido crear un EA que puede manejar módulos simultáneos con diferentes parámetros comerciales que pueden ejecutarse al mismo tiempo o activarse y desactivarse. Aunque estoy corriendo en una pared con un manejo de conteo de pedidos.

    Quiero que el EA cuente MaxTotalPositions contra Total Positions para ModuleA y Total Positions para ModuleB. El EA no debe exceder el Total máximo (A = B), pero tampoco debe exceder TotalforModuleA y B respectivamente. Por ejemplo, si el MaxTotal es 2, y el total de ModuleA y B es uno cada uno, entonces no puede exceder de 2. Esta parte es fácil. Sin embargo, si el Máx es 2 y el Módulo A es 1, todavía se está negociando hasta 2. He intentado llamar a las órdenes por magia para que sea más fácil de contar, pero en algún lugar está superando el MaxPerModule. ¿Alguien tiene alguna idea de cómo abordar esto? El código se está compilando correctamente, por lo que no hay errores de sintaxis. Aquí está la parte del código:

    ///////////////////////////////////////////////////////////////////////////////

    TotalMaxPositions se declara globalmente en la parte superior de la EA como una variable externa

    extern total TotalMaxPositions = 2;

    ////////////////////////////////////////////////////////////////////////////////////

    //------------------------------------------------ -
    //MAX POSICIONES ORDEN CUENTA
    //------------------------------------------------ -

    int TotalCurrentOrders;
    cuenta int = 0; cuenta int = 0; int total; int totalB;

    TotalCurrentOrders = OrdersTotal ();
    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

    más

    if (TotalCurrentOrders lt; TotalMaxPositions)

    {

    if (countA gt; = MaxPositionsA) return (0);
    if (countA lt; MaxPositionsA)
    para (int posA = 0; posA lt; totalA; posA )
    {
    si (OrderSelect (posA, SELECT_BY_POS) == falso) continúa;
    if (OrderMagicNumber () == MagicA) countA ;
    }

    if (countB gt; = MaxPositionsB) return (0);
    if (countB lt; MaxPositionsB)
    para (int posB = 0; posB lt; totalB; posB )
    {
    si (OrderSelect (posB, SELECT_BY_POS) == falso) continúa;
    if (OrderMagicNumber () == MagicB) countB ;
    }

    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

    }

  2.                         
    Publicidad
  3. #2

    Cita Iniciado por ;
    OK, así que he podido crear un EA que puede manejar módulos simultáneos con diferentes parámetros comerciales que pueden ejecutarse al mismo tiempo o activarse y desactivarse. Aunque estoy corriendo en una pared con un manejo de conteo de pedidos. Quiero que el EA cuente MaxTotalPositions contra Total Positions para ModuleA y Total Positions para ModuleB. El EA no debe exceder el Total máximo (A = B), pero tampoco debe exceder TotalforModuleA y B respectivamente. Por ejemplo, si el MaxTotal es 2, y el total de ModuleA y B es uno cada uno, entonces no puede exceder de 2. Este ...
    ¿Por qué es esto un doble? Código insertado extern doble TotalMaxPositions = 2; Si intentas comparar un int con un doble, puedes encontrar que nunca es igual, incluso si lo es. . .

  4. #3

    Cita Iniciado por ;
    TotalCurrentOrders = OrdersTotal (); if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
    Entonces
    Cita Iniciado por ;
    else if (TotalCurrentOrders lt; TotalMaxPositions)
    Luego tiene un código que cuenta, pero no parece hacer nada con el resultado seguido de
    Cita Iniciado por ;
    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
    que ya ha probado (primera cita) y sabe que es falso, de lo contrario, el ELSE no se habría llevado a cabo. No hay nada en el código para cambiar los valores de TotalCurrentOrders o TotalMaxPositions.

  5. #4

    Cita Iniciado por ;
    {quote} ¿Por qué es esto un doble? extern total TotalMaxPositions = 2; Si intentas comparar un int con un doble, puedes encontrar que nunca es igual, incluso si lo es. . .
    Es un doble porque era demasiado perezoso para cambiarlo. Por defecto, todos mis externos son dobles y luego los cambio si no se compilan. Acabo de terminar esos múltiples EA dentro de un concepto de EA y dejé espacio para más de 10 variables más SL TP y un interruptor de apagado y apagado. Ahora me vuelvo loco con mis egies dentro de un EA. Es más fácil para mí probar las ideas de esa manera. Gracias por su aportación en el último hilo de EA, con su respuesta, puede hacer que un EA haga lo que sea que haya tomado en su palabra. Tendré en cuenta su comentario sobre el doble frente al int e incluso probarlo, pero creo que la respuesta de Gumrai sobre no agregar o restar el TotalOrders en cada módulo es lo que debo ver.

  6. #5

    Cita Iniciado por ;
    {quote} Entonces {quote} No hay nada en el código para cambiar los valores de TotalCurrentOrders o TotalMaxPositions.
    Gracias tiene sentido completo Voy a echar un vistazo a eso. Supongo que lo hago de la misma manera que para (int posB = 0; posB lt; totalB; posB ) {if (OrderSelect (posB, SELECT_BY_POS) == false) continue; if (OrderMagicNumber () == MagicB) countB ; } Pero modificando los valores de lo que tengo que aceptar también. El código es más complicado de lo que pensaba pero * debería * poder ejecutarse con el cambio en la lógica (al menos eso es lo que espero). Gracias por la sugerencia, intentaré experimentar con ella.

  7. #6
    ¿Alguna vez obtuviste un resultado en esto? Estoy haciendo algo realmente similar. Tengo 4 órdenes BuyStopSellStop que se activan en función de ciertos parámetros y tengo modificadores de orden individuales para cada orden que no puedo conseguir que los modifiquen por número de boleto (el problema es que cada vez que modifiques el orden en el que cambia el identificador del ticket, que a su vez mata el orden de modificación en la segunda vez, trata de cambiarlo, así que tengo que usar números mágicos. Tenga a esa parte del EA funcionando bien pero parece que no puedo limitar la cantidad de pedidos por Magic Number por su cuenta. Estaba usando el constructor VTS de Iexpertadvisor porque es muy fácil de visualizar lo que estás haciendo y tiene su propio sistema para limitar los pedidos, pero no puedes agregarle varios números mágicos. No estoy seguro de dónde ir con eso desde aquí realmente .......... También crearlo y tratar de hacerlo utilizable dentro de Iexpertadvisor VTS es aún más difícil.

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.