Crea un Trading System con Overbasic

Un Trading System è un algoritmo che produce segnali di acquisto/vendita in base a delle precise regole definite.

Con il linguaggio di programmazione Overbasic puoi creare Trading System da allegare ai tuoi grafici e visualizzare i segnali di acquisto/vendita prodotti. Utilizzando l’applicazione Tester puoi anche eseguire dei backtest sui trading system e verificarne i risultati passati. Una volta creati e compilati, i trading-system possono essere usati anche all’interno di indicatori o altri trading-system.

I Trading System in Overcharts forniscono SOLO segnali. Il trading automatico NON è al momento supportato. Lo sarà in futuro.

Crea un Nuovo Trading System #

Prima di iniziare lo sviluppo di un trading system, 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 trading system:

  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 il trading system da:
    • menu File > Nuovo > Trading System – Overbasic
    • oppure premi il bottone Nuovo sulla toolbar in alto
    • o ancora, posizionati sulla Tab Trading System > premi il bottone ‘+‘ sulla toolbar verticale a sinistra
  3. Definisci un nome per il trading system. 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 il trading system.

Creato il trading system, viene aperto automaticamente l’editor.

Successivamente, potrai accedere all’editor per modificare il trading system dalla lista dei trading-system a sinistra:

  • facendo doppio click sul nome del trading system
  • oppure premendo il corrispondente bottone Apri vicino al nome del trading system
  • oppure con click destro del mouse sul nome del trading-system > Modifica

Moduli di un Trading System #

Un trading system è composto dai seguenti moduli:

  • Modulo Comune: contiene le PROPERTY, INFO, OPTION e le dichiarazioni delle variabili comuni a tutti i moduli.
  • Entrata Long: contiene le regole di ingresso in posizione LONG.
  • Estensione Long: contiene le regole per estendere una posizione LONG di x quantità.
  • Uscita Long: contiene le regole di uscita da una posizione LONG.
  • Entrata Short: contiene le regole di ingresso in posizione SHORT.
  • Estensione Short: contiene le regole per estendere una posizione SHORT di x quantità.
  • Uscita Short: contiene le regole di uscita da una posizione SHORT.

Nessun modulo è obbligatorio. In base alla logica di funzionamento del tuo trading system attiverai i moduli che ti interessano. Se ad esempio, il tuo trading system prevede solo operazioni LONG, disattiverai (utilizzando i rispettivi check-box) i moduli relativi alle operazioni SHORT.

Modulo Comune #

Il Modulo Comune è un modulo speciale contenente esclusivamente le dichiarazioni delle PROPERTY, OPTION e delle variabili accessibili e modificabili da tutti gli altri moduli. Risulta particolarmente utile dichiarare variabili nel Modulo Comune per condividere informazioni tra i moduli.

Tutto ciò che viene dichiarato all’interno del Modulo Comune è accessibile e utilizzabile da qualsiasi altro modulo.

Logica di esecuzione #

I moduli che compongono il trading system vengono eseguiti a seconda della posizione corrente (OUT, LONG, SHORT). Se un modulo è disabilitato, semplicemente non viene eseguito.

Di seguito, viene descritta la logica di funzionamento nel caso in cui tutti i moduli siano abilitati:

  1. Il trading-system è in posizione OUT (fuori dal mercato).
  2. Viene eseguito il modulo Entrata Long. Se il segnale long è generato, il trading-system passa alla barra successiva della serie storica e va al punto 5.
  3. Viene eseguito il modulo Entrata Short. Se il segnale short è generato, il trading-system passa alla barra successiva della serie storica e va al punto 6.
  4. Il trading-system passa alla barra successiva della serie storica e torna al punto 2.
  5. Il trading system è in posizione LONG:
    • Viene eseguito il modulo Uscita Long. Se il segnale di uscita è generato, il trading-system passa alla barra successiva della serie storica e va al punto 1.
    • Viene eseguito il modulo Entrata Short. Se il segnale di entrata short è generato, il trading-system passa alla barra successiva della serie storica e va al punto 6.
    • Viene eseguito il modulo Estensione Long.
    • Il trading-system passa alla barra successiva della serie storica e ripete il punto 5.
  6. Il trading system è in posizione SHORT:
    • Viene eseguito il modulo Uscita Short. Se il segnale di uscita è generato, il trading-system passa alla barra successiva della serie storica e va al punto 1.
    • Viene eseguito il modulo Entrata Long. Se il segnale di entrata long è generato, il trading-system passa alla barra successiva della serie storica e va al punto 5.
    • Viene eseguito il modulo Estensione Short.
    • Il trading-system passa alla barra successiva della serie storica e ripete il punto 6.

