¡¡¡AYUDA A QUIEN PUEDA!!! - página 4

 

Me gustaría conocer un Asesor Experto como este... abre 2 órdenes pendientes diferentes y cierra el resto cuando una de ellas se dispara...

antes había un código base doble pendiente 2 llamado ... ahora no hay ...

 
Techno:
lo que quiere decir es que tiene todas las operaciones de todos los pedidos mezcladas en un bucle, con una iteración que afecta significativamente al resultado de la otra, y no puede entender por qué no funciona todo.

Así que tenemos que separar las chuletas de las moscas primero... No había pensado en ese caos :-)
 
sllawa3:

Me gustaría conocer un Asesor Experto como este... abre 2 órdenes pendientes diferentes y cierra el resto cuando una de ellas se dispara...

había un 2 pendiente en el código fue llamado ... ya no ...


Recorrer las órdenes abiertas por OrderType() y establecer el contador:

int count=0;

if(OrderType()<2) count++;

if(count==0)

{ aquí hay un selector - tan pronto como se encuentre OrderType()>1 - bórrelo: OrderDelete(.....); si el borrado es exitoso (ver documentación), active: OrderSend(...); } ¡Elemental, Watson!

Te he entendido un poco mal: if(OrdersTotal()==0) {coloca 2 órdenes pendientes} y luego comprueba con el selector de tipo de orden: una vez que hayas encontrado una <2, busca la segunda >2 y elimínala

 

Aquí hay un bucle para comprobar el estado de los pedidos, después de eso hacer comprobaciones y cierres y modificaciones, después de cada acción retorna el operador para que el bucle actualice el estado de los pedidos

for(int i=0;i<OrdersTotal();i++)
        {
          if(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA)
          switch(OrderType())
          {
          case 0:DB=1;break;
          case 1:DS=1;break;
          case 4:ZB=1;break;
          case 5:ZS=1;break;
          }
        }
 
OK... entiendo que no me puedes ayudar... es inútil dar consejos hasta que lo vea de todas formas... buscaré uno similar (tampoco funciona con este ciclo de chequeo... todo es igual.... e incluso con varios bucles por operación...)
 
CUALQUIER BUCLE QUE NO SE INICIE MOSTRARÁ EL ÚLTIMO VALOR DE LA VARIABLE... Y NO SE PONE EN MARCHA SI NO HAY ORDEN
 
sllawa3:
ok... me imaginé que no serías de mucha ayuda... de todas formas es inútil dar consejos hasta que lo vea... buscaré uno similar ( tampoco funciona con este bucle de comprobación... todo es igual.... e incluso con varios bucles por operación...)

Te has vuelto vago... escribe una función (o dos, si no sabes cómo) que devuelva el número de órdenes en el mercado (historial) según los parámetros dados: símbolo, mago, tipo de orden, es decir, en cualquier combinación...

entonces en cada tick (u otro marco de tiempo con el que comience el EA) se define el número de órdenes en el mercado y las órdenes pendientes y utilizando sus combinaciones se realizan las acciones requeridas...

mercado == 0 y órdenes pendientes == 0

mercado == 0 y órdenes pendientes == 2 no hacen nada

mercado == 1 y órdenes pendientes == 1 eliminar una orden pendiente

mercado == 1 y pausas == 0 cebo

no puedo creer que sea tan difícil de hacer ...


Lo siento. Es hora de olvidarse de la programación procedimental - usar funciones...

una variable guarda el último valor, es ridículo...

 

NO HAY NINGÚN PROBLEMA EN EL HISTORIAL, PERO ¿CÓMO PUEDO SABER SI ESTÁ ABIERTO O NO? SI EL SELECTOR MANTIENE EL ÚLTIMO VALOR HASTA QUE SE REINICIE...

ES DE MANTENIMIENTO.

 
sllawa3:
NO HAY NINGÚN PROBLEMA EN EL HISTORIAL, PERO ¿CÓMO PUEDO SABER SI ESTÁ ABIERTO O NO? SI EL SELECTOR MANTIENE EL ÚLTIMO VALOR HASTA QUE SE REINICIE...
ya te han dicho 5 veces cómo hacerlo 3 personas, si no lo entiendes, busca uno ya hecho, o haz que alguien lo escriba por ti
 
EL PROBLEMA NO ES SÓLO ESTE EA, SINO CUALQUIER EA... QUE HASTA QUE NO SE REINICIE EL SELECTOR (HASTA QUE APAREZCA LA ORDEN) TENDRÁ EL ÚLTIMO VALOR PEGADO