//+------------------------------------------------------------------+ //| WilliamsB.mq4 | //| Atomic3D (c) | //| duke3datomic@mail.ru | //+------------------------------------------------------------------+ #property copyright "Atomic3D (c)" #property link "duke3datomic@mail.ru" #property indicator_chart_window //--- input parameters extern string _____TimeFrame_Setting______ ="0-0, 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W1, 9-MN1"; extern int TF=0; // Текущий период extern string _____Alligator_Settings_____ = "_____________________________________"; extern double Jaw_period = 13; // Период усреднения синей линии (челюсти аллигатора). extern double Jaw_shift = 8; // Смещение синей линии относительно графика цены. extern double Teeth_period = 8; // Период усреднения красной линии (зубов аллигатора). extern double Teeth_shift = 5; // Смещение красной линии относительно графика цены. extern double Lips_period = 5; // Период усреднения зеленой линии (губ аллигатора). extern double Lips_shift = 3; // Смещение зеленой линии относительно графика цены. extern int MA_method = 2; // Метод усреднения скользящей extern int Aplied_price = 4; // Используемая цена extern string _____Balance_Line_Value_____ ="_____ 1-Губы, 2-Зубы, 3-Челюсть _____"; extern int Balance_Line=2; // 1-Губы, 2-Зубы, 3-Челюсть extern string _________Interface__________ = "_____ Настройки интерфейса _____"; extern bool ShowBaseBar = true; extern bool ShowLine_1 = true; extern bool ShowLine_2 = true; extern bool ShowArrows_1 = true; extern bool ShowArrows_2 = true; extern bool ShowPriceLabels_1 = true; extern bool ShowPriceLabels_2 = true; extern color LineUp_1 = Lime; extern color LineUp_2 = Lime; extern color LineDn_1 = DeepPink; extern color LineDn_2 = DeepPink; double FractalUp; double FractalDn; double GatorUp_0; double GatorDn_0; double GatorUp_1; double GatorDn_1; double GatorUp_2; double GatorDn_2; double AlligatorJaw_0; double AlligatorTeeth_0; double AlligatorLips_0; double AlligatorJaw_1; double AlligatorTeeth_1; double AlligatorLips_1; double AlligatorJaw_2; double AlligatorTeeth_2; double AlligatorLips_2; string TradeSymbol; double BalanceLine; double AlligatorX[]; double FractalUpBuf[]; double FractalDnBuf[]; double AO_0; double AO_1; double AO_2; double AO_3; double AC_0; double AC_1; double AC_2; double AC_3; double GatorUpBuf[]; double GatorDnBuf[]; double AlligatorJawBuf[]; double AlligatorTeethBuf[]; double AlligatorLipsBuf[]; double AOBuf[]; double ACBuf[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators ObjectCreate("qwe",OBJ_LABEL,0,0,0); ObjectSet("qwe",OBJPROP_CORNER,1); ObjectSet("qwe",OBJPROP_XDISTANCE,20); ObjectSet("qwe",OBJPROP_YDISTANCE,20); ObjectSet("qwe",OBJPROP_COLOR,Red); //ObjectSet("qwe", OBJPROP_BACK, true); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("BaseBar_UP_1"); ObjectDelete("BaseBar_DN_1"); ObjectDelete("BL_UP_1"); ObjectDelete("BL_UP_2"); ObjectDelete("BL_UP_3"); ObjectDelete("BL_DN_1"); ObjectDelete("BL_DN_2"); ObjectDelete("BL_DN_3"); ObjectDelete("BL_Label_UP"); ObjectDelete("BL_Label_DN"); ObjectDelete("BL_Label_UP_1"); ObjectDelete("BL_Label_UP_2"); ObjectDelete("BL_Label_UP_3"); ObjectDelete("BL_Label_UP_4"); ObjectDelete("BL_Label_DN_1"); ObjectDelete("BL_Label_DN_2"); ObjectDelete("BL_Label_DN_3"); ObjectDelete("BL_Label_DN_4"); ObjectDelete("BL_TrendLineUp_1"); ObjectDelete("BL_TrendLineUp_2"); ObjectDelete("BL_TrendLineUp_3"); ObjectDelete("BL_TrendLineDn_1"); ObjectDelete("BL_TrendLineDn_2"); ObjectDelete("BL_TrendLineDn_3"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- RefreshRates(); int limit,i,j,k,l,m,n,o,p; int Fr_up,Fr_dn; string Comm1, Comm2, Comm3, Comm4, Comm5, Comm6, Comm7, Comm8, Comm9, Comm10, Comm11, Comm12, Comm13, Comm14; int countBarsHigh; int countBarsLow; int HighBuff[]; int LowBuff[]; int prcHighBuff; int prcHighBuff_1; int prcLowBuff; int prcLowBuff_1; int PeriodK=24; int numBaseBarUp; int numBaseBarDn; int numBaseBarUp_1; int numBaseBarDn_1; int numBaseBarUpBuff[]; int numBaseBarDnBuff[]; //int counted_bars = IndicatorCounted(); TradeSymbol=Symbol(); //---- основной цикл //limit = Bars - counted_bars - 1; // Индекс первого непосчитанного int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(counted_bars==0) limit-=1+PeriodK+1; ArrayResize(HighBuff,Bars); ArrayResize(LowBuff,Bars); ArrayResize(numBaseBarUpBuff,Bars); ArrayResize(numBaseBarDnBuff,Bars); for(i=0; i<=limit; i++) { FractalUp = iFractals(TradeSymbol, fGetTimeFrame(TF), MODE_UPPER, 5); FractalDn = iFractals(TradeSymbol, fGetTimeFrame(TF), MODE_LOWER, 5); GatorUp_0 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_UPPER, 0); GatorDn_0 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_LOWER, 0); GatorUp_1 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_UPPER, 1); GatorDn_1 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_LOWER, 1); GatorUp_2 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_UPPER, 2); GatorDn_2 = iGator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_LOWER, 2); AlligatorJaw_0 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORJAW, 0); AlligatorTeeth_0 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORTEETH, 0); AlligatorLips_0 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORLIPS, 0); AlligatorJaw_1 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORJAW, 1); AlligatorTeeth_1 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORTEETH, 1); AlligatorLips_1 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORLIPS, 1); AlligatorJaw_2 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORJAW, 2); AlligatorTeeth_2 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORTEETH, 2); AlligatorLips_2 = iAlligator(TradeSymbol, fGetTimeFrame(TF), Jaw_period, Jaw_shift, Teeth_period, Teeth_shift, Lips_period, Lips_shift, fGetMethod(MA_method), fGetPrice(Aplied_price), MODE_GATORLIPS, 2); AO_0 = iAO(TradeSymbol, fGetTimeFrame(TF), 0); AO_1 = iAO(TradeSymbol, fGetTimeFrame(TF), 1); AO_2 = iAO(TradeSymbol, fGetTimeFrame(TF), 2); AO_3 = iAO(TradeSymbol, fGetTimeFrame(TF), 3); AC_0 = iAC(TradeSymbol, fGetTimeFrame(TF), 0); AC_1 = iAC(TradeSymbol, fGetTimeFrame(TF), 1); AC_2 = iAC(TradeSymbol, fGetTimeFrame(TF), 2); AC_3 = iAC(TradeSymbol, fGetTimeFrame(TF), 3); string txtFractalUp_1 = "Фрактал вверх выше линии баланса"; string txtFractalDn_1 = "Фрактал вниз ниже линии баланса"; string txtFractalUp_2 = "Фрактал вверх ниже линии баланса"; string txtFractalDn_2 = "Фрактал вниз выше линии баланса"; string txtAO_1 = "Блюдце выше ноля (покупка)"; string txtAO_2 = "Блюдце ниже ноля (продажа)"; string txtAO_3 = "Пересечение 0 вверх (покупка)"; string txtAO_4 = "Пересечение 0 вниз (продажа)"; string txtAC_1 = "Покупка выше нулевой линии"; string txtAC_2 = "Продажа ниже нулевой линии"; string txtAC_3 = "Покупка ниже нулевой линии"; string txtAC_4 = "Продажа выше нулевой линии"; string txtZoneTrade_1 = "Зеленый бар"; string txtZoneTrade_2 = "Красный бар"; string txtZoneTrade_3 = "Серый бар"; if(Balance_Line == 1) { BalanceLine = AlligatorLips_0; } if(Balance_Line == 2) { BalanceLine = AlligatorTeeth_0; } if(Balance_Line == 3) { BalanceLine = AlligatorJaw_0; } //+----- Fractals --------------------------------------------------------------+ if(FractalUp>BalanceLine) { Comm1=txtFractalUp_1; } if(FractalDnBalanceLine) { Comm1=txtFractalDn_2; } //+------ AO -------------------------------------------------------------------+ if(AO_0>0 && AO_1>0 && AO_2>0 && AO_2>AO_1 && AO_1AO_0) { Comm2=txtAO_2; } if(AO_0>0 && AO_1>0 && AO_2<0 && AO_3<0 && AO_0>AO_1 && AO_1>AO_2 && AO_2>AO_3) { Comm2=txtAO_3; } if(AO_0<0 && AO_1<0 && AO_2>0 && AO_3>0 && AO_00 && AC_1>0 && AC_2>0 && AC_2AO_3) { Comm3=txtAC_1; } if(AC_0<0 && AC_1<0 && AC_2<0 && AC_2>AC_1 && AC_1>AC_0 && AC_2AC_1 && AC_1>AC_2 && AC_2>AC_3) { Comm3=txtAC_3; } if(AC_0>0 && AC_1>0 && AC_2>0 && AC_3>0 && AC_0AO_1 && AC_0>AC_1) { Comm4=txtZoneTrade_1; } if(AO_0AC_1) || (AO_0>AO_1 && AC_0=0; k--) { if(High[k+1]>High[k]) { countBarsHigh++; numBaseBarUp=k; numBaseBarUpBuff[l]=k; HighBuff[l]=High[k]; l=k+2; while(lHigh[k+1]) { numBaseBarUp_1=l; break; } l++; } } if(Low[k+1]