Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
si en mi ejemplo:
copiar los valores de asc y bid en el método onTick() y utilizar _Ask, _Bid (comercio virtual) en el resto de los métodos
¿será como trabajar con variables globales?
ZS: como opción, puedo por supuesto pasar por referencia &tick a todos los métodos, pero de nuevo se pregunta qué es más eficiente
Una vez se hizo una pregunta sobre dos formas de inicializar variables en una clase. Este:
Y esta otra:
Pregunté cuál es la ventaja de la segunda forma y me dijeron que se pueden inicializar miembros estáticos con ella. Pero los miembros estáticos no se inicializan de esa manera.
Así que la pregunta es la misma: ¿cuál es la diferencia en principio y cuál es la ventaja de la segunda vía?
Cita
Una vez se hizo una pregunta sobre dos formas de inicializar variables en una clase. Aquí hay uno como este:
https://www.mql5.com/ru/forum/85652/page45#comment_15975127
Pregunté cuál es la ventaja de la segunda forma y me dijeron que los miembros estáticos pueden ser inicializados por ella. Pero los miembros estáticos no se inicializan de esa manera.
Son campos constantes , no estáticos.
Así que la pregunta sigue siendo la misma: ¿cuál es la diferencia de principio y cuál es la ventaja de la segunda vía?
Si descartamos la afirmación "se considera de mala educación", entonces lo que sea más conveniente, es lo que usaremos, imho.
Voy a empezar el tema de nuevo, he borrado el post anterior, creí que lo había resuelto por mi cuenta....
aquí está el código:
class CSetting { public: enum T {T1, T2, T3, T4, T5, T6, T7, T8}; enum D {D1, D2, D3, D4, D5, D6, D7, D8}; enum V {V1, V2, V3, v4}; private: int param1, param2; T t; D d; V v; public: CSetting(const int in_param1,const int in_param2,const T in_t,const D in_d,const V in_v); }; //+------------------------------------------------------------------+ CSetting::CSetting(const int in_param1,const int in_param2,const T in_t,const D in_d,const V in_v) : param1(in_param1), param2(in_param2), t(in_t), d(in_d), v(in_v) {} //--- input parameters input int Input_p1 = 1; // p1 = -1000 ... +1000 input int Input_p2 = 2; // p2 = -1000 ... +1000 input CSetting::T Input_T = CSetting::T::T1; input CSetting::D Input_D = CSetting::D::D1; input CSetting::V Input_V = CSetting::V::V1;Quiero que 3 enums y 2 ints de la sección privat de CSetting se llenen con un int en el que poco a poco voy a almacenar estos datos, esbozado el código:
en teoría, debería funcionar, tomo los 2 + 3 +3 bits inferiores de los datos para el enum , y los 24 bits restantes del int para rellenar param1 y param2, manteniendo el 12º bit como el carácter del número
¿Cómo puedo comprobar si hay un error? )))
o agradecería las ideas de alguien más sobre cómo guardar estos datos en int
¿cómo se comprueba si hay errores? )))
o t+d*10+v*100
esto no funcionará,
hay que desplazar bit a bit o multiplicar/dividir por 2, lo que equivale a desplazar
bien, como siempre - empaquetarlo, desempaquetarlo, comprobar la identidad. preferiblemente comprobar todos los casos límite.
Así que, sí... lógicamente
pero no tenía previsto hacer el empaquetado - estoy disminuyendo el número de variables de entrada para el optimizador y necesito muchas pasadas de AG encima de ellas, para que el AG no converja rápidamente
Ya se han comprobado los casos límite, pero por experiencia.... ¡¡¡los bichos son tan astutos!!! )))
HH: Por supuesto, puedo restablecer el bucle de 0...MAX_UINT en un archivo y mirarlo visualmente, pero no es la mejor opción, imho.
no funcionará,
...
¿Por qué no iba a funcionar? Tres enumeraciones, ninguna de ellas superior a 10. Aritmética de segundo grado de primaria.