//+------------------------------------------------------------------+ //| DualFiboLine_LastPeriod.mq4 | //| Уровни Фибонначи (двунаправленные) | //| по предыдущему завершённому периоду | //| Copyright © 2011, Andrey N. Bolkonsky | //| 04/03.2011 | //| email: abolk@yandex.ru | skype: abolk1 | //| Пишу и модернизирую - советники, индикаторы, скрипты - под заказ | //+------------------------------------------------------------------+ // При создании DualFiboLine_LastPeriod (модернизация и адаптация) // использовался скрипт со следующим текстом copyright: // // yuraz (C) 2006-2009 yzh@mail.ru // для создания двухсторонней фибо // 2006, благодарность за содействие Вадиму Жунко // 2008, Виталий // // название файла скрипта: YURAZ_CreateDualFibo.mq4 //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Andrey N. Bolkonsky" #property link "abolk@yandex.ru" //---- indicator settings #property indicator_chart_window //---- input parameters #define _LabelFibo "LabelFiboLine" #define _LenFibo 13 //---- indicator parameters extern int _LastPeriod =PERIOD_D1; // Прошедший период, на который устанавливаются уровни Фибо extern int _shiftStart =1; // Номер бара назад (таймфрейм периода), с которго начинается прошедший период extern int _shiftEnd =0; // Номер бара назад (таймфрейм периода), с которго начинается текущий период //---- FiboLine parameters extern color gFiboTLColor =Red; // Цвет настроечной линии Фибо (TUNING LINE) extern color gFiboColor =Red; // Цвет Фибо extern int gFiboTLStyle =STYLE_DOT; // Настройка стиля настроечной линии Фибо (TUNING LINE) extern int gFiboStyle =STYLE_SOLID; // Настройка стиля линии Фибо extern int gFiboTLStyle_WIDTH =0; // Настройка толщины настроечной линии Фибо (TUNING LINE) extern int gFiboStyle_WIDTH =0; // Настройка толщины линии Фибо extern bool gFiboFONE =true; // true - фоновое отображение линий Фибо // корректировка уровней: 0 - уровень не отображать extern string str1 ="===== Верхние уровни"; extern double gsFibo31 = 1109.4; // 31 1109.0 extern double gsFibo30 = 685.4; // 30 685.4 extern double gsFibo29 = 598.0; // 29 598.0 extern double gsFibo28 = 510.8; // 28 510.8 extern double gsFibo27 = 423.6; // 27 423.6 extern double gsFibo26 = 361.8; // 26 369.6 extern double gsFibo25 = 311.0; // 25 315.7 extern double gsFibo24 = 261.8; // 24 261.8 extern double gsFibo23 = 211.0; // 23 211.8 extern double gsFibo22 = 161.8; // 22 161.8 extern double gsFibo21 = 138.2; // 21 138.2 extern string str2 ="===== Внутренние уровни"; double gsFibo20 = 100.0; // 20 0.0/100.0 extern double gsFibo19 = 88.2; // 19 11.8/ 88.2 extern double gsFibo18 = 76.4; // 18 23.6/ 76.4 extern double gsFibo17 = 61.8; // 17 38.2/ 61.8 extern double gsFibo16 = 50.0; // 16 50.0/ 50.0 extern double gsFibo15 = 38.2; // 15 61.8/ 38.2 extern double gsFibo14 = 23.4; // 14 76.4/ 23.4 extern double gsFibo13 = 11.8; // 13 88.2/ 11.8 double gsFibo12 = 0.0; // 12 100.0/ 0.0 extern string str3 ="===== Нижние уровни"; extern double gsFibo11 = 138.2; // 11 138.2 extern double gsFibo10 = 161.8; // 10 161.8 extern double gsFibo09 = 211.0; // 09 211.8 extern double gsFibo08 = 261.8; // 08 261.8 extern double gsFibo07 = 311.0; // 07 315.7 extern double gsFibo06 = 361.8; // 06 369.6 extern double gsFibo05 = 423.6; // 05 423.6 extern double gsFibo04 = 510.4; // 04 510.8 extern double gsFibo03 = 598.4; // 03 598.0 extern double gsFibo02 = 685.4; // 02 685.4 extern double gsFibo01 = 1109.4; // 01 1109.0 // double gsFibo31d; double gsFibo30d; double gsFibo29d; double gsFibo28d; double gsFibo27d; double gsFibo26d; double gsFibo25d; double gsFibo24d; double gsFibo23d; double gsFibo22d; double gsFibo21d; // double gsFibo20d; double gsFibo19d; double gsFibo18d; double gsFibo17d; double gsFibo16d; double gsFibo15d; double gsFibo14d; double gsFibo13d; double gsFibo12d; // double gsFibo11d; double gsFibo10d; double gsFibo09d; double gsFibo08d; double gsFibo07d; double gsFibo06d; double gsFibo05d; double gsFibo04d; double gsFibo03d; double gsFibo02d; double gsFibo01d; //---- bool _isNewPeriod =true; //---- //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { initFibo(); DeleteGraficAlert(_LabelFibo,_LenFibo); StartGraficAlert_Fibo(); //---- done return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { datetime time1,time2; double price1,price2; //---- if(iTime(Symbol(),Period(),0)!=iTime(Symbol(),Period(),1)) _isNewPeriod=true; // if(ObjectFind(_LabelFibo)==-1) _isNewPeriod=true; //---- if(_isNewPeriod) { StartGraficAlert_Fibo(); _isNewPeriod=false; } //---- done return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { DeleteGraficAlert(_LabelFibo,_LenFibo); //---- done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DeleteGraficAlert(string define_Label, int len) { for(int i = ObjectsTotal() - 1; i >= 0; i--) { string label = ObjectName(i); if(StringSubstr(label, 0, len) != define_Label) continue; ObjectDelete(label); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void initFibo() { gsFibo31d =(gsFibo31)/100; gsFibo30d =(gsFibo30)/100; gsFibo29d =(gsFibo29)/100; gsFibo28d =(gsFibo28)/100; gsFibo27d =(gsFibo27)/100; gsFibo26d =(gsFibo26)/100; gsFibo25d =(gsFibo25)/100; gsFibo24d =(gsFibo24)/100; gsFibo23d =(gsFibo23)/100; gsFibo22d =(gsFibo22)/100; gsFibo21d =(gsFibo21)/100; // gsFibo20d =(gsFibo20)/100; gsFibo19d =(gsFibo19)/100; gsFibo18d =(gsFibo18)/100; gsFibo17d =(gsFibo17)/100; gsFibo16d =(gsFibo16)/100; gsFibo15d =(gsFibo15)/100; gsFibo14d =(gsFibo14)/100; gsFibo13d =(gsFibo13)/100; gsFibo12d =(gsFibo12)/100; // gsFibo11d =(gsFibo11-100)/100; gsFibo10d =(gsFibo10-100)/100; gsFibo09d =(gsFibo09-100)/100; gsFibo08d =(gsFibo08-100)/100; gsFibo07d =(gsFibo07-100)/100; gsFibo06d =(gsFibo06-100)/100; gsFibo05d =(gsFibo05-100)/100; gsFibo04d =(gsFibo04-100)/100; gsFibo03d =(gsFibo03-100)/100; gsFibo02d =(gsFibo02-100)/100; gsFibo01d =(gsFibo01-100)/100; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void StartGraficAlert_Fibo() { datetime time1,time2; double price1,price2; //---- time1 =iTime(Symbol(),_LastPeriod,_shiftEnd); price1=iHigh(Symbol(),_LastPeriod,_shiftStart); time2 =iTime(Symbol(),_LastPeriod,_shiftStart); price2=iLow (Symbol(),_LastPeriod,_shiftStart); // if(ObjectFind(_LabelFibo)==-1) CreateGraficAlert_Fibo(0,0,0,0); // ChangeGraficAlert_Fibo(time1,price1,time2,price2); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CreateGraficAlert_Fibo(datetime time1, double price1, datetime time2, double price2) { ObjectCreate(_LabelFibo,OBJ_FIBO,0,time1,price1,time2,price2); ObjectSet(_LabelFibo,OBJPROP_RAY,false); ObjectSet(_LabelFibo,OBJPROP_FIBOLEVELS,31); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ChangeGraficAlert_Fibo(datetime time1, double price1, datetime time2, double price2) { ObjectSet(_LabelFibo,OBJPROP_TIME1, time1 ); ObjectSet(_LabelFibo,OBJPROP_PRICE1,price1); ObjectSet(_LabelFibo,OBJPROP_TIME2, time2 ); ObjectSet(_LabelFibo,OBJPROP_PRICE2,price2); //---- Верхние уровни if(gsFibo31!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 0, gsFibo31d ); ObjectSetFiboDescription(_LabelFibo, 0,DoubleToStr(gsFibo31 ,1)); } if(gsFibo30!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 1, gsFibo30d ); ObjectSetFiboDescription(_LabelFibo, 1,DoubleToStr(gsFibo30 ,1)); } if(gsFibo29!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 2, gsFibo29d ); ObjectSetFiboDescription(_LabelFibo, 2,DoubleToStr(gsFibo29 ,1)); } if(gsFibo28!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 3, gsFibo28d ); ObjectSetFiboDescription(_LabelFibo, 3,DoubleToStr(gsFibo28 ,1)); } if(gsFibo27!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 4, gsFibo27d ); ObjectSetFiboDescription(_LabelFibo, 4,DoubleToStr(gsFibo27 ,1)); } if(gsFibo26!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 5, gsFibo26d ); ObjectSetFiboDescription(_LabelFibo, 5,DoubleToStr(gsFibo26 ,1)); } if(gsFibo25!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 6, gsFibo25d ); ObjectSetFiboDescription(_LabelFibo, 6,DoubleToStr(gsFibo25 ,1)); } if(gsFibo24!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 7, gsFibo24d ); ObjectSetFiboDescription(_LabelFibo, 7,DoubleToStr(gsFibo24 ,1)); } if(gsFibo23!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 8, gsFibo23d ); ObjectSetFiboDescription(_LabelFibo, 8,DoubleToStr(gsFibo23 ,1)); } if(gsFibo22!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+ 9, gsFibo22d ); ObjectSetFiboDescription(_LabelFibo, 9,DoubleToStr(gsFibo22 ,1)); } if(gsFibo21!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+10, gsFibo21d ); ObjectSetFiboDescription(_LabelFibo, 10,DoubleToStr(gsFibo21 ,1)); } //---- Внутренние уровни ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+11, gsFibo20d ); ObjectSetFiboDescription(_LabelFibo, 11,DoubleToStr(100-gsFibo20,1)+"/"+DoubleToStr(gsFibo20,1)); if(gsFibo19!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+12, gsFibo19d ); ObjectSetFiboDescription(_LabelFibo, 12,DoubleToStr(100-gsFibo19,1)+"/"+DoubleToStr(gsFibo19,1)); } if(gsFibo18!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+13, gsFibo18d ); ObjectSetFiboDescription(_LabelFibo, 13,DoubleToStr(100-gsFibo18,1)+"/"+DoubleToStr(gsFibo18,1)); } if(gsFibo17!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+14, gsFibo17d ); ObjectSetFiboDescription(_LabelFibo, 14,DoubleToStr(100-gsFibo17,1)+"/"+DoubleToStr(gsFibo17,1)); } if(gsFibo16!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+15, gsFibo16d ); ObjectSetFiboDescription(_LabelFibo, 15,DoubleToStr(100-gsFibo16,1)+"/"+DoubleToStr(gsFibo16,1)); } if(gsFibo15!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+16, gsFibo15d ); ObjectSetFiboDescription(_LabelFibo, 16,DoubleToStr(100-gsFibo15,1)+"/"+DoubleToStr(gsFibo15,1)); } if(gsFibo14!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+17, gsFibo14d ); ObjectSetFiboDescription(_LabelFibo, 17,DoubleToStr(100-gsFibo14,1)+"/"+DoubleToStr(gsFibo14,1)); } if(gsFibo13!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+18, gsFibo13d ); ObjectSetFiboDescription(_LabelFibo, 18,DoubleToStr(100-gsFibo13,1)+"/"+DoubleToStr(gsFibo13,1)); } ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+19, gsFibo12d ); ObjectSetFiboDescription(_LabelFibo, 19,DoubleToStr(100-gsFibo12,1)+"/"+DoubleToStr(gsFibo12,1)); //---- Нижние уровни if(gsFibo11!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+20, -gsFibo11d ); ObjectSetFiboDescription(_LabelFibo, 20,DoubleToStr( gsFibo11 ,1)); } if(gsFibo10!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+21, -gsFibo10d ); ObjectSetFiboDescription(_LabelFibo, 21,DoubleToStr( gsFibo10 ,1)); } if(gsFibo09!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+22, -gsFibo09d ); ObjectSetFiboDescription(_LabelFibo, 22,DoubleToStr( gsFibo09 ,1)); } if(gsFibo08!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+23, -gsFibo08d ); ObjectSetFiboDescription(_LabelFibo, 23,DoubleToStr( gsFibo08 ,1)); } if(gsFibo07!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+24, -gsFibo07d ); ObjectSetFiboDescription(_LabelFibo, 24,DoubleToStr( gsFibo07 ,1)); } if(gsFibo06!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+25, -gsFibo06d ); ObjectSetFiboDescription(_LabelFibo, 25,DoubleToStr( gsFibo06 ,1)); } if(gsFibo05!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+26, -gsFibo05d ); ObjectSetFiboDescription(_LabelFibo, 26,DoubleToStr( gsFibo05 ,1)); } if(gsFibo04!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+27, -gsFibo04d ); ObjectSetFiboDescription(_LabelFibo, 27,DoubleToStr( gsFibo04 ,1)); } if(gsFibo03!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+28, -gsFibo03d ); ObjectSetFiboDescription(_LabelFibo, 28,DoubleToStr( gsFibo03 ,1)); } if(gsFibo02!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+29, -gsFibo02d ); ObjectSetFiboDescription(_LabelFibo, 29,DoubleToStr( gsFibo02 ,1)); } if(gsFibo01!=0) { ObjectSet (_LabelFibo,OBJPROP_FIRSTLEVEL+30, -gsFibo01d ); ObjectSetFiboDescription(_LabelFibo, 30,DoubleToStr( gsFibo01 ,1)); } //---- ObjectSet(_LabelFibo,OBJPROP_COLOR, gFiboTLColor ); ObjectSet(_LabelFibo,OBJPROP_LEVELCOLOR,gFiboColor ); ObjectSet(_LabelFibo,OBJPROP_STYLE, gFiboTLStyle ); ObjectSet(_LabelFibo,OBJPROP_LEVELSTYLE,gFiboStyle ); ObjectSet(_LabelFibo,OBJPROP_WIDTH, gFiboTLStyle_WIDTH); ObjectSet(_LabelFibo,OBJPROP_LEVELWIDTH,gFiboStyle_WIDTH ); ObjectSet(_LabelFibo,OBJPROP_BACK, gFiboFONE ); } //+------------------------------------------------------------------+