Обновление платформы MetaTrader 4 build 670: виртуальный хостинг, web-запросы и работа с сигналами из MQL-программ - страница 26

 
Даешь скрытие кода между фигурными скобками!!! или по #region и #endregion
 

Это да, удобная возможность.

Но просьбы следует дозировать.

 

опять присутствует проблема с инициализацией глобальных перемен в индикаторах

поправте плиз, иначе нет возможности сохранять переменные при переключение графиков, работало же все раньше

 
wlad:

опять присутствует проблема с инициализацией глобальных перемен в индикаторах

поправте плиз, иначе нет возможности сохранять переменные при переключение графиков, работало же все раньше

Какого рода проблема? Доказательства? Как проверяли?
 
barabashkakvn:
Какого рода проблема? Доказательства? Как проверяли?

код прилагается по ссылке

Файл igv

 
barabashkakvn:
Какого рода проблема? Доказательства? Как проверяли?

Проверка проста: 

int g_global;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   Print("Init. g_global = ", g_global);
   g_global = 1;

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   Print("OnCalculate. g_global = ", g_global);
   return(rates_total);
}

 Результат:

20:12:44 Custom indicator TestInd EURUSD,H1: loaded successfully
20:12:45 TestInd EURUSD,H1: Init. g_global = 0
20:12:45 TestInd EURUSD,H1: initialized
20:12:45 TestInd EURUSD,H1: OnCalculate. g_global = 1
20:12:48 TestInd EURUSD,H1: uninit reason 3
20:12:48 TestInd EURUSD,M15: Init. g_global = 0
20:12:48 TestInd EURUSD,M15: initialized
20:12:48 TestInd EURUSD,M15: OnCalculate. g_global = 1

Глобальные переменные в индикаторах, в отличие от советников, не сохраняют свое значение между инициализациями. Такое поведение за индикаторами закреплено давно, еще на билдах <600. 

 
Scriptong:

Проверка проста: 

 Результат:

Глобальные переменные в индикаторах, в отличие от советников, не сохраняют свое значение между инициализациями. Такое поведение за индикаторами закреплено давно, еще на билдах <600. 

так было всегда до нового поколения МТ4 и ошибка была исправлена

сейчас проблема опять возникла

для того то они и нужны глобальные, что бы сохранять свое значение

 
wlad:

так было всегда до нового поколения МТ4 и ошибка была исправлена

сейчас проблема опять возникла

для того то они и нужны глобальные, что бы сохранять свое значение



Для хранения данных на тру глобальном уровне, есть GlobalVariableSet, а внутренние глобальные переменные по идее должны переинициализироваться с каждой инициализацией эксперта/индикатора, при смене тф у вас происходит выгрузка эксперта/индикатора и загрузка его заново, по чему он должен какие-то старые данные держать в памяти? Это не логично, на мой взгляд. Можно привести аналогию с приложением в операционной системе, там же при закрытии приложения данные не остаются в памяти до следующего запуска.

 
Scriptong:

Это, как раз, полезная фишка. Оставляешь курсор в одном месте кода, прокручиваешь код туда, где "нужно что-то посмотреть и вернуться назад". Посмотрев нужную информацию, жмешь любую клавишу и автоматически возвращаешься к исходному месту кода. Очень удобно.

Здесь, на мой взгляд, достаточно оставить клавиши управления курсором (стрелки, ввод текста). А на Esс, получается, лежит одновременно много функциональных действий, выполняющихся в порядке приоритета - отмена введенных символов, возврат экрана к строке курсора, скрытие окна Инструменты.
 
Bobs:

Здесь, на мой взгляд, достаточно оставить клавиши управления курсором (стрелки, ввод текста). А на Esс, получается, лежит одновременно много функциональных действий, выполняющихся в порядке приоритета - отмена введенных символов, возврат экрана к строке курсора, скрытие окна Инструменты.
У меня на ESC не реагирует...