Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 642

 
paylesss:

¡Gracias! ¡Reiniciar el ordenador ayudó! Es una pena, he estado sentado aquí toda la mañana))

Ahora lo más relevante es la construcción de la terminal y sería deseable recordar lo que has hecho para que las variables globales fallen. Si es posible repetir la situación, sería estupendo.

 
Kirill Andreev:

escribió un búho, pero por alguna razón el trailing stop no funciona... ¿Cuál podría ser la razón?

para que funcione hay que ponerlo en OnTick
 
Vladislav Andruschenko:
Hay que ponerlo en OnTick para que funcione.
¡¡¡Gracias, lo probaré!!!
 

Hola.

Por favor, ayuda, quiero modificar todas las posiciones excepto la última, la de "joven". ¿Dónde añado o quito uno?


 int i; total = OrdersTotal();
          for(i = 0; i < total; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }
 
mila.com:

Hola.

Por favor, ayuda, quiero modificar todas las posiciones excepto la última, la de "joven". ¿Dónde añado o quito uno?



 int i; total = OrdersTotal();
          for(i = 0; i < total-1; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }


 
-Aleks-:
int i; total = OrdersTotal();
          for(i = 0; i < total-1; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }

¿Está seguro de que ha mostrado una forma fiable de perder la última posición de la lista?

Si negocia de forma realista, ¿no le preocupa que la clasificación se convierta de repente en una dependencia?

Aún así, IMHO, necesitamos dos ciclos aquí - en el primero buscamos la posición más fresca por la hora de apertura, en el segundo modificamos todas excepto la que se encontró en el primer ciclo.

 
mila.com:

Hola.

Por favor, ayuda, quiero modificar todas las posiciones excepto la última, la de "joven". ¿Dónde añado o quito uno?


Yo lo haría.

/********************Script program start function********************/
void OnStart()
{
 int i, t1, t2, clTicket, total = OrdersTotal();
  datetime d1, d2;
   double v1, v2, clVolume;
    for(i = total-1; i > 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS))
       {
        t1 = OrderTicket();
         d1 = OrderOpenTime();
        v1 = OrderLots();
       }
      else continue;
        if(OrderSelect(i-1, SELECT_BY_POS))
         {
          t2 = OrderTicket();
           d2 = OrderOpenTime();
          v2 = OrderLots();
         }
        else continue;
        clTicket = d1 > d2 ? t1 : t2;
       clVolume = d1 > d2 ? v1 : v2;
      if(!OrderClose(clTicket, clVolume, OrderClosePrice(), 100)) // закрывает независимо от типа ордера OP_BUY или OP_SELL
       Print("фигня кака-та");
    }
}/********************************************************************/

No lo tengo marcado y no puedo decidir si tendré un "hueco" en mi lista de pedidos cuando cierre el siguiente.

Si alguien es capaz de explicar la posibilidad de que aparezca ese "hueco", se lo agradecería...

Como seguro, hemos insertado otra continuación; si hay un hueco, se saltará una orden sin más. A mí me parece que sí.

 
Alexey Viktorov:

Yo lo haría.

Lamentablemente, esto no se ha probado y no puedo averiguar si hay un "agujero" en la lista de pedidos después de que se cierre el siguiente pedido.

Si alguien es capaz de explicar la posibilidad de que aparezca ese "hueco", se lo agradecería...

Como seguro, se inserta otra continuación; si hay un hueco, simplemente se saltará una orden. A mí me parece que es así.

Originalmente, la pregunta se refería a saltarse la última orden. Y ahí es donde se empieza.

Tienes que hacerlo así:

for(int i = total-2; i >= 0; i--)

Entonces no habrá huecos después de la eliminación y se saltará la orden más reciente.

 
Alexey Kozitsyn:

La pregunta original era saltarse la última orden. Aquí es donde empiezas.

Tienes que hacerlo así:

Entonces no habrá saltos después de la eliminación y se saltará el pedido más reciente.

No es el último de la lista, pero sí el más "joven" por tiempo.

Aunque yo soy igual de desconsiderado. La pregunta es sobre la modificación y estoy escribiendo cerca... Y si simplemente lo modificas, no habrá huecos en la lista de pedidos... Sólo debe añadir variables y asignarles valores, y DEBE comprobar los parámetros para evitar el error nº 1. Bueno, Mila puede manejarlo ella misma.

 
Alexey Kozitsyn:

La pregunta original era saltarse la última orden. Aquí es donde empiezas.

Tienes que hacerlo así:

for(int i = total-2; i >= 0; i--)

Entonces no habrá saltos tras la eliminación y se saltará el pedido más reciente.

¿Cómo puede estar seguro de que no habrá una dependencia de la ordenación, y de que se perderá el orden equivocado?

Una vez más, para encontrar exactamente el último pedido, hay que identificarlo por su hora de apertura, no por su posición en la lista.

Razón de la queja: