Perguntas de um "boneco" - página 24

 
tol64:
Posso ter um exemplo simples?
mostrar o código em que linha é emitido o aviso. e que tipos de aviso
 
sergeev:
mostrar o código em que linha é emitido o aviso e em que tipos é que ele se afasta.

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

...
Destacado e comentado no código.
 
tol64:

Destacado e comentado no 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:

Obrigado. Gostaria também de perguntar sobre a definição do modo de paragem de nível. Posso apenas descobrir este modo tal como é definido pelo servidor de negociação ou posso alterá-lo?
 
tol64:
Obrigado. Gostaria também de perguntar sobre a definição do modo de paragem de nível. Só posso descobrir este modo porque é definido pelo servidor de negociação ou posso alterá-lo?
Stop Out é apenas de leitura, não se pode defini-lo. E tudo aquilo com que a AccountInfo...() funciona é apenas de leitura.
 
tol64:

Destacado e comentado no código.

Obrigado, o exemplo foi corrigido. Agora o compilador não irá emitir um aviso sobre este exemplo.
 

Acontece que onde quer que se precise de ler certos dados/propriedades deve-se aplicar a variante que o tioVic mostrou:https://www.mql5.com/ru/forum/3775/page24#comment_84143

Por exemplo, se o fizer, o que parece lógico à primeira vista (e familiar da transição mql4), então o compilador irá gerar um aviso:

   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 se livrar dos avisos do compilador, tem de fazer ou isto:

   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);

Ou como o tio Vic demonstrou, ou seja:

   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);

Será que acertei?

 
AUser:
Pode dizer-me como funciona o gerador de números aleatórios e se existe uma função para verificar o número para números pares/odd? Sobre o gerador é uma explicação desejável numa linguagem compreensível para os dummies)))) A ajuda não é compreendida))

Aqui está o exemplo mais simples de como descobrir o que uma determinada função está a fazer. Executar o guião e olhar para o registo.

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

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

o modelo é guardado como 0.tpl

#define Vrsn "001a"

O modelo é guardado como001a.tpl, que é na realidade o que se pretende obter.

Pergunta: como é que removo o ponto de antemão?

actualizações provavelmente mais precisas: como encontro um carácter numa corda?

actualizações e outra confusão. Se houver um ponto em

#define Vrsn "0.01a"

há um ponto, não é só o que está atrás dele, mas também o que está achatado.

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
Porquê? Se o StringToInteger for accionado na compilação ...
 
Silent:

o modelo é guardado como 0.tpl

O modelo é guardado como001a.tpl, que é na realidade o que se pretende obter.

Pergunta: como é que removo o ponto de antemão?

as actualizações são provavelmente mais precisas: como se encontra um carácter numa cadeia?

Há também um mal-entendido. Se em

há um ponto, ele cortará não só o que está atrás dele, mas também o que está achatado

porquê? se, presumivelmente, o StringToInteger desencadeia em tempo de compilação.

Qualquer coisa que seja escrita no disco é necessariamente verificada quanto a lixo e malícia.

Se escrever um modelo, o modelo deve ser um ficheiro com a extensão tpl, não importa o que o utilizador desejava. É por isso que o ponto definido pelo utilizador no nome é recortado.