Oggetti Gann

Per gli oggetti Gann Fan (OBJ_GANNFAN) e le Gann Grid (OBJ_GANNGRID) è possibile specificare due valori dell'enumerazione ENUM_GANN_DIRECTION che impostano la direzione del trend.

ENUM_GANN_DIRECTION

ID

Descrizione

GANN_UP_TREND

Linea corrispondente alla linea di trend rialzista

GANN_DOWN_TREND

Linea corrispondente alla tendenza al ribasso

Per impostare la scala della linea principale, come 1x1, utilizzare la funzione ObjectSetDouble(Chart_handle, gann_object_name, OBJPROP_SCALE, Scala), dove:

  • chart_handle - finestra del grafico in cui si trova l'oggetto;
  • gann_object_name - nome oggetto;
  • OBJPROP_SCALE - identificatore della proprietà "Scala";
  • scale - scala richiesta in unità di Pips/Bar.

Parametri di oggetti Gann Fan

Esempio di creazione di Gann Fan:

voidOnStart()
  {
//---
   string my_gann="OBJ_GANNFAN object";
   if(ObjectFind(0,my_gann)<0)// Oggetto non trovato
     {
      //--- Informa riguardo il fallimento
      Print("Object ",my_gann," non trovato. Error code = ",GetLastError());
      //--- Ottiene il prezzo massimo del grafico
      double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
      //--- Ottiene il prezzo minimo del grafico
      double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
      //--- Quante barre vengono mostrate nel grafico?
      int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
      //--- Crea un array, per scrivere il tempo di apertura di ogni barra
      datetime Time[];
      //--- Dispone l' accesso al array come quello delle TimeSeries
      ArraySetAsSeries(Time,true);
      //--- Ora copia i dati delle barre visibili nel grafico in questo array
      int times=CopyTime(NULL,0,0,bars_on_chart,Time);
      if(times<=0)
        {
         Print("Non posso copiare l'array con l'orario di apertura!");
         return;
        }
      //--- Preparazioni preliminari completate
 
      //--- Indice deppa barra centrale nel grafico
      int center_bar=bars_on_chart/2;
      //--- Equatore del grafico - tra il massimo ed il minimo
      double mean=(chart_max_price+chart_min_price)/2.0;
      //--- Imposta le coordinate del primo ancor point al centro
      ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
                   //--- Secondo anchor point a destra
                   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]);
      //--- Imposta la scala in unità per Pips / Bar
      ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
      //--- Imposta il line trend
      ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
      //--- Imposta lo spessore della linea
      ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
      //--- Definisce lo stile della linea
      ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
      //--- Imposta il colore della linea
      ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
      //--- Permette all'utente di selezionare un oggetto
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
      //--- Selezionalo da solo
      ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
      //--- Disegnalo sul grafico
      ChartRedraw(0);
     }
  }