OBJ_CHART

Oggetto Chart.

ObjChart

Nota

Le coordinate del punto di ancoraggio sono impostate in pixels. Puoi selezionare l'angolo di ancoraggio dall'enumerazione ENUM_BASE_CORNER.

Simbolo, periodo e la scala possono essere selezionati per l'oggetto Chart. Modalità di visualizzazione della scala di prezzo e data possono anche essere attivate/disattivate.

Esempio

Lo script che segue crea e sposta l'ogetto Chart sul chart(grafico). Funzioni speciali sono state sviluppate per creare e modificare le proprietà dell'oggetto grafico. È possibile utilizzare queste funzioni "come è" nelle proprie applicazioni.

 

//--- descrizione
#property description "Script creates \"Chart\" object."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string           InpName="Chart";             // Nome dell'oggetto
input string           InpSymbol="EURUSD";          // Simbolo
input ENUM_TIMEFRAMES  InpPeriod=PERIOD_H1;         // Periodo
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Angolo di ancoraggio
input int              InpScale=2;                  // Scala
input bool             InpDateScale=true;           // Mostra scala temporale
input bool             InpPriceScale=true;          // Mostra scala prezzo
input color            InpColor=clrRed;             // Colore del bordo quando evidenziato
input ENUM_LINE_STYLE  InpStyle=STYLE_DASHDOTDOT;   // Stile della linea quando evidenziata
input int              InpPointWidth=1;             // Grandezza punto da spostare
input bool             InpBack=false;               // Oggetto sottofondo
input bool             InpSelection=true;           // Evidanzia movimento
input bool             InpHidden=true;              // Nascosto nella lista oggetti
input long             InpZOrder=0;                 // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//| Crea l'oggetto Chart                                                           |
//+--------------------------------------------------------------------------------+
bool ObjectChartCreate(const long              chart_ID=0,               // ID del chart
                       const string            name="Chart",             // nome oggetto
                       const int               sub_window=0,             // indice sottofinestra
                       const string            symbol="EURUSD",          // simoblo
                       const ENUM_TIMEFRAMES   period=PERIOD_H1,         // periodo
                       const int               x=0,                      // coordinate X
                       const int               y=0,                      // coordinate Y
                       const int               width=300,                // spessore
                       const int               height=200,               // altezza
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// angolo di ancoraggio
                       const int               scale=2,                  // scala
                       const bool              date_scale=true,          // mostra scala temporale
                       const bool              price_scale=true,         // mostra scala prezzo
                       const color             clr=clrRed,               // colore del bordo quando evidenziato
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // stile della linea quando evidenziata
                       const int               point_width=1,            // grandezza del punto di spostamento
                       const bool              back=false,               // in sottofondo
                       const bool              selection=false,          // evidenzia movimento
                       const bool              hidden=true,              // nascosto dalla lista oggetti
                       const long              z_order=0)                // priorità per il click del mouse
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- crea l'oggetto Chart
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": fallimento nel creare l'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
//--- imposta le coordinate dell'oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- imposta la grandezza dell'oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- imposta l'angolo del chart, relativo a quali punti coordinate vengono definiti
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- imposta il simbolo
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- imposta il periodo
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- imposta la scala
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- mostra (true) o nascondi (false) la scala temporale
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- mostra (true) o nascondi (false) la scala prezzo
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- imposta il colore del bordo quando è abilitata la modalità di evidenziazione
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta lo stile del bordo della linea quando la modalità di evidenzia dell'oggetto è abilitata
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- imposta la grandezza di un punto di ancoraggio per lo spostamento di un oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- mostra in primo piano (false) o sottofondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- abilita (true) o disabilita (false) il modo di spostamento dell'etichetta con il mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nascondi (true) o mostra (falso) il nome di oggetto grafico nella lista degli oggetti
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- imposta la priorità per ricevere l'evento di un clic del mouse nel grafico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Imposta il simoboli ed il timeframe per l'oggetto del Chart                    |
//+--------------------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long            chart_ID=0,       // ID del chart (non quello dell'oggetto Chart)
                                   const string          name="Chart",     // nome dell'oggetto
                                   const string          symbol="EURUSD",  // simbolo
                                   const ENUM_TIMEFRAMES period=PERIOD_H1// time frame
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- imposta il simobolo e timeframe dell'oggetto Chart
   if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
     {
      Print(__FUNCTION__,
            ": fallimento nell'impostare un simbolo per l'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period))
     {
      Print(__FUNCTION__,
            ": fallimento nell'impostare un periodo per l'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Sposta l'oggetto Chart                                                         |
//+--------------------------------------------------------------------------------+
bool ObjectChartMove(const long   chart_ID=0,   // ID del Chart (non quello dell'oggetto Chart)
                     const string name="Chart"// nome dell'oggetto
                     const int    x=0,          // coordinate X
                     const int    y=0)          // coordinate Y
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- sposta l'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostare le coordinate X dell'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostare le coordinate Y dell'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia la grandezza dell'oggetto Chart                                         |
//+--------------------------------------------------------------------------------+
bool ObjectChartChangeSize(const long   chart_ID=0,   // ID del chart (non quello dell'oggetto Chart)
                           const string name="Chart"// nome dell'oggetto
                           const int    width=300,    // spessore
                           const int    height=200)   // altezza
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia la grandezza dell'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare lo spessore dell'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare l'altezza dell'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Restituisce l'ID dell'oggetto Chart                                            |
//+--------------------------------------------------------------------------------+
long ObjectChartGetID(const long   chart_ID=0,   // ID del chart (non quello dell'oggetto Chart)
                      const string name="Chart"// nome dell'oggetto
  {
//--- prepara la variabile per ottenere l'ID dell'oggetto Chart
   long id=-1;
//--- resetta il valore dell' errore
   ResetLastError();
//--- ottiene l' ID
   if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
     {
      Print(__FUNCTION__,
            ": fallimento nell'ottenere l'ID dell'oggetto \"Chart\"! Error code = ",GetLastError());
     }
//--- restituisce il risultato
   return(id);
  }
//+--------------------------------------------------------------------------------+
//| Elimina l'oggetto Chart                                                        |
//+--------------------------------------------------------------------------------+
bool ObjectChartDelete(const long   chart_ID=0,   // ID del chart (non quello dell'oggetto Chart)
                       const string name="Chart"// nome dell'oggetto
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- elimina il bottone
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": fallimento nell'eliminare l'oggetto \"Chart\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- ottiene il numero di simboli nel Market Watch
   int  symbols=SymbolsTotal(true);
//--- controlla se il simbolo con un nome specificato è presente nell'elenco dei simboli
   bool exist=false;
   for(int i=0;i<symbols;i++)
      if(InpSymbol==SymbolName(i,true))
        {
         exist=true;
         break;
        }
   if(!exist)
     {
      Print("Error! ",InpSymbol," il simbolo non è presente nel \"Market Watch\"!");
      return;
     }
//--- controlla la validità dei parametri di input
   if(InpScale<0 || InpScale>5)
     {
      Print("Error! Valori non corretti dei parametri di input!");
      return;
     }
 
//--- grandezza della finestra chart
   long x_distance;
   long y_distance;
//--- imposta la grandezza della finestra
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Fallimento nell'ottenere la grandezza del chart! Error code = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Fallimento nell'ottenere l'altezza del chart! Error code = ",GetLastError());
      return;
     }
//--- imposta le coordinate dell'oggetto Chart e la sua grandezza
   int x=(int)x_distance/16;
   int y=(int)y_distance/16;
   int x_size=(int)x_distance*7/16;
   int y_size=(int)y_distance*7/16;
//--- crea l'oggetto Chart
   if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
      InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redisegna il chart ed attende per 1 secondo
   ChartRedraw();
   Sleep(1000);
//--- distende l'oggetto Chart
   int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
   for(int i=0;i<steps;i++)
     {
      //--- resize
      x_size+=1;
      y_size+=1;
      if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il chart ed attende 0.01 secondi
      ChartRedraw();
      Sleep(10);
     }
//--- ritardo di mezzo secondo
   Sleep(500);
//--- cambia il timeframe del chart
   if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
      return;
   ChartRedraw();
//--- tre secondi di ritardo
   Sleep(3000);
//--- elimina l'oggetto
   ObjectChartDelete(0,InpName);
   ChartRedraw();
//--- aspetta per 1 secondo
   Sleep(1000);
//---
  }