Скачать MetaTrader 5

Ограниченный набор для input string

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Artyom Kuraev
950
Artyom Kuraev  

Всем привет. Прошу подсказки, можно ли сделать ограниченный перечень параметров для внешнего параметра string в mql4.

Например, как в в индикаторе Moving Average метод МА можно выбирать из ограниченного набора: simple, exponential, smoothed...

Как такого же типа настройки сделать для пользовательских индикаторов и экспертов?

Victor Nikolaev
Модератор
15069
Victor Nikolaev  
delfik71091:

Всем привет. Прошу подсказки, можно ли сделать ограниченный перечень параметров для внешнего параметра string в mql4.

Например, как в в индикаторе Moving Average метод МА можно выбирать из ограниченного набора: simple, exponential, smoothed...

Как такого же типа настройки сделать для пользовательских индикаторов и экспертов?

Используйте enum с комментариями.

Примеры есть

Artyom Kuraev
950
Artyom Kuraev  
Vinin:

Используйте enum с комментариями.

Примеры есть

 

Спасибо!!!
Artyom Kuraev
950
Artyom Kuraev  
Vinin:

Используйте enum с комментариями.

Примеры есть

 

Теперь не могу найти доступных примеров для списка типа int...

Как в список значений подставить периоды графиков?

на код

enum Timeframe
  {
   a=30,    // PERIOD_M30
   b=60,    // PERIOD_H1
   c=240,   // PERIOD_H4
   d=1440   // PERIOD_D1
  };
input Timeframe ltf=60;  // Старший таймфрейм

компилятор матерится, и на 

enum Timeframe
  {
   PERIOD_M30,
   PERIOD_H1,
   PERIOD_H4,
   PERIOD_D1
  };
input Timeframe ltf=1;  // Старший таймфрейм

 тоже.

Если использовать 

enum Timeframe {ENUM_TIMEFRAMES};
input Timeframe ltf=0;  // Старший таймфрейм

во всплывающем списке  появляется только одно значение

ENUM_TIMEFRAMES
Basil Pushkarev
138
Basil Pushkarev  
delfik71091:

компилятор матерится, и на

Какими словами-то ругается?

Этот код добавил в стандартный советник МА, все нормально и комилится и в окне параметров отображается.

enum Timeframe
  {
   a=30,    // PERIOD_M30
   b=60,    // PERIOD_H1
   c=240,   // PERIOD_H4
   d=1440   // PERIOD_D1
  };
input Timeframe ltf=60;  // Старший таймфрейм
Dina Paches
8119
Dina Paches  
delfik71091:

Теперь не могу найти доступных примеров для списка типа int...

Как в список значений подставить периоды графиков?

на код

компилятор матерится, и на 

 тоже.

Если использовать 

во всплывающем списке  появляется только одно значение

Можно по разному сделать. Не торопитесь, пожалуйста. Тогда различные варианты сами составлять сможете.

Вот ещё из вариантов, помимо того, что выше у pu6ka. Это код тестового скрипта. При выводе на печать переведено в текстовый формат, чтоб при выводе на печать не цифрами период отобразился во вкладке "Эксперты" терминала. В общем, разберётесь сами:

#property version   "1.00"
#property strict
#property script_show_inputs
//---
#define TEST_PRINT_ONE(x)   Print(__LINE__,", ",__FUNCTION__,", ",(#x)," = ",(x))
//---
input ENUM_TIMEFRAMES time_frames=PERIOD_CURRENT;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
TEST_PRINT_ONE(EnumToString(time_frames));
   
  }
//+------------------------------------------------------------------+


Ещё наберите, например, в Справочнике к MetaEditor, во вкладке Указатель, слово enum - узнаете много-много интересного:


Ну и поиск по сайту вам поможет во многом.

Повторюсь - не торопитесь, пожалуйста.

Файлы:
Artyom Kuraev
950
Artyom Kuraev  
DiPach:

Повторюсь - не торопитесь, пожалуйста.

Вот уж, действительно, Вы правы. Оказалось, объявил переменную ltf сначала как внешнюю, но простым числом, а потом ее же через список enum, а отсюда и ошибка компилятора "переменная уже определена", и паника с вопросом, "почему ничего не получается?"

Наверное, это самый важный совет! Спасибо!!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий