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

 
SanNneK:
¿Puede decirme cuál es la condición, si el gráfico bajó aunque sea un punto, entonces todas las órdenes se cerraron?
La condición es menor o igual a. En ontik se asigna el precio de la oferta a una variable global. Si la oferta es menor o igual a la variable global, entonces cierra las órdenes pendientes. En caso contrario, la variable global es igual a la oferta.
 
Buenas noches. ¿Podría darme el código para el cierre de emergencia de todas las operaciones que se acaban de abrir?
 
¿Pueden decirme cómo puedo cerrar todas las posiciones que quiero al mismo tiempo?
 

De este modo, podrá cerrar todas las operaciones abiertas (MQL4):

for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()<=OP_SELL)
      {
      OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),(int)SymbolInfoInteger(OrderSymbol(),SYMBOL_SPREAD),OrderType()==OP_SELL?clrRed:clrBlue);
      }
   }
Y si quiere hacerlo de forma selectiva, tiene que describir la condición de selección.
 
О.
 
Aleksei Stepanenko:

De este modo, podrá cerrar todas las operaciones abiertas (MQL4):

Y si quiere hacerlo de forma selectiva, tiene que describir la condición de selección.

Gracias

 
Igor Makanu:

2020.09.13 08:33:57.508 tst (EURUSD,H1) v1 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v2 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v3 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v4 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v5 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v6 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v7 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v8 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v9 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v10 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v11 = Valor_11

¿Es posible hacer variables predefinidas en una función de plantilla para que no sea posible especificar todo al llamarla? Una asignación simple seguirá dando un error si no se especifican todas las variables.

#define  PRINT(VAL) Print(#VAL," = ",VAL)
template <typename T1, typename T2, typename T3, typename T4, typename T5,
          typename T6, typename T7, typename T8, typename T9, typename T10,typename T11>
void func(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
          T6 v6, T7 v7, T8 v8, T9 v9, T10 v10,T11 v11="")//не помогло, но ошибку не вызвало
{
   string s1 = (string) v1; PRINT(v1);
   string s2 = (string) v2; PRINT(v2);
   string s3 = (string) v3; PRINT(v3);
   string s4 = (string) v4; PRINT(v4);
   string s5 = (string) v5; PRINT(v5);
   string s6 = (string) v6; PRINT(v6);
   string s7 = (string) v7; PRINT(v7);
   string s8 = (string) v8; PRINT(v8);
   string s9 = (string) v9; PRINT(v9);
   string s10 = (string) v10; PRINT(v10);
   string s11 = (string) v11; PRINT(v11);
   
   printF( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11); // не получается, дает несоответствие типов.
   
}
//+------------------------------------------------------------------+
void OnStart()
{
   func(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f, 777,"");// любой тип, но нужно указывать все 
                                                                             //переменные
   printF(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f); //несоответствие типов, но можно не все 
                                                                        //переменные указывать
}
//+------------------------------------------------------------------+
void printF(string v1="", string v2="", string v3="", string v4="", string v5="",
          string v6="", string v7="", string v8="", string v9="", string v10="",string v11="")
{
Print( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11);
}
Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 
Valeriy Yastremskiy:

¿Es posible hacer variables predefinidas en una función de plantilla?

No, no puede.

No puedo explicar cómo funcionan las plantillas de .... a grandes rasgos, hasta que no se llama a dicha función, el compilador no sabe nada de su existencia (a menudo, ni siquiera hay errores de compilación si no hay llamada)

entonces se llama a dicha función de plantilla y el compilador rellena los tipos necesarios y sólo entonces comprueba que todo funcione correctamente

y luego haces otra llamada a la plantilla con diferentes tipos de parámetros - y el compilador crea una nueva función, es decir, otra, es decir, como si escribieras 2 funciones, que hacen lo mismo, pero con diferentes tipos de parámetros


uf, así es como funciona ))))



UPD:

puede, pero si los tipos en la plantilla coinciden, aquí hay un ejemplo, funciona correctamente:

template<typename T1, typename T2>
int myfunc(T1 val1=0, T2 val2=0)
{
   return((int) (val1 + val2));
}

//+------------------------------------------------------------------+
void OnStart()
{
   int i1 = 2, i2 = 3;
   Print(myfunc(i1, i2));
   double d1 = 10.0, d2 = 30.0;
   Print(myfunc(d1, d2));
}
//+------------------------------------------------------------------+
 
Igor Makanu:

No, no puedes.

No puedo explicar cómo funcionan las plantillas de .... es así - hasta que no se llama a dicha función, el compilador no sabe nada de su existencia (a menudo, incluso no hay errores de compilación si no hay llamada)

entonces se llama a dicha función de plantilla y el compilador rellena los tipos necesarios y sólo entonces comprueba que todo funcione correctamente

y luego haces otra llamada a la plantilla con diferentes tipos de parámetros - y el compilador crea una nueva función, es decir, otra, es decir, como si escribieras 2 funciones, que hacen lo mismo, pero con diferentes tipos de parámetros


Uf, así es ))))

¿Y cómo puedo saber el tipo de parámetro de entrada?

Si paso un tipo de cadena a una plantilla y quiero procesarla más.

Los parámetros de entrada pueden ser hasta 64, cualquiera puede tener cualquier tipo, ¿cómo determinar que es una cadena?

 
Vladimir Pastushak:

¿Cómo puedo saber el tipo de parámetro de entrada?

Si paso un tipo de cadena a una plantilla y quiero procesarla más.

Puede haber hasta 64 parámetros de entrada y cualquiera de ellos puede tener cualquier tipo, ¿cómo puedo saber que es una cadena?

typename
Razón de la queja: