Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

AlterGrid v2 - индикатор для MetaTrader 4

Основано на key_levels и TimeZones
Опубликовал:
Михаил
Просмотров:
10669
Рейтинг:
(11)
Опубликован:
2015.02.23 10:29
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Основан на индикаторах KeyLevels и TimeZones.

Отключает встроенную сетку MetaTrader 4.

Рисует "круглые" ценовые уровни и разделители.

Изменения в версии 2:

  • добавлена реакция на изменение масштаба графика;
  • разделители времени убраны на задний план;
  • добавлен выбор стиля линий.

Замена стандартной сетки в MetaTrader 4.

//+------------------------------------------------------------------+
//|                                                     AlterGrid v2 |
//|                                          Copyright 2015, mrak297 |
//|                             http://www.mql5.com/ru/users/mrak297 |
//+------------------------------------------------------------------+
#property copyright "© 2015 mrak297"
#property link      "http://www.mql5.com/ru/users/mrak297"
#property indicator_chart_window

input color  Color          = DimGray; 
input ENUM_LINE_STYLE Style = STYLE_DOT; 

double dXPoint = 1;
double Div = 0;
double i = 0;
double HighPrice = 0;
double LowPrice  = 0;
int    iDigits;
int    L = 0;
//+------------------------------------------------------------------+
int start()
  {
   HighPrice = MathRound(WindowPriceMax(0) * Div);
   LowPrice = MathRound(WindowPriceMin(0) * Div);

   for (i = LowPrice; i <= HighPrice; i++)
   {
   if (ChartPeriod(0) < 30) 
     {
      for (L=10; L<=90; L=L+10)
      {
       if (StringSubstr(DoubleToStr(i/Div,iDigits),StringLen(DoubleToStr(i/Div,iDigits))-2,2) == L) 
         {
          if (ObjectFind("0 "+DoubleToStr(i,0)) != 0) 
            {
             DrawHLine("0 "+DoubleToStr(i,0), i/Div);
            }
         }
      }
     }
     
   if (ChartPeriod(0) < 1440) 
     {
      if (StringSubstr(DoubleToStr(i/Div,iDigits),StringLen(DoubleToStr(i/Div,iDigits))-2,2) == "50") 
        {
         if (ObjectFind("00 "+DoubleToStr(i,0)) != 0) 
           {
            DrawHLine("00 "+DoubleToStr(i,0), i/Div);
           }
        }
     } 

   if (ChartPeriod(0) < 10080) 
     {
      if (MathMod(i, 10) == 0.0) 
        {
         if (ObjectFind("000 " + DoubleToStr(i, 0)) != 0) 
           {
            DrawHLine("000 " + DoubleToStr(i, 0), i/Div);
           }
        }
     }
     
   if (ChartPeriod(0) > 1140) 
     {
      if (MathMod(i, 100) == 0.0) 
        {
         if (ObjectFind("0000 " + DoubleToStr(i, 0)) != 0) 
           {
            DrawHLine("0000 " + DoubleToStr(i, 0), i/Div);
           }
        }
     }
     
      if (ChartGetInteger(0, CHART_SCALE) < 1 && ChartPeriod(0) == 1) ObjectDelete(0,"0 "+DoubleToStr(i,0));
      if (ChartGetInteger(0, CHART_SCALE) < 2 && ChartPeriod(0) == 5) ObjectDelete(0,"0 "+DoubleToStr(i,0));
      if (ChartGetInteger(0, CHART_SCALE) < 2 && ChartPeriod(0) == 15) ObjectDelete(0,"0 "+DoubleToStr(i,0));
      if (ChartGetInteger(0, CHART_SCALE) < 1 && ChartPeriod(0) == 60) ObjectDelete(0,"00 "+DoubleToStr(i,0));
      if (ChartGetInteger(0, CHART_SCALE) < 2 && ChartPeriod(0) == 240) ObjectDelete(0,"00 "+DoubleToStr(i,0));
      if (ChartGetInteger(0, CHART_SCALE) < 4 && ChartPeriod(0) == 1440) ObjectDelete(0,"000 "+DoubleToStr(i,0));
   }
   
   int shift;
   for(shift = Bars(NULL,0) - 1; shift >= 0; shift--)
     {    
       if(ChartPeriod(0) < 15)
        {                            
         if(TimeMinute(Time[shift]) == 30)
           {
            if(ObjectFind("Minute"+shift)!= 0)
              {
               DrawVLine("Minute"+shift,shift);
              }
           }
        }
        
      if(ChartPeriod(0) < 30)
        {                             
         if(TimeMinute(Time[shift]) == 0)
           {
            if(ObjectFind("Hour"+shift)!=0)
              {
               DrawVLine("Hour"+shift,shift);
              }
           }
        }
        
      if(ChartPeriod(0) < 240)
        {             
         if (TimeMinute(Time[shift]) == 0)
         {                
         if (TimeHour(Time[shift]) == 0 || TimeHour(Time[shift]) == 4 || TimeHour(Time[shift]) == 8 || TimeHour(Time[shift]) == 12 || TimeHour(Time[shift]) == 16 || TimeHour(Time[shift]) == 20)
           {
            if(ObjectFind("4Hour"+shift) != 0)
              {
               DrawVLine("4Hour"+shift,shift);
              }
           }
          }
        }                     
        
      if(ChartPeriod(0) == 240)
        {                            
         if(TimeMinute(Time[shift]) == 0 && TimeHour(Time[shift]) == 0)
           {
            if(ObjectFind("Day"+shift)!= 0)
              {
               DrawVLine("Day"+shift,shift);
              }
           }
        }
        
       if (ChartGetInteger(0, CHART_SCALE) < 1 && ChartPeriod(0) == 1) ObjectDelete(0,"Minute"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 3 && ChartPeriod(0) == 5) ObjectDelete(0,"Minute"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 2 && ChartPeriod(0) == 5) ObjectDelete(0,"Hour"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 3 && ChartPeriod(0) == 15) ObjectDelete(0,"Hour"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 1 && ChartPeriod(0) == 15) ObjectDelete(0,"4Hour"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 2 && ChartPeriod(0) == 30) ObjectDelete(0,"4Hour"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 3 && ChartPeriod(0) == 60) ObjectDelete(0,"4Hour"+shift);
       if (ChartGetInteger(0, CHART_SCALE) < 3 && ChartPeriod(0) == 240) ObjectDelete(0,"Day"+shift);
     }   

   return (0);
  }
