Индикаторы: Уровни Круглых Чисел

 

Уровни Круглых Чисел:

Бытует мнение, что в районе круглых чисел (1.20000, 1.21000, и т.д.) цены находят существенную поддержку или сопротивление.

Поэтому дабы не усложнять себе жизнь выставлением горизонтальных линий, мною был разработан индикатор, который легко и просто создает эти уровни.

Round Numbers

Author: Чина

 

Рамин Раджабов, ай как нехорошо а

 

Не очень хороший индикатор.... (((( Потому что вчера сделал разметку, расчертил график, линии тренда, ур. поддержки и сопротивления, а сегодня открываю терминал...ВСЁ стерто, кроме этих круглых чисел.... т.е. какой то бак в коде индикатора.... который стирает все линии находящиеся на графике.

 
zax:

Не очень хороший индикатор.... (((( Потому что вчера сделал разметку, расчертил график, линии тренда, ур. поддержки и сопротивления, а сегодня открываю терминал...ВСЁ стерто, кроме этих круглых чисел.... т.е. какой то бак в коде индикатора.... который стирает все линии находящиеся на графике.


Ну вот совместными усилиями и море по колено :)

 

Samura, ну что исправишь этот косяк?

так индюк очень удобный, давно искал подобное, вот только поподалось какое то все сложное и непонятное.

 
zax:

Samura, ну что исправишь этот косяк?

так индюк очень удобный, давно искал подобное, вот только поподалось какое то все сложное и непонятное.

Будет время посмотрю

 

А сколько этих уровней вверх и вниз ????????????????????????????????????????????

 
max-korol писал(а):

А сколько этих уровней вверх и вниз ????????????????????????????????????????????


Ты ж сам количество ставишь а скока вверх и вниз можешь самостоятельно в коде наколдовать :)

 

А для чего вот эта функция ObjectsDeleteAll() ??? Совсем не понятно....

Ладно вообщем сам разобрался, надо эту функцию закоментить...)

Спасибо.

 
#property indicator_chart_window
extern int LinesAboveBelow= 10;
extern color LineColorMain= Red;
extern color LineColorSub= DarkGray;
extern bool ShowSecondLine1= true;
extern int SecondLine1Value= 33;
extern bool ShowSecondLine2= true;
extern int SecondLine2Value= 66;
extern color LineColorSecond= DarkGray;
double k;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   switch(Digits)
    {
    case 4: k=0.0001;
            break;
    case 3: k=0.001;
            break;
    case 2: k=0.01;
            break;
    case 1: k=0.1;
            break;
    case 0: k=1;
            break;
    }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   int obj_total= ObjectsTotal();
     for(int i= obj_total; i>=0; i--) 
     {
      string name= ObjectName(i);
      if (StringSubstr(name,0,11)=="[SweetSpot]")
         ObjectDelete(name);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, ssp1, style, ssp,ssp2,ssp3;
   double ds1;
   color linecolor;
   ssp1= Bid/Point;
   ssp1= ssp1 - ssp1%50;
     for(i= -LinesAboveBelow; i<LinesAboveBelow; i++) 
     {
      ssp= ssp1+(i*50);
        if (ssp%100==0) 
        {
         style= STYLE_SOLID;
         linecolor= LineColorMain;
         ds1= ssp*Point;
         SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
         if (ShowSecondLine1)
            {
               ds1= ssp*Point-(k*100-k*SecondLine1Value);
               style= STYLE_DOT;
               linecolor= LineColorSecond;
               SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
            }
         if (ShowSecondLine2)
            {
               ds1= ssp*Point-(k*100-k*SecondLine2Value);
               style= STYLE_DOT;
               linecolor= LineColorSecond;
               SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
            }
        }
      
        else 
        {
         style= STYLE_DOT;
         linecolor= LineColorSub;
         ds1= ssp*Point;
         SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
        }
     }        
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Helper                                                           |
//+------------------------------------------------------------------+
void SetLevel(string text, double level, color col1, int linestyle)
  {
   int digits= Digits;
   string linename= "[SweetSpot] " + text + " Line",
   pricelabel;
   // create or move the horizontal line   
     if (ObjectFind(linename)!=0) 
     {
      ObjectCreate(linename, OBJ_HLINE, 0, 0, level);
      ObjectSet(linename, OBJPROP_STYLE, linestyle);
      ObjectSet(linename,OBJPROP_BACK,true);
      ObjectSet(linename, OBJPROP_COLOR, col1);
     }
     else 
     {
      ObjectMove(linename, 0, Time[0], level);
     }
  }
//+------------------------------------------------------------------+
#property indicator_chart_window
extern int LinesAboveBelow= 10;
extern color LineColorMain= SaddleBrown;
extern color LineColorSub= Gray;
extern bool ShowSecondLine1= true;
extern int SecondLine1Value= 330;
extern bool ShowSecondLine2= true;
extern int SecondLine2Value= 660;
extern color LineColorSecond= Gray;
double k;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   switch(Digits)
    {
    case 5: k=0.00001;
            break;
    case 4: k=0.0001;
            break;
    case 3: k=0.001;
            break;
    case 2: k=0.01;
            break;
    case 1: k=0.1;
            break;
    case 0: k=1;
            break;
    }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   int obj_total= ObjectsTotal();
     for(int i= obj_total; i>=0; i--) 
     {
      string name= ObjectName(i);
      if (StringSubstr(name,0,11)=="[SweetSpot]")
         ObjectDelete(name);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, ssp1, style, ssp,ssp2,ssp3;
   double ds1;
   color linecolor;
   ssp1= Bid/Point;
   ssp1= ssp1 - ssp1%500;
     for(i= -LinesAboveBelow; i<LinesAboveBelow; i++) 
     {
      ssp= ssp1+(i*500);
        if (ssp%1000==0) 
        {
         style= STYLE_SOLID;
         linecolor= LineColorMain;
         ds1= ssp*Point;
         SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
         if (ShowSecondLine1)
            {
               ds1= ssp*Point-(k*1000-k*SecondLine1Value);
               style= STYLE_DOT;
               linecolor= LineColorSecond;
               SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
            }
         if (ShowSecondLine2)
            {
               ds1= ssp*Point-(k*1000-k*SecondLine2Value);
               style= STYLE_DOT;
               linecolor= LineColorSecond;
               SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
            }
        }
      
        else 
        {
         style= STYLE_DOT;
         linecolor= LineColorSub;
         ds1= ssp*Point;
         SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style);
        }
     }        
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Helper                                                           |
//+------------------------------------------------------------------+
void SetLevel(string text, double level, color col1, int linestyle)
  {
   int digits= Digits;
   string linename= "[SweetSpot] " + text + " Line",
   pricelabel;
   // create or move the horizontal line   
     if (ObjectFind(linename)!=0) 
     {
      ObjectCreate(linename, OBJ_HLINE, 0, 0, level);
      ObjectSet(linename, OBJPROP_STYLE, linestyle);
      ObjectSet(linename,OBJPROP_BACK,true);
      ObjectSet(linename, OBJPROP_COLOR, col1);
     }
     else 
     {
      ObjectMove(linename, 0, Time[0], level);
     }
  }
//+------------------------------------------------------------------+

посмотри этот индикатор. на чем угодно смотри. но на фунте посмотреть стоит ) к круглым числам можно еще добавить "красивые", например 1.5555, 1.3333 и т.п. (кстати у разных пар есть свои предпочтения).

прикрепленный индикатор - модификация уже существовавшего ранее, добавлены уровни на котировках х.хх33, х.хх66, х.хх50.

второй индикатор модифицирован под пятизнаковые котировки

 
madscientist:

посмотри этот индикатор. на чем угодно смотри. но на фунте посмотреть стоит ) к круглым числам можно еще добавить "красивые", например 1.5555, 1.3333 и т.п. (кстати у разных пар есть свои предпочтения).

прикрепленный индикатор - модификация уже существовавшего ранее, добавлены уровни на котировках х.хх33, х.хх66, х.хх50.

второй индикатор модифицирован под пятизнаковые котировки

К нему бы добавить ещё "мегафигуры" для старших ТФ - 0.1 и 0.5, да пожирнее.. пример: