Русский

Справочник MQL4 Стандартные константы, перечисления и структуры Константы объектов Объекты Ганна

Объекты Ганна

Для объектов веер Ганна (OBJ_GANNFAN) и сетка Ганна (OBJ_GANNGRID) можно указать одно из двух значений перечисления ENUM_GANN_DIRECTION, которое задает направление тренда.

ENUM_GANN_DIRECTION

Константа

Описание

GANN_UP_TREND

Линия соответствует восходящему тренду

GANN_DOWN_TREND

Линия соответствует нисходящему тренду

Для установки масштаба основной линии 1x1 используется функция ObjectSetDouble(chart_handle, gann_object_name, OBJPROP_SCALE, scale), где:

  • chart_handle – окно графика, в котором находится объект;
  • gann_object_name – имя объекта;
  • OBJPROP_SCALE – идентификатор свойства "Scale";
  • scale – требуемый масштаб в единицах Pips/Bar.

Параметры объекта веер Ганна

Пример создания веера Ганна:

void OnStart()
  {
//---
   string my_gann="OBJ_GANNFAN object";
   if(ObjectFind(0,my_gann)<0)// объект не найден
     {
      //--- сообщим о неудаче 
      Print("Object ",my_gann," not found. Error code = ",GetLastError());
      //--- получим максимальную цену графика
      double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
      //--- получим минимальную цену графика
      double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
      //--- сколько баров на графике показано?
      int bars_on_chart=int(ChartGetInteger(0,CHART_VISIBLE_BARS));
      //--- создадим массив, куда запишем время открытия каждого бара
      datetime Times[];
      //--- организуем доступ к массиву как в таймсерии
      ArraySetAsSeries(Times,true);
      //--- теперь скопируем в него данные для видимых на графике баров
      int times=CopyTime(NULL,0,0,bars_on_chart,Times);
      if(times<=0)
        {
         Print("Не удалось скопировать массив со временем открытия!");
         return;
        }
      //--- предварительные приготовления закончены
 
      //--- индекс центрального бара на графике
      int center_bar=bars_on_chart/2;
      //--- экватор графика - между максимумом и минимумом
      double mean=(chart_max_price+chart_min_price)/2.0;
      //--- установим координаты первой точки привязки в центр
      ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Times[center_bar],mean,
                   //--- вторая точки привязки справа
                   Times[center_bar/2],(mean+chart_min_price)/2.0);
      Print("Times[center_bar] = "+(string)Times[center_bar]+"  Times[center_bar/2] = "+(string)Times[center_bar/2]);
      //Print("Times[center_bar]/="+Times[center_bar]+"  Times[center_bar/2]="+Times[center_bar/2]);
      //--- установим масштаб в единицах Pips/Bar
      ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
      //--- установим направление тренда
      ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
      //--- установим толщину линий
      ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
      //--- зададим стиль линий
      ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
      //--- и цвет линий
      ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
      //--- разрешим пользователю выделять объект 
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
      //--- выделим его сами
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
      //--- отрисуем на графике
      ChartRedraw(0);
     }
  }