Как создать внешнюю переменную?

 

Как создать внешнюю переменную?

 

Как вот здесь: maHandle=iMA(_Symbol,PERIOD_D1,MA_Period,0,MODE_EMA,PRICE_CLOSE);

 

вместо PERIOD_D1 подставить внешнюю переменную равную PERIOD_D1

 

Если создать внешнюю переменную,

вот так: input int      MA_Per=PERIOD_D1;

 

и потом подставить эту переменную MA_Per

 

в  приведенный  код:

maHandle=iMA(_Symbol, MA_Per,MA_Period,0,MODE_EMA,PRICE_CLOSE);

 

при компиляции выскакивает ошибка.

 

Что не так?  Что я не понял?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Какая ошибка, вы имеете ввиду переменную которая будет как параметр программы?
Может вы input задаете внутри какой-нибудь функции?

Надо объявлять в глобальной области.

 
vas:

Как создать внешнюю переменную?

 

Как вот здесь: maHandle=iMA(_Symbol,PERIOD_D1,MA_Period,0,MODE_EMA,PRICE_CLOSE);

 

вместо PERIOD_D1 подставить внешнюю переменную равную PERIOD_D1

 

Если создать внешнюю переменную,

вот так: input int      MA_Per=PERIOD_D1;

 

и потом подставить эту переменную MA_Per

 

в  приведенный  код:

maHandle=iMA(_Symbol, MA_Per,MA_Period,0,MODE_EMA,PRICE_CLOSE);

 

при компиляции выскакивает ошибка.

 

Что не так?  Что я не понял?

надо так, тогда ошибки не будет
input ENUM_TIMEFRAMES  MA_Per=PERIOD_D1;
 
sergey1294:
надо так, тогда ошибки не будет
Все равно нужно объявлять в глобальной области))
При объявлении в функции - ошибка компиляции.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
mrProF:
Все равно нужно объявлять в глобальной области))
При объявлении в функции - ошибка компиляции.

 не понял где ошибка, если вы имели про переменную maHandle, так человек не про это спрашивал, вот полностью приведенный код ни каких ошибок нет

input ENUM_TIMEFRAMES  MA_Per=PERIOD_D1;
input int              MA_Period = 22;

int maHandle = INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   maHandle=iMA(_Symbol, MA_Per,MA_Period,0,MODE_EMA,PRICE_CLOSE);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
 
sergey1294:
input ENUM_TIMEFRAMES  MA_Per=PERIOD_D1;

Да, но что станет со свойствами советника?

Как потом эту внешнюю переменную перебирать от каких то минимальных до максимальных значений?

 
sergey1294:

 не понял где ошибка, если вы имели про переменную maHandle, так человек не про это спрашивал, вот полностью приведенный код ни каких ошибок нет

Смотрите:

#property copyright "ProF"
#property link      "http://"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   input ENUM_TIMEFRAMES  MA_Per=PERIOD_D1;
  }
//+------------------------------------------------------------------+

ошибка при компиляции: 'input' - unexpected token    test.mq5    15    4

#property copyright "ProF"
#property link      "http://"
#property version   "1.00"
#property script_show_inputs
input ENUM_TIMEFRAMES  MA_Per=PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   
  }
//+------------------------------------------------------------------+

Нет ошибки, я про это имел ввиду.



 
mrProF:

Надо объявлять в глобальной области.

В глобальной объявляю
 
vas:

Да, но что что станет со свойствами советника?

Как потом эту внешнюю переменную перебирать от каких то минимальных до максимальных значений?

 с какими еще свойствами, задавайте вопрос конкретнее, если перебирать в оптимизаторе, то точно также же, задаете начальное значение, шаг и конечное значение


 
sergey1294:

 если перебирать в оптимизаторе, то точно также же, задаете начальное значение, шаг и конечное значение

вопрос исчерпан.  спасибо
 
vas:
вопрос исчерпан.  спасибо
сразу ответ на будущее с булевыми переменными, они тоже в оптимизаторе оптимизируются, в отличии от МТ4
Причина обращения: