//+------------------------------------------------------------------+ //| StochasticTrend_x10Full.mq5 | //| Copyright © 2015, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "2015, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property description "Индикатор отображает положение осциллятора Stochastic с разных таймфреймов" //---- номер версии индикатора #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 KPeriod1=5; input uint DPeriod1=3; input uint Slowing1=3; input ENUM_MA_METHOD MA_Method1=MODE_SMA; input ENUM_STO_PRICE Price_field1=STO_LOWHIGH; input uint UpLevel1=70; //уровень перезакупа 1 input uint DnLevel1=30; //уровень перепроданности 1 input ENUM_TIMEFRAMES TimeFrame2=PERIOD_H1; //период графика 2 input uint KPeriod2=9; input uint DPeriod2=3; input uint Slowing2=3; input ENUM_MA_METHOD MA_Method2=MODE_SMA; input ENUM_STO_PRICE Price_field2=STO_LOWHIGH; input uint UpLevel2=70; //уровень перезакупа 2 input uint DnLevel2=30; //уровень перепроданности 2 input ENUM_TIMEFRAMES TimeFrame3=PERIOD_H1; //период графика 3 input uint KPeriod3=13; input uint DPeriod3=3; input uint Slowing3=3; input ENUM_MA_METHOD MA_Method3=MODE_SMA; input ENUM_STO_PRICE Price_field3=STO_LOWHIGH; input uint UpLevel3=70; //уровень перезакупа 3 input uint DnLevel3=30; //уровень перепроданности 3 input ENUM_TIMEFRAMES TimeFrame4=PERIOD_H1; //период графика 4 input uint KPeriod4=17; input uint DPeriod4=3; input uint Slowing4=3; input ENUM_MA_METHOD MA_Method4=MODE_SMA; input ENUM_STO_PRICE Price_field4=STO_LOWHIGH; input uint UpLevel4=70; //уровень перезакупа 4 input uint DnLevel4=30; //уровень перепроданности 4 input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H1; //период графика 5 input uint KPeriod5=21; input uint DPeriod5=3; input uint Slowing5=3; input ENUM_MA_METHOD MA_Method5=MODE_SMA; input ENUM_STO_PRICE Price_field5=STO_LOWHIGH; input uint UpLevel5=70; //уровень перезакупа 5 input uint DnLevel5=30; //уровень перепроданности 5 input ENUM_TIMEFRAMES TimeFrame6=PERIOD_H1; //период графика 6 input uint KPeriod6=25; input uint DPeriod6=3; input uint Slowing6=3; input ENUM_MA_METHOD MA_Method6=MODE_SMA; input ENUM_STO_PRICE Price_field6=STO_LOWHIGH; input uint UpLevel6=70; //уровень перезакупа 6 input uint DnLevel6=30; //уровень перепроданности 6 input ENUM_TIMEFRAMES TimeFrame7=PERIOD_H1; //период графика 7 input uint KPeriod7=29; input uint DPeriod7=3; input uint Slowing7=3; input ENUM_MA_METHOD MA_Method7=MODE_SMA; input ENUM_STO_PRICE Price_field7=STO_LOWHIGH; input uint UpLevel7=70; //уровень перезакупа 7 input uint DnLevel7=30; //уровень перепроданности 7 input ENUM_TIMEFRAMES TimeFrame8=PERIOD_H1; //период графика 8 input uint KPeriod8=33; input uint DPeriod8=3; input uint Slowing8=3; input ENUM_MA_METHOD MA_Method8=MODE_SMA; input ENUM_STO_PRICE Price_field8=STO_LOWHIGH; input uint UpLevel8=70; //уровень перезакупа 8 input uint DnLevel8=30; //уровень перепроданности 8 input ENUM_TIMEFRAMES TimeFrame9=PERIOD_H1; //период графика 9 input uint KPeriod9=37; input uint DPeriod9=3; input uint Slowing9=3; input ENUM_MA_METHOD MA_Method9=MODE_SMA; input ENUM_STO_PRICE Price_field9=STO_LOWHIGH; input uint UpLevel9=70; //уровень перезакупа 9 input uint DnLevel9=30; //уровень перепроданности 9 input ENUM_TIMEFRAMES TimeFrame10=PERIOD_H1; //период графика 10 input uint KPeriod10=41; input uint DPeriod10=3; input uint Slowing10=3; input ENUM_MA_METHOD MA_Method10=MODE_SMA; input ENUM_STO_PRICE Price_field10=STO_LOWHIGH; input uint UpLevel10=70; //уровень перезакупа 10 input uint DnLevel10=30; //уровень перепроданности 10 //---- input color CpColor=clrDarkOrchid; //цвет названия индикатора input color UpColor=clrMediumSpringGreen; //цвет перекупленности индикатора input color DnColor=clrMagenta; //цвет перепроданности индикатора 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_KPeriod; uint m_DPeriod; uint m_Slowing; ENUM_MA_METHOD m_MA_Method; ENUM_STO_PRICE m_Price_field; 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=int(res); } min_rates_total=int(max+1); //---- xshift=int(X_+8.3*FontSize); Cap="StochasticTrend_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]