//+------------------------------------------------------------------+
int init()
  {
   iDigits=Digits;
   if(Digits==5 || Digits==3)dXPoint=10;
   if(Digits==3)  iDigits=2;
   if(Digits==5)  iDigits=4;

   Div=0.1/(Point*dXPoint);
   
   Print("AlterGrid ver. 2, build: ",__DATETIME__);
   ChartSetInteger(0, CHART_SCALE, 3);
   
   if(ChartGetInteger(0,CHART_SHOW_GRID)) 
     {
      ChartSetInteger(0,CHART_SHOW_GRID,0,0);
      GetLastError();
     }
   
   return (0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll();

   if(ChartGetInteger(0,CHART_SHOW_GRID)) 
     {
      Print("Grid detected.");
      GetLastError();
     }
   else ChartSetInteger(0,CHART_SHOW_GRID,0,1);

   return (0);
  }
//+------------------------------------------------------------------+
void DrawVLine(string label, int shft)
   {
    ObjectCreate(label, OBJ_VLINE, 0, Time[shft], 0);
    ObjectSet(label, OBJPROP_STYLE, Style);
    ObjectSet(label, OBJPROP_COLOR, Color);
    ObjectSet(label, OBJPROP_HIDDEN, true);
    ObjectSet(label, OBJPROP_BACK, true);
    ObjectSetString(0, label, OBJPROP_TOOLTIP, "\n");
   }
//+------------------------------------------------------------------+
void DrawHLine(string labl, double price)
   {
    ObjectCreate(labl, OBJ_HLINE, 0, Time[1], price);
    ObjectSet(labl, OBJPROP_STYLE, Style);
    ObjectSet(labl, OBJPROP_COLOR, Color);
    ObjectSet(labl, OBJPROP_HIDDEN, true);
    ObjectSet(labl, OBJPROP_BACK, false);
    ObjectSetString(0, labl, OBJPROP_TOOLTIP, "\n");
   }
//+------------------------------------------------------------------+

 

Доработанный хранитель тиков MQL4 Доработанный хранитель тиков MQL4

Хранитель тиков от komposter, доработанный для использования в тестере стратегий.

MACD and Volumes MACD and Volumes

Обычный MACD индикатор, но с добавлением линии, показывающей объемы.

iBroker iBroker

Индикатор выводит результаты работы 2048 трейдеров брокера.

ZigZaHod ZigZaHod

Отмеренный ход от фрактала или ZigZag. Советник ищет импульсное движение и выставляет отложенные ордера.