Preguntas de un "tonto" - página 24

 
tol64:
¿Me das un ejemplo sencillo?
mostrar el código en qué línea se emite la advertencia. y qué tipos está jurando
 
sergeev:
mostrar el código en qué línea se emite la advertencia. y qué tipos frunce el ceño

void OnStart()
  {
//--- выведем всю информацию, доступную из функции AccountInfoInteger()
   printf("ACCOUNT_LOGIN =  %d",AccountInfoInteger(ACCOUNT_LOGIN));
   printf("ACCOUNT_LEVERAGE =  %d",AccountInfoInteger(ACCOUNT_LEVERAGE));
   bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
   bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);

   ENUM_ACCOUNT_TRADE_MODE tradeMode=AccountInfoInteger(ACCOUNT_TRADE_MODE);           // На этой строке: Строка 25 Столбец 40 и Столбец 78
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);   // И на этой     : Строка 26 Столбец 44 и Столбец 86

...
Resaltado y comentado en el código.
 
tol64:

Resaltado y comentado en el código.

   ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);

 
uncleVic:

Gracias. También me gustaría preguntar sobre la configuración del modo de nivel de parada. ¿Sólo puedo averiguar este modo tal y como lo establece el servidor de comercio o puedo cambiarlo?
 
tol64:
Gracias. También me gustaría preguntar sobre la configuración del modo de nivel de parada. Este modo sólo lo encuentro porque lo establece el servidor de comercio o puedo cambiarlo?
Stop Out es de sólo lectura, no se puede configurar. Y todo aquello con lo que operan las funciones AccountInfo...() es de sólo lectura.
 
tol64:

Resaltado y comentado en el código.

Gracias, el ejemplo ha sido corregido. Ahora el compilador no emitirá una advertencia en este ejemplo.
 

Resulta que siempre que se necesite leer ciertos datos/propiedades se debe aplicar la variante que mostró uncleVic:https://www.mql5.com/ru/forum/3775/page24#comment_84143

Por ejemplo, si se hace así, lo que parece lógico a primera vista (y conocido por la transición a mql4), el compilador generará una advertencia:

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Para deshacerse de las advertencias del compilador, hay que hacer lo siguiente

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

O como demostró el tíoVic, es decir:

   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   ENUM_OBJECT_PROPERTY_INTEGER val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   ENUM_OBJECT_PROPERTY_INTEGER val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

¿Lo he hecho bien?

 
AUser:
¿Puedes decirme cómo funciona el generador de números aleatorios y si hay una función para comprobar si el número es par o impar? Sobre el generador es deseable la explicación en un lenguaje comprensible para los tontos)) No se entiende la ayuda))

Este es el ejemplo más sencillo de cómo averiguar qué hace una función concreta. Ejecuta el script y mira el registro.

void OnStart()
  {
   int x;
   
   x = MathRand();
   
   Print("x : ",x);
  }
 
#define Vrsn "0.01a"
#property version   Vrsn

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

la plantilla se guarda como 0.tpl

#define Vrsn "001a"

La plantilla se guarda como001a.tpl, que es en realidad lo que quieres obtener.

Pregunta: ¿cómo se quita el punto de antemano?

actualizar probablemente de forma más precisa: ¿cómo encuentro un carácter en una cadena?

upgr y otra confusión. Si hay un punto en

#define Vrsn "0.01a"

hay un punto, no es sólo lo que está después de él, sino también lo que está aplanado.

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
¿Por qué? Si StringToInteger se activa en la compilación...
 
Silent:

la plantilla se guarda como 0.tpl

La plantilla se guarda como001a.tpl, que es en realidad lo que quieres obtener.

Pregunta: ¿cómo se quita el punto de antemano?

La actualización es probablemente más precisa: ¿cómo se encuentra un carácter en una cadena?

También hay un malentendido. Si en

hay un punto, cortará no sólo lo que está después de él, sino también lo que está aplastado

¿por qué? si, presumiblemente, StringToInteger se activa en tiempo de compilación.

Todo lo que se escribe en el disco se comprueba necesariamente para ver si hay basura o malicia.

Si escribe una plantilla, ésta debe ser un archivo con la extensión tpl, sin importar lo que el usuario haya querido. Por eso se corta el punto definido por el usuario en el nombre.