Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Last 10 bars table - индикатор для MetaTrader 5

Просмотров:
2268
Рейтинг:
(18)
Опубликован:
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 обязательно берите из архива и не ставьте демонтрационный файл.


MACD minimum level MACD minimum level

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

MACD Top Bottom EA MACD Top Bottom EA

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

iOsMA Divergence iOsMA Divergence

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

Pending Stop Trailing Pending Stop Trailing

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