EA no se ejecuta en múltiples pares, necesita ayuda - página 4

 
whroeder1 2016.12.14 03:35| 74.162.37.113ban ES
Keith Watford: Hace un bucle con las órdenes abiertas y sólo cuenta las operaciones que tienen el número mágico del EA y el símbolo del gráfico
Exacto, y eso no es lo que hace tu último post.
 
He borrado tu otro tema ya que era el mismo tema que este. He copiado el comentario de WHRoeder y lo he pegado aquí antes de borrarlo
 
Keith Watford:
He borrado tu otro tema ya que era el mismo tema que este. He copiado el comentario de WHRoeder y lo he pegado aquí antes de borrarlo
Vale, eso está bien, Entonces para el bucle, ¿debería enmarcarse de forma similar a la que tengo para el closeorder, y si es así debería hacer que el programa cuente hacia arriba o hacia abajo las órdenes?
 

   int buy_count=0;
   int sell_count=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            buy_count++;
           }
         if(OrderType()==OP_SELL)
           {
            sell_count++;
           }
        }
     }

Algo así

Siempre cuento hacia atrás a menos que tenga una razón específica para no hacerlo.

 
  1. Ahora tiene un bucle OrderSelect que filtra por MN y símbolo.
  2. Ahora, ¿con qué MN abre las operaciones?
 
Matt_Townsend:
Bien, eso está bien, así que para el bucle, ¿debería estar enmarcado de forma similar a la que tengo para el cierre de órdenes, y si es así debería hacer que el programa cuente hacia arriba o hacia abajo las órdenes?
Así que ahora tengo una función de bucle tanto en mi función de cierre de órdenes como en la función de finalización de órdenes, pero todavía no está operando de forma independiente. Aunque sigue abriendo operaciones y cerrando en los parámetros establecidos, como puedo ver en el probador de estrategias, aunque no funciona en múltiples gráficos en una demo en vivo.
 
Matt_Townsend:
Así que ahora tengo una función de bucle en mi función de cierre de la orden y la función ordersend, pero todavía no es el comercio de forma independiente. Aunque sigue abriendo operaciones y cerrando en los parámetros establecidos, como puedo ver en el probador de estrategias, aunque no funciona en múltiples gráficos en una demo en vivo.

¿Cada EA tiene un número mágico diferente?

Muestre sus bucles que está utilizando ahora.

 
Keith Watford:

¿Cada EA tiene un número mágico diferente?

Muestre los bucles que está utilizando ahora.

for(int i=OrdersTotal();i<=0;i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
    //--- Check for buy order
       if(fastma > slowma)
        {
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
            Print("Buy order opened :", OrderOpenPrice());
         else
            Print("Order failed to open : ", GetLastError());      
         return(0);
        }
     //--- Check for sell order          
       if(fastma < slowma)
        {
         if(OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",MagicNumber,0,Red))
            Print("Order opened : ", OrderOpenPrice());                
         else
            Print("Order failed to open : ", GetLastError());
         return(0);        
        }
        break;
      }

Aquí está el bucle ordersend

Como wll como tengo el MN como un int externo, así que puedo cambiarlo en cada gráfico que puse la EA en.
 
Primero tiene
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
que es correcto
Pero tienes
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
Que no lo era. Y has ignorado mi pregunta.


Luego cambias tranquilamente el envío a
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Que ahora es correcto.
Pero silenciosamente rompes el bucle de selección.
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Que no lo es.

En presencia de múltiples órdenes (un EA múltiples gráficos, múltiples EA's, comercio manual)
 
whroeder1:
Primero tiene
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
que es correcto
Pero tienes
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
Que no lo era.

Entonces cambias tranquilamente el envío a
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Que es correcto
Y rompe el bucle de selección.
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Que no lo es.
Entonces, ¿no debería tener un Continue o Break en el bucle en absoluto?