Objetos Gann

Para objetos Gann Fan (OBJ_GANNFAN) e Gann Grade (OBJ_GANNGRID) você pode especificar dois valores da enumeração ENUM_GANN_DIRECTION que definem a direção da tendência.

ENUM_GANN_DIRECTION

ID

Descrição

GANN_UP_TREND

Linha correspondente à tendência de alta

GANN_DOWN_TREND

Linha correspondente à tendência de baixa

Para definir a escala da linha principal como 1x1, use a função ObjectSetDouble(chart_handle, gann_object_name, OBJPROP_SCALE, scale), onde:

  • chart_handle — janela do gráfico onde o objeto está localizado;
  • gann_object_name — nome do objeto;
  • OBJPROP_SCALE — identificador da propriedade "Escala";
  • scale — escala requerida em unidades de Pips/Barra.

Parâmetros do objeto Ventilador Fan

Exemplo de criação de um Ventilador Gann:

void OnStart()
  {
//---
   string my_gann="OBJ_GANNFAN object";
   if(ObjectFind(0,my_gann)<0)// Objeto não encontrado
     {
      //--- Informe sobre a falha
      Print("Objeto ",my_gann," não encontrado. Código de erro = ",GetLastError());
      //--- Obtém o preço máximo do gráfico
      double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
      //--- Obtém o preço mínimo do gráfico
      double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
      //--- Quantas barras estão exibidas no gráfico
      int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
      //--- Cria um array, para escrever nele a hora de abertura de cada barra
      datetime Time[];
      //--- Arruma acesso ao array como o de série de tempo
      ArraySetAsSeries(Time,true);
      //--- Agora copia dados de barras visíveis no gráfico para dentro deste array
      int times=CopyTime(NULL,0,0,bars_on_chart,Time);
      if(times<=0)
        {
         Print("Não foi possível copiar o array com o tempo aberto!");
         return;
        }
      //--- Preparações preliminares concluídas
 
      //--- Índice da barra central no gráfico
      int center_bar=bars_on_chart/2;
      //--- Equador do gráfico - entre o máximo e mínimo
      double mean=(chart_max_price+chart_min_price)/2.0;
      //--- Define as coordenadas do primeiro ponto de ancoragem para o centro
      ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
                   //--- Segundo ponto de ancoragem para a direita
                   Time[center_bar/2],(mean+chart_min_price)/2.0);
      Print("Time[center_bar] = "+(string)Time[center_bar]+"  Time[center_bar/2] = "+(string)Time[center_bar/2]);
      //Print("Time[center_bar]/="+Time[center_bar]+"  Time[center_bar/2]="+Time[center_bar/2]);
      //--- Define a escala em unidades de Pips / Barra
      ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
      //--- Define a tendência da linha
      ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
      //--- Define a largura da linha
      ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
      //--- Define o estilo da linha
      ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
      //--- Define a cor da linha
      ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
      //--- Permite ao usuário selecionar um objeto
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
      //--- Seleciona ele você mesmo
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
      //--- Desenha ele no gráfico
      ChartRedraw(0);
     }
  }