//+------------------------------------------------------------------+ //| DeMarkerTrend_x10Full.mq5 | //| Copyright © 2015, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "2015, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property description "Индикатор отображает положение осциллятора DeMarker с разных таймфреймов" //---- номер версии индикатора #property version "1.00" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- количество индикаторных буферов 0 #property indicator_buffers 0 //---- не использовано ни одного графического построения #property indicator_plots 0 //+-----------------------------------+ //| объявление констант | //+-----------------------------------+ #define RESET 0 // Константа для возврата терминалу команды на пересчёт индикатора #define INDTOTAL 10 // Константа для количества отображаемых индикаторов //+----------------------------------------------+ // Описание перечисления type_font | // Описание класса CFontName | //+----------------------------------------------+ #include //+----------------------------------------------+ //| Входные параметры индикатора | //+----------------------------------------------+ input ENUM_TIMEFRAMES TimeFrame1=PERIOD_H1; //период графика 1 input uint DeMarkerPeriod1=7; //период DeMarker 1 input double UpLevel1=0.7; //уровень перезакупа 1 input double DnLevel1=0.3; //уровень перепроданности 1 input ENUM_TIMEFRAMES TimeFrame2=PERIOD_H1; //период графика 2 input uint DeMarkerPeriod2=11; //период DeMarker 2 input double UpLevel2=0.7; //уровень перезакупа 2 input double DnLevel2=0.3; //уровень перепроданности 2 input ENUM_TIMEFRAMES TimeFrame3=PERIOD_H1; //период графика 3 input uint DeMarkerPeriod3=15; //период DeMarker 3 input double UpLevel3=0.7; //уровень перезакупа 3 input double DnLevel3=0.3; //уровень перепроданности 3 input ENUM_TIMEFRAMES TimeFrame4=PERIOD_H1; //период графика 4 input uint DeMarkerPeriod4=19; //период DeMarker 4 input double UpLevel4=0.7; //уровень перезакупа 4 input double DnLevel4=0.3; //уровень перепроданности 4 input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H1; //период графика 5 input uint DeMarkerPeriod5=23; //период DeMarker 5 input double UpLevel5=0.7; //уровень перезакупа 5 input double DnLevel5=0.3; //уровень перепроданности 5 input ENUM_TIMEFRAMES TimeFrame6=PERIOD_H1; //период графика 6 input uint DeMarkerPeriod6=27; //период DeMarker 6 input double UpLevel6=0.7; //уровень перезакупа 6 input double DnLevel6=0.3; //уровень перепроданности 6 input ENUM_TIMEFRAMES TimeFrame7=PERIOD_H1; //период графика 7 input uint DeMarkerPeriod7=31; //период DeMarker 7 input double UpLevel7=0.7; //уровень перезакупа 7 input double DnLevel7=0.3; //уровень перепроданности 7 input ENUM_TIMEFRAMES TimeFrame8=PERIOD_H1; //период графика 8 input uint DeMarkerPeriod8=35; //период DeMarker 8 input double UpLevel8=0.7; //уровень перезакупа 8 input double DnLevel8=0.3; //уровень перепроданности 8 input ENUM_TIMEFRAMES TimeFrame9=PERIOD_H1; //период графика 9 input uint DeMarkerPeriod9=39; //период DeMarker 9 input double UpLevel9=0.7; //уровень перезакупа 9 input double DnLevel9=0.3; //уровень перепроданности 9 input ENUM_TIMEFRAMES TimeFrame10=PERIOD_H1; //период графика 10 input uint DeMarkerPeriod10=43; //период DeMarker 10 input double UpLevel10=70; //уровень перезакупа 10 input double DnLevel10=30; //уровень перепроданности 10 //---- input color CpColor=clrDarkOrchid; //цвет названия индикатора input color UpColor=clrDodgerBlue; //цвет перекупленности индикатора input color DnColor=clrRed; //цвет перепроданности индикатора input color ZrColor=clrGray; //цвет без изменения input int FontSize=11; //размер шрифта input type_font FontType=Font14; //тип шрифта input ENUM_BASE_CORNER WhatCorner=CORNER_LEFT_LOWER; //угол расположения input uint Y_=20; //расположение по вертикали input uint X_=5; //расположение по горизонтали //+----------------------------------------------+ string sFontType; int min_rates_total; uint xshift,shift[11]; string sPer[10],sPerA[10],sPerB[10],Cap; ENUM_TIMEFRAMES ePer[10]; //+------------------------------------------------------------------+ //| Получение таймфрейма в виде строки | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) {return(StringSubstr(EnumToString(timeframe),7,-1));} //+------------------------------------------------------------------+ //| Класс массивов | //+------------------------------------------------------------------+ class CIndArrow { //---- public: double m_Ind[1]; int m_Handle; ENUM_TIMEFRAMES m_TimeFrame; uint m_Period; double m_UpLevel; double m_DnLevel; //---- }; //---- объявление массивов, которые будут в // дальнейшем использованы для получения индикаторных значений CIndArrow Ind[INDTOTAL]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- ePer[0]=TimeFrame1; ePer[1]=TimeFrame2; ePer[2]=TimeFrame3; ePer[3]=TimeFrame4; ePer[4]=TimeFrame5; ePer[5]=TimeFrame6; ePer[6]=TimeFrame7; ePer[7]=TimeFrame8; ePer[8]=TimeFrame9; ePer[9]=TimeFrame10; for(int poz=0; pozmax) max=Ind[poz].m_Period; min_rates_total=int(max+1); //---- xshift=int(X_+8.3*FontSize); Cap="DeMarkerTrend_x10Full"; //---- switch(WhatCorner) { case CORNER_RIGHT_LOWER: { for(int poz=0; poz<=INDTOTAL; poz++) shift[10-poz]=Y_+22*poz; break; } case CORNER_LEFT_LOWER: { for(int poz=0; poz<=INDTOTAL; poz++) shift[10-poz]=Y_+22*poz; break; } default: { for(int poz=0; poz<=INDTOTAL; poz++) shift[poz]=Y_+22*poz; } } for(int poz=0; pozInd[poz].m_UpLevel) ColorGain[poz]=UpColor; if(Ind[poz].m_Ind[0]