Crea un Indicatore con Overbasic

Con il linguaggio di programmazione Overbasic puoi creare indicatori personalizzati (User-Indicator) da aggiungere ai tuoi grafici e/o utilizzare all’interno di Overcharts dove permesso. Una volta creati e compilati, questi indicatori possono anche essere usati all’interno di altri indicatori o trading-system.

Nei grafici, gli indicatori vengono disegnati sotto forma di linea continua, istogrammi, o nelle varie forme previste per gli indicatori standard. Un indicatore standard è rappresentato da una serie dati (array). Il numero di elementi contenuti nella serie dati è uguale al numero di periodi/barre presenti nel grafico. In altre parole, per ogni barra del grafico ci sarà il corrispondente valore dell’indicatore.

Crea un Nuovo Indicatore #

Prima di iniziare lo sviluppo di un indicatore, ti consigliamo di leggere molto bene la documentazione sulla sintassi del linguaggio Overbasic, sulle parole chiave e le funzioni built-in disponibili.

Per creare un nuovo indicatore:

  1. Accedi a Developer (l’app di sviluppo di Overcharts):
    • dalla finestra principale di Overcharts > menu Tools > Developer
    • oppure dalla finestra Workspace > menu Tools > Developer
  2. Crea l’indicatore da:
    • menu File > Nuovo > Indicatore – Overbasic
    • oppure premi il bottone Nuovo sulla toolbar in alto
    • o ancora, posizionati sulla Tab Indicatori > premi il bottone ‘+‘ sulla toolbar verticale a sinistra
  3. Definisci un nome per l’indicatore. Il nome deve rispettare le seguenti regole:
    • Può essere costituito da lettere (sia Maiuscole che minuscole) o numeri
    • Non può contenere spazi. Il solo carattere di separazione consentito è l’underscore: “_
    • Non può contenere caratteri speciali come ad esempio !”£$%&/()=?^|
    • Non può contenere lettere speciali (tipiche di alcune lingue)
    • Non può essere un numero o iniziare con un numero
  4. Premi OK per confermare il nome e creare l’indicatore.

Creato l’indicatore, viene aperto automaticamente l’editor.

Successivamente, potrai accedere all’editor per modificare l’indicatore dalla lista indicatori a sinistra:

  • facendo doppio click sul nome dell’indicatore
  • oppure premendo il corrispondente bottone Apri vicino al nome dell’indicatore
  • oppure con click destro del mouse sul nome dell’indicatore > Modifica

Funzione MAIN #

La componente principale di un indicatore (l’unica davvero obbligatoria) è la funzione Main, cioè la funzione che normalmente contiene la formula dell’indicatore. Il risultato restituito dalla funzione Main DEVE essere di tipo numerico.

La funzione Main viene sempre eseguita automaticamente da Overcharts. In particolare:
– nel calcolo dei valori storici dell’indicatore, la funzione Main viene eseguita per ogni singola barra del grafico e il suo risultato sarà il valore che l’indicatore assumerà in corrispondenza di quella barra.
– nel calcolo real time, la funzione Main viene eseguita per ogni nuovo dato.

Esempio:

L’indicatore qui sotto calcola il valore medio tra High e Low per ogni singola barra. L’indicatore sarà disegnato nel grafico come una linea continua passante per il punto medio di ogni barra.

Function Main()
    Return (High + Low) / 2
EndFunction

La funzione Main verrà eseguita per ogni barra del grafico e restituirà, mediante la parola chiave RETURN, il valore dell’indicatore per quella barra.

In un indicatore, la funzione Main può ritornare fino a 10 risultati che corrisponderanno sul grafico a 10 differenti curve.

In un indicatore, la funzione Main può ritornare fino a 10 risultati che corrisponderanno sul grafico a 10 differenti curve. Per esempio, può essere utile ritornare più valori (e quindi più curve) nello stesso indicatore anziché creare x indicatori differenti, quando le formule di calcolo delle varie curve sono molto simili tra di loro o hanno in comune buona parte della logica di calcolo. Tutte le curve avranno la stessa scala asse-Y.

Aggiungiamo un secondo risultato alla funzione Main dell’esempio:

Function Main()
    Return (High + Low) / 2 As HL2, (High + 0.1 * High) As SuperHigh
EndFunction

Nota: Quando i risultati sono molteplici, è obbligatorio definire un nome univoco per ogni risultato utilizzando la parola chiave AS. Per maggiori informazioni fai riferimento alla documentazione relativa alla parola chiave RETURN.

Proprietà #

Definendo una o più PROPERTY, puoi influenzare dall’esterno il calcolo dell’indicatore. Le PROPERTY sono delle proprietà che puoi impostare nella configurazione dell’indicatore sul grafico, o che puoi passare come argomento alla funzione dell’indicatore nel caso in cui l’indicatore sia utilizzato nello script di un altro indicatore o trading-system.

Se non hai ancora approfondito l’argomento, ti consigliamo di leggere la documentazione relativa alle PROPERTY.

Esempio:

L’indicatore qui sotto rappresenta la differenza tra due medie mobili calcolate su due periodi differenti. I periodi sono impostabili dall’esterno mediante le proprietà Period1 e Period2.

