Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 856

 
Artyom Trishkin:
¿Cómo se abre? ¿Cuál es el motivo de la apertura?

La razón para abrir una posición en el euro y la razón para abrir una posición en la libra. Obviamente, debe ser de alguna manera escrito en el código del Euro Expert Advisor. Pero cómo - no lo entiendo.

 
novichok2018:

La razón para abrir una posición en el euro y la razón para abrir una posición en la libra. Obviamente, debe ser de alguna manera escrito en el código del Euro Expert Advisor. Pero cómo - no lo entiendo.

Se realiza mediante el habitual if() con comprobación de comentarios. Y en los comentarios del pedido, insertamos la hora de apertura o el ticket del pedido a partir del cual se abre el segundo pedido.
 
Alexandr Sokolov:
El código se implementa mediante el habitual if() con comprobación de comentarios. En el comentario de la orden, debe insertar la hora de apertura o el ticket de la orden a partir del cual se abre la segunda orden.

¿Cómo se puede referenciar el if() del código del EA del euro con el código del EA de la libra? ¿Cómo puedo ver la posición de la libra en el código del euro?

 
novichok2018:

¿Cómo se puede referenciar el if() del código del EA del euro con el código del EA de la libra? ¿Cómo ve la posición de la libra en el código del euro?

Tú mismo estás complicando las cosas. Basta con recorrer los pedidos en euros y comparar cada uno de ellos con todos los pedidos en libras. Y si ninguno de los comentarios coincide, entonces se abre una orden de libras con el comentario donde el billete o la hora de apertura de la orden de euros

 

¿Podría explicarme cómo transferir los resultados de la optimización del EA en el probador de MT5, al EA en el panel de gráficos de MT5? ¿Cómo salvarlos?

En el manual y en Google no lo encuentro todavía...

MUCHAS GRACIAS.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Alexandr Sokolov:

Tú mismo estás complicando las cosas. Basta con recorrer los pedidos en euros y comparar cada uno de ellos con todos los pedidos en libras. Y si ninguno de los comentarios coincide, entonces se abre una orden de libras con el comentario del billete o la hora de apertura de una orden en el euro.

Para ser sincero, no entiendo nada. La situación es la siguiente: no hay órdenes sobre el euro ni sobre la libra. Y tenemos condiciones para abrir una posición en la libra y la posición se abre. La apertura de la posición en la libra debería convertirse en una señal para abrir una posición en el euro y la posición debería abrirse. Entonces, ¿qué debo hacer en el ciclo? Y no entiendo nada de los comentarios. ¿Puedes escribir un código de ejemplo para ayudarme a entenderlo?

Y en el código de la libra, cuando aparecen las condiciones, ¿podemos abrir dos posiciones, una para la libra y otra para el euro, especificando el símbolo requerido en OrderSend? ¿Funcionará esto?

 
novichok2018:

Para ser sincero, no entiendo nada. La situación es la siguiente: no hay órdenes sobre el euro ni sobre la libra. Y hay condiciones para abrir una posición en la libra y la posición se ha abierto. La apertura de la posición en la libra debería desencadenar la apertura de la posición en el euro y la posición debería abrirse. Entonces, ¿qué debo hacer en el ciclo? Y no entiendo nada de los comentarios. ¿Puedes escribir un código de ejemplo para que lo entienda?

int ticket;
for(int  i = 0; i < OrdersTotal(); i++)
  {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderMagicNumber() == id_number1 && OrderSymbol() == "GBPUSD")
        {
         if(SecondExpert(OrderTicket()) == false)
           {
            ticket = OrderSend(...);
           };
        };
     };
  };

//----------------------------------------------------------------------------------------------------------------------

bool SecondExpert(int ticket)
  {
   bool se = false;
   for(int i = 0; i < OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
        {
         if(OrderMagicNumber() == id_number2 && OrderSymbol() == "EURUSD")
           {
            if(OrderComment() == (string)ticket)
              {
               se = true; break;
              };
           };
        };
     };
  //-----------------------------------------------------------------
   return(se);
  }


Así lo veo yo).

 
novichok2018:

Para ser sincero, no he entendido nada. La situación es la siguiente: no hay órdenes ni sobre el euro ni sobre la libra. Y tenemos condiciones para abrir una posición en la libra y la posición se ha abierto. La apertura de la posición en la libra debería desencadenar la apertura de la posición en el euro y la posición debería abrirse. Entonces, ¿qué debo hacer en el ciclo? Y no entiendo nada de los comentarios. ¿Puedes escribir un código de ejemplo para que lo entienda?

Si está en un EA debería ser algo así

if(условие для EURUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }

if(условие для GBPUSD)
 {
  OrderSend("GBPUSD", ... );
  OrderSend("EURUSD", ... );
 }

O incluso más simple

if(условие для EURUSD || условие для GBPUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }
 
Alexey Viktorov:

Si está en un EA debería ser algo así

O incluso más simple

Sí, lo imaginé de alguna manera, pero no puedo comprobar el trabajo en el historial, porque la apertura de una posición en EUR debería tener lugar debido a la condición para GBP y no se refleja en el código para EUR, y el historial se representa en EUR. De ahí la incertidumbre sobre la corrección de la decisión.

 
novichok2018:

Sí, así es como me lo imaginaba, pero no puedo comprobar si funciona en el historial, porque la apertura de una posición en el euro debería producirse por la condición para la libra y no se refleja en el código para el euro, mientras que el historial se muestra en el euro. De ahí la incertidumbre sobre la corrección de la decisión.

La funciónbool ExistPositions() de Igor Kim devuelve la bandera de existencia de la posición, es demasiado difícil para mí adaptarla a mis condiciones específicas. Pero no creo que se pruebe en la historia.

Si nadie tiene un código, realmente probado en el mundo real, para mostrarme, lo probaré científicamente. Gracias.

Razón de la queja: