Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2465
- Рейтинг:
- Опубликован:
- 2019.08.03 15:35
- Обновлен:
- 2019.08.03 15:38
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Таблица может пригодится для быстрой оценки параметров OCHL последних баров. Таблица закрывается и переоткрывается через маленькое контекстное меню, открываемое двойным кликом на график. При смене таймфрейма или символа, таблица автоматически перезаполняется.
Пояснение принципа работы:
Таблица-индикатор работает на базе "движка" реализующего ее "механику". Демонстрация кода движка не является целью, так как он только "фундамент" на котором работает данный индикатор.
В файле Last_10_bars.mqh в функции "OnCalculate" находятся вызовы элементов таблицы и передача в них значений OCHL. В этом и есть суть этого индикатора.
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[]) { //--- //--------------------------------------------- int q = rates_total; static datetime currentBarTimeOpen = 0; //--------------------------------------------- //Устанавливаем параметры нулевого бара в нулевом ряду таблицы на каждом тике. //--------------------------------------------- E_Last_10_bars_1_Open(Normalize_Double(open[q - 1], _Digits, _Point)); E_Last_10_bars_1_Close(Normalize_Double(close[q - 1], _Digits, _Point)); E_Last_10_bars_1_High(Normalize_Double(high[q - 1], _Digits, _Point)); E_Last_10_bars_1_Low(Normalize_Double(low[q - 1], _Digits, _Point)); E_Last_10_bars_1_Volume((string)tick_volume[q - 1]); E_Last_10_bars_1_Points((string)((int)((high[q - 1] - low[q - 1])/_Point))); //--------------------------------------------- E_Last_10_bars_Current_price((string)SymbolInfoDouble(Symbol(),SYMBOL_BID)); //--------------------------------------------- //На событии нового бара вызываем все ячейки таблицы от первого ряда и ниже //и устанавливаем им новые значения. //--------------------------------------------- if(currentBarTimeOpen!=time[q - 1]) { currentBarTimeOpen = time[q - 1]; //---------------------------- E_Last_10_bars_2_Open(Normalize_Double(open[q - 2], _Digits, _Point)); E_Last_10_bars_3_Open(Normalize_Double(open[q - 3], _Digits, _Point)); E_Last_10_bars_4_Open(Normalize_Double(open[q - 4], _Digits, _Point)); E_Last_10_bars_5_Open(Normalize_Double(open[q - 5], _Digits, _Point)); E_Last_10_bars_6_Open(Normalize_Double(open[q - 6], _Digits, _Point)); E_Last_10_bars_7_Open(Normalize_Double(open[q - 7], _Digits, _Point)); E_Last_10_bars_8_Open(Normalize_Double(open[q - 8], _Digits, _Point)); E_Last_10_bars_9_Open(Normalize_Double(open[q - 9], _Digits, _Point)); E_Last_10_bars_10_Open(Normalize_Double(open[q - 10], _Digits, _Point)); //---------------------------- E_Last_10_bars_2_Close(Normalize_Double(close[q - 2], _Digits, _Point)); E_Last_10_bars_3_Close(Normalize_Double(close[q - 3], _Digits, _Point)); E_Last_10_bars_4_Close(Normalize_Double(close[q - 4], _Digits, _Point)); E_Last_10_bars_5_Close(Normalize_Double(close[q - 5], _Digits, _Point)); E_Last_10_bars_6_Close(Normalize_Double(close[q - 6], _Digits, _Point)); E_Last_10_bars_7_Close(Normalize_Double(close[q - 7], _Digits, _Point)); E_Last_10_bars_8_Close(Normalize_Double(close[q - 8], _Digits, _Point)); E_Last_10_bars_9_Close(Normalize_Double(close[q - 9], _Digits, _Point)); E_Last_10_bars_10_Close(Normalize_Double(close[q - 10], _Digits, _Point)); //---------------------------- E_Last_10_bars_2_High(Normalize_Double(high[q - 2], _Digits, _Point)); E_Last_10_bars_3_High(Normalize_Double(high[q - 3], _Digits, _Point)); E_Last_10_bars_4_High(Normalize_Double(high[q - 4], _Digits, _Point)); E_Last_10_bars_5_High(Normalize_Double(high[q - 5], _Digits, _Point)); E_Last_10_bars_6_High(Normalize_Double(high[q - 6], _Digits, _Point)); E_Last_10_bars_7_High(Normalize_Double(high[q - 7], _Digits, _Point)); E_Last_10_bars_8_High(Normalize_Double(high[q - 8], _Digits, _Point)); E_Last_10_bars_9_High(Normalize_Double(high[q - 9], _Digits, _Point)); E_Last_10_bars_10_High(Normalize_Double(high[q - 10], _Digits, _Point)); //---------------------------- E_Last_10_bars_2_Low(Normalize_Double(low[q - 2], _Digits, _Point)); E_Last_10_bars_3_Low(Normalize_Double(low[q - 3], _Digits, _Point)); E_Last_10_bars_4_Low(Normalize_Double(low[q - 4], _Digits, _Point)); E_Last_10_bars_5_Low(Normalize_Double(low[q - 5], _Digits, _Point)); E_Last_10_bars_6_Low(Normalize_Double(low[q - 6], _Digits, _Point)); E_Last_10_bars_7_Low(Normalize_Double(low[q - 7], _Digits, _Point)); E_Last_10_bars_8_Low(Normalize_Double(low[q - 8], _Digits, _Point)); E_Last_10_bars_9_Low(Normalize_Double(low[q - 9], _Digits, _Point)); E_Last_10_bars_10_Low(Normalize_Double(low[q - 10], _Digits, _Point)); //----------------------------- E_Last_10_bars_2_Volume((string)tick_volume[q - 2]); E_Last_10_bars_3_Volume((string)tick_volume[q - 3]); E_Last_10_bars_4_Volume((string)tick_volume[q - 4]); E_Last_10_bars_5_Volume((string)tick_volume[q - 5]); E_Last_10_bars_6_Volume((string)tick_volume[q - 6]); E_Last_10_bars_7_Volume((string)tick_volume[q - 7]); E_Last_10_bars_8_Volume((string)tick_volume[q - 8]); E_Last_10_bars_9_Volume((string)tick_volume[q - 9]); E_Last_10_bars_10_Volume((string)tick_volume[q - 10]); //---------------------------- E_Last_10_bars_2_Points((string)((int)((high[q - 2] - low[q - 2])/_Point))); E_Last_10_bars_3_Points((string)((int)((high[q - 3] - low[q - 3])/_Point))); E_Last_10_bars_4_Points((string)((int)((high[q - 4] - low[q - 4])/_Point))); E_Last_10_bars_5_Points((string)((int)((high[q - 5] - low[q - 5])/_Point))); E_Last_10_bars_6_Points((string)((int)((high[q - 6] - low[q - 6])/_Point))); E_Last_10_bars_7_Points((string)((int)((high[q - 7]- low[q - 7])/_Point))); E_Last_10_bars_8_Points((string)((int)((high[q - 8] - low[q - 8])/_Point))); E_Last_10_bars_9_Points((string)((int)((high[q - 9] - low[q - 9])/_Point))); E_Last_10_bars_10_Points((string)((int)((high[q - 10] - low[q - 10])/_Point))); //---------------------------- } //--Вызываем перерисовку таблицы. RMSG(1); //------------------------------ return(rates_total); } //+------------------------------------------------------------------+
Файл .ех5 находится в архиве. Также и все исходники движка индикатора. Разархивируйте zip,и если вы хотите сами изучить приложение, следуйте инструкции в текстовом файле в архиве.
Важно: если вы хотите сами запустить движок, файл индикатора Last_10_bars_table.mqh обязательно берите из архива и не ставьте демонтрационный файл.

Торговая стратегия по индикатору iMACD (Moving Average Convergence/Divergence, MACD) с фильтром минимального значения индикатора

Торговая стратегия по пользовательскому индикатору "MACD Top Bottom"

Советник торгует дивергенцию и двойную дивергенцию индикатора iOsMA (Moving Average of Oscillator, OsMA). Поиск дивергенций - основа алгоритма CompareMaps из модуля торговых сигналов

Краткое описание