Property Period1 As Numeric
    Range (5, 100)
    Default (20)
EndProperty

Property Period2 As Numeric
    Range (5, 100)
    Default (50)
EndProperty

Function Main()
    Return Mov(Close, Period1) - Mov(Close, Period2)
EndFunction

Pragma #

Un Pragma è un parametro speciale che consente di influenzare il comportamento dell’ Indicatore.
Alcuni Pragma sono definibili esclusivamente all’interno dello script, altri invece servono ad impostare dei valori di default di proprietà accessibili nella finestra di configurazione dell’ Indicatore.

Se non sai cosa sono i PRAGMA e come utilizzarli, ti consigliamo di leggere la relativa documentazione.

Tra i vari pragma disponibili per gli indicatori, ne evidenziamo due per importanza:

  • USE_REFERENCE_OBJECT_SCALE_AS_DEFAULT: consente di impostare come default l’uso della scala del grafico/indicatore di riferimento. Molto utile per tutti gli indicatori che devono essere disegnati nella stessa finestra del grafico/indicatore di riferimento come ad esempio una media mobile.

Esempio:

Pragma ("USE_REFERENCE_OBJECT_SCALE_AS_DEFAULT", True)

Function Main()
    Return (High + Low) / 2
EndFunction
  • VALID_STARTING_FROM: definisce la barra dalla quale iniziare a disegnare la curva dell’indicatore. In altre parole, è l’indice del primo valore valido della serie di valori dell’indicatore.

Esempio:

Pragma ("VALID_STARTING_FROM", Period2)

Property Period1 As Numeric
    Range (5, 100)
    Default (20)
EndProperty

Property Period2 As Numeric
    Range (5, 100)
    Default (50)
EndProperty

Function Main()
    Return Mov(Close, Period1) - Mov(Close, Period2)
EndFunction

Descrizione Indicatore #

Puoi definire una descrizione per l’indicatore utilizzando la parola chiave INFO. La descrizione verrà mostrata, ad esempio, nella finestra indicatori disponibili.

Esempio:

Info "Valore medio barra"
Pragma ("USE_REFERENCE_OBJECT_SCALE_AS_DEFAULT", True)

Function Main()
    Return (High + Low) / 2
EndFunction

Indicatore di indicatore #

Per calcolare un indicatore in base ad un altro indicatore definibile dinamicamente è necessario aggiungere allo script una PROPERTY di tipo Indicator. Utilizzando questa proprietà sarà possibile accedere alla serie dati dell’indicatore esterno e utilizzarla nel calcolo.

Esempio:

Calcoliamo la differenza tra due indicatori, entrambi definiti esternamente nella finestra di configurazione dell’indicatore:

Property ExtInd1 As Indicator
EndProperty

Property ExtInd2 As Indicator
EndProperty

Function Main()
    Return ExtInd1 - ExtInd2
EndFunction

Compilazione #

Per rendere l’indicatore utilizzabile all’interno di Overcharts, è NECESSARIO compilarlo. Compilare un indicatore significa trasformare il codice sorgente in un ‘qualcosa’ di comprensibile al programma.

In Developer, puoi compilare un singolo indicatore in uno dei seguenti modi:

  • premendo il bottone Compila sulla toolbar all’interno della finestra Editor
  • oppure premendo l’icona ‘Compila’ (a forma di ingranaggio) affianco al nome dell’indicatore nella lista indicatori. L’icona è visibile SOLO se l’indicatore necessita di essere compilato.

Puoi compilare massivamente più indicatori, in uno dei seguenti modi:

  • finestra principale di Developer > menu Compila > Seleziona quali elementi compilare
  • finestra principale di Developer > premi il bottone Compila sulla toolbar principale > Seleziona quali elementi compilare
  • Lista indicatori > premi il bottone Compila sulla toolbar sopra alla lista > Seleziona quali elementi compilare

Utilizzo dell’indicatore in uno script esterno #

La categoria My.User_indicator.Private contiene tutte le funzioni degli indicatori creati con Overbasic

Per utilizzare un indicatore all’interno dello script di un altro indicatore o trading-system:

  1. Crea e Compila l’indicatore
  2. Usa la funzione di riferimento dell’indicatore nello script esterno. Puoi trovare la funzione di riferimento dell’indicatore nella categoria My.User_Indicator.Private. La funzione ha lo stesso nome dell’indicatore. Se presenti, è necessario impostare anche le varie PROPERTY dell’indicatore passandole come argomenti alla funzione.

Esempio:

Nell’esempio qui sotto, la funzione BarMiddleValue rappresenta un indicatore creato e compilato in precedenza. I valori 10 e 5 passati come argomento alla funzione, sono i valori di 2 PROPERTY definite nello script dell’indicatore BarMiddleValue.

Function Main()
    Return BarMiddleValue(10, 5)
EndFunction

Nota: Di solito, puoi utilizzare la funzione indicatore direttamente senza specificare il percorso completo: ‘My. User_Indicator. Private. BarMiddleValue(10, 5)‘. È necessario specificare il percorso completo solo se esiste un’altra funzione con lo stesso nome dell’indicatore.