---
title: Crea un Indicatore con Overbasic
description: "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.…"
url: "https://www.overcharts.com/it/helpcenter/docs/crea-un-indicatore-con-overbasic/"
updated: "2023-07-26"
category: Overbasic
---

# 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**](https://www.overcharts.com/it/helpcenter/docs/overbasic-function/), 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](https://www.overcharts.com/it/helpcenter/docs/overbasic-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](https://www.overcharts.com/it/helpcenter/docs/overbasic-return/#1-toc-title)**.

### **Proprietà**

Definendo una o più [**PROPERTY**](https://www.overcharts.com/it/helpcenter/docs/overbasic-property/), puoi influenzare dall'esterno il calcolo dell'indicatore. Le **[PROPERTY](https://www.overcharts.com/it/helpcenter/docs/overbasic-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](https://www.overcharts.com/it/helpcenter/docs/overbasic-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](https://www.overcharts.com/it/helpcenter/docs/overbasic-pragma/)** e come utilizzarli, ti consigliamo di leggere la [**relativa documentazione**](https://www.overcharts.com/it/helpcenter/docs/overbasic-pragma/).

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](https://www.overcharts.com/it/helpcenter/docs/overbasic-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.
