Вопросы от "чайника" - страница 24

 
tol64:
Можно простой пример?
покажите код на какой строке выдается предупреждение. и на какие типы ругается
 
sergeev:
покажите код на какой строке выдается предупреждение. и на какие типы ругается

 

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

...
Выделил и прокомментировал в коде. 
 
tol64:

 

Выделил и прокомментировал в коде. 

   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:

Спасибо. Я хочу ещё поинтересоваться о задании режима уровня стоп-аут. Этот режим я могу лишь выяснить, так как он задаётся торговым сервером или я могу его менять?
 
tol64:
Спасибо. Я хочу ещё поинтересоваться о задании режима уровня стоп-аут. Этот режим я могу лишь выяснить, так как он задаётся торговым сервером или я могу его менять?
Стоп-оут только для чтения, задать вы его не можете. Да и вообще всё чем оперируют функции AccountInfo...() только для чтения.
 
tol64:

 Выделил и прокомментировал в коде. 

Спасибо, пример подправили. Теперь компилятор не будет выдавать предупреждения на этот пример.
 

Получается везде, где нужно прочитать те или иные данные/свойства нужно применять вариант, который показал uncleVichttps://www.mql5.com/ru/forum/3775/page24#comment_84143

Например, если делать так, что на первый взгляд логично (и привычно с перехода от mql4), то компилятор выдаст предупреждение:

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

 

Чтобы избавиться от предупреждений компилятора, нужно делать или так:

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

Или так, как это продемонстрировал uncleVic, то есть:

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

Я правильно всё понял? 

 

 
AUser:
Подскажите, как работает генератор случайных чисел и есть ли функция проверки числа на четное/нечетное? Про генератор желательно объяснение на языке понятном чайнику)) Справку не понял))

Вот самый простой пример, как узнать, что делает та или иная функция. Запускайте скрипт и смотрите в журнал.

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

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

шаблон сохраняется как 0.tpl

#define Vrsn "001a"

  шаблон сохраняется как  001a.tpl - собственно, то, что нужно получить.

Вопрос: как предварительно убрать точку?

 upgr наверно, так точнее: как в строке найти символ? 

upgr и еще непонятка. Если в

#define Vrsn "0.01a"

есть точка, то отсекается не только то, что после нее, но и то, что приплюснуто

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
почему? если, предположительно, при компиляции срабатывает StringToInteger ..
 
Silent:

шаблон сохраняется как 0.tpl

  шаблон сохраняется как  001a.tpl - собственно, то, что нужно получить.

Вопрос: как предварительно убрать точку?

 upgr наверно, так точнее: как в строке найти символ? 

upgr и еще непонятка. Если в

есть точка, то отсекается не только то, что после нее, но и то, что приплюснуто

почему? если, предположительно, при компиляции срабатывает StringToInteger ..

Все, что пишется на диск, в обязательном порядке проверяется на мусор и вредоносность.

Если пишите шаблон, то шаблон должен быть файлом с расширением tpl вне зависимости от того, что хотел пользователь. Именно поэтому вырезается заданная пользователем точка в имени.