Funzione MAIN #

La componente principale di ogni modulo (l’unica davvero obbligatoria) è la funzione Main, cioè la funzione che contiene le regole per la generazione del segnale. Il risultato restituito dalla funzione Main DEVE essere di tipo boolean (True o False). Se True, significa che il segnale è generato.

Nell’esempio qui sotto, il modulo genera il segnale (ritornando True) solo quando la chiusura corrente è maggiore di quella precedente. La parola chiave Quantity (facoltativa) definisce la quantità del segnale.

Function Main()
    If (Close > Close(-1)) Then
        Quantity 1
        Return True
    EndIf
    
    Return False
EndFunction

Quantità e Prezzo del segnale #

Quantità:
Puoi definire la quantità del segnale usando la parola chiave Quantity. Se la quantità non è definita all’interno dello script:

  • viene calcolata automaticamente in base al capitale disponibile e ai parametri del trading system (definiti in fase di aggiunta del trading system al grafico, o durante la configurazione del backtest) nei moduli Entrata Long, Estensione Long, Entrata Short, Estensione Short.
  • equivale invece alla quantità totale della posizione nei moduli Uscita Long e Uscita Short.

Utilizzando Quantity nel modulo Uscita Long o Uscita Short, puoi uscire dalla posizione anche a step successivi.

Prezzo:
Puoi definire il prezzo di esecuzione del segnale (che equivale al prezzo limite di un ordine) usando la parola chiave Price. Se il prezzo non è definito all’interno dello script, il segnale viene eseguito al prezzo di mercato (in real time) oppure al prezzo Open o Close della barra corrente o successiva in base alle impostazioni del trading-system (durante il backtesting).

Option #

Una Option è una proprietà speciale di tipo Numerico con un range di validità ben definito. La differenza con le altre proprietà numeriche (PROPERTY) è che può essere ottimizzata durante il backtest del trading system (procedura eseguita dall’applicazione Tester). In altre parole, la procedura di backtest testerà automaticamente tutti i valori che Option può assumere (dal valore minimo al valore massimo aggiungendo ad ogni nuovo test il valore di incremento), cercando di individuare il valore di Option che produce i migliori risultati nel trading system.

Per ulteriori informazioni sulla sintassi e sull’utilizzo fai riferimento alla pagina delle Option.

Descrizione Trading System #

Puoi definire una descrizione per il Trading System utilizzando la parola chiave INFO all’interno del Modulo Comune. La descrizione verrà mostrata, ad esempio, nella finestra trading-system disponibili.

Esempio:

Info "My first trading system"

Compilazione #

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

In Developer, puoi compilare un singolo trading system 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 del trading system nella lista trading system. L’icona è visibile SOLO se il trading system necessita di essere compilato.

Puoi compilare massivamente più trading system, 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 trading-system > premi il bottone Compila sulla toolbar sopra alla lista > Seleziona quali elementi compilare

Utilizzo del Trading-System in uno script esterno #

La categoria My.Trading_System.Private contiene tutte le funzioni dei trading-system creati con Overbasic

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

  1. Crea e Compila il trading-system
  2. Usa la funzione di riferimento del trading-system nello script esterno. Puoi trovare la funzione di riferimento del trading-system nella categoria My.Trading_System.Private. La funzione ha lo stesso nome del trading-system. Se presenti, è necessario impostare anche le varie OPTION e PROPERTY del trading-system passandole come argomenti alla funzione.
  3. (facoltativo) Nella funzione puoi anche definire alcuni parametri di funzionamento del trading system, come ad esempio Slippage, Account di Simulazione ecc.

Esempio:

Nell’esempio qui sotto, la funzione MyFirstStopAndReverse rappresenta un trading-system creato e compilato in precedenza. I valori 10 e 5 passati come argomento alla funzione, sono i valori di OPTION e/o PROPERTY definite nello script del trading-system.

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

Nota: Di solito, puoi utilizzare la funzione del trading-system direttamente senza specificare il percorso completo: ‘My. Trading_System. Private. MyFirstStopAndReverse(10, 5)‘. È necessario specificare il percorso completo solo se esiste un’altra funzione con lo stesso nome del trading system.