//+------------------------------------------------------------------+ //| MFITrend_x10Full.mq5 | //| Copyright © 2015, Nikolay Kositsin | //| Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "2015, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property description "Индикатор отображает положение осциллятора MFI с разных таймфреймов" //---- номер версии индикатора #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 MFIPeriod1=7; //период MFI 1 input ENUM_APPLIED_VOLUME VolumeType1=VOLUME_TICK; //объём 1 input uint UpLevel1=70; //уровень перезакупа 1 input uint DnLevel1=30; //уровень перепроданности 1 input ENUM_TIMEFRAMES TimeFrame2=PERIOD_H1; //период графика 2 input uint MFIPeriod2=11; //период MFI 2 input ENUM_APPLIED_VOLUME VolumeType2=VOLUME_TICK; //объём 2 input uint UpLevel2=70; //уровень перезакупа 2 input uint DnLevel2=30; //уровень перепроданности 2 input ENUM_TIMEFRAMES TimeFrame3=PERIOD_H1; //период графика 3 input uint MFIPeriod3=15; //период MFI 3 input ENUM_APPLIED_VOLUME VolumeType3=VOLUME_TICK; //объём 3 input uint UpLevel3=70; //уровень перезакупа 3 input uint DnLevel3=30; //уровень перепроданности 3 input ENUM_TIMEFRAMES TimeFrame4=PERIOD_H1; //период графика 4 input uint MFIPeriod4=19; //период MFI 4 input ENUM_APPLIED_VOLUME VolumeType4=VOLUME_TICK; //объём 4 input uint UpLevel4=70; //уровень перезакупа 4 input uint DnLevel4=30; //уровень перепроданности 4 input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H1; //период графика 5 input uint MFIPeriod5=23; //период MFI 5 input ENUM_APPLIED_VOLUME VolumeType5=VOLUME_TICK; //объём 5 input uint UpLevel5=70; //уровень перезакупа 5 input uint DnLevel5=30; //уровень перепроданности 5 input ENUM_TIMEFRAMES TimeFrame6=PERIOD_H1; //период графика 6 input uint MFIPeriod6=27; //период MFI 6 input ENUM_APPLIED_VOLUME VolumeType6=VOLUME_TICK; //объём 6 input uint UpLevel6=70; //уровень перезакупа 6 input uint DnLevel6=30; //уровень перепроданности 6 input ENUM_TIMEFRAMES TimeFrame7=PERIOD_H1; //период графика 7 input uint MFIPeriod7=31; //период MFI 7 input ENUM_APPLIED_VOLUME VolumeType7=VOLUME_TICK; //объём 7 input uint UpLevel7=70; //уровень перезакупа 7 input uint DnLevel7=30; //уровень перепроданности 7 input ENUM_TIMEFRAMES TimeFrame8=PERIOD_H1; //период графика 8 input uint MFIPeriod8=35; //период MFI 8 input ENUM_APPLIED_VOLUME VolumeType8=VOLUME_TICK; //объём 8 input uint UpLevel8=70; //уровень перезакупа 8 input uint DnLevel8=30; //уровень перепроданности 8 input ENUM_TIMEFRAMES TimeFrame9=PERIOD_H1; //период графика 9 input uint MFIPeriod9=39; //период MFI 9 input ENUM_APPLIED_VOLUME VolumeType9=VOLUME_TICK; //объём 9 input uint UpLevel9=70; //уровень перезакупа 9 input uint DnLevel9=30; //уровень перепроданности 9 input ENUM_TIMEFRAMES TimeFrame10=PERIOD_H1; //период графика 10 input uint MFIPeriod10=43; //период MFI 10 input ENUM_APPLIED_VOLUME VolumeType10=VOLUME_TICK; //объём 10 input uint UpLevel10=70; //уровень перезакупа 10 input uint DnLevel10=30; //уровень перепроданности 10 //---- input color CpColor=clrDarkOrchid; //цвет названия индикатора input color UpColor=clrBlue; //цвет перекупленности индикатора input color DnColor=clrGold; //цвет перепроданности индикатора 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; ENUM_APPLIED_VOLUME m_VolumeType; 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="MFITrend_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]