Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di...

97
Gli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento che possono essere eseguite in backtest o con sistemi automatici di trading. Segui ProRealTime Programming su Google+ per le novità sul linguaggio di programmazione di ProRealTime. V 5.1.3 – 20170718

Transcript of Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di...

Page 1: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Gli strumenti di programmazione di sistemi di trading ProRealTime permettono dicreare strategie di investimento che possono essere eseguite in backtest o con sistemiautomatici di trading.

Segui ProRealTime Programming su Google+ per le novità sul linguaggio di programmazione di ProRealTime.

V 5.1.3 – 20170718

Page 2: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

SOMMARIO

Introduzione_____________________________________________________6

Accedere alla programmazione di sistemi di trading....................................................6

La finestra di creazione di sistemi di trading.................................................................7

Scorciatoie di tastiera....................................................................................................................8

La Programmazione di sistemi di trading______________________________9

Promemoria sulla programmazione ProBuilder............................................................9

Entrare e uscire dal mercato.........................................................................................................9

Gli Stop e Target..........................................................................................................12

Stop di protezione........................................................................................................................12

SET target profit...........................................................................................................................12

Trailing Stop.................................................................................................................................13

Uso di "Set Target" e "Set Stop" con istruzioni condizionali "IF".................................................13

Stop multipli e livelli di target.......................................................................................................14

Interrompere un sistema di trading con QUIT.............................................................17

Monitoraggio delle posizioni........................................................................................17

Variabili di stato delle posizioni....................................................................................................17

Grandezza delle variabili della posizione....................................................................................18

TradeIndex...................................................................................................................................18

TradePrice...................................................................................................................................18

PositionPerf.................................................................................................................................19

PositionPrice................................................................................................................................19

StrategyProfit...............................................................................................................................19

Definizione dei parametri di esecuzione di sistemi di trading.....................................20

Cumulo di ordini...........................................................................................................................20

PreLoadBars................................................................................................................................21

FlatBefore e FlatAfter..................................................................................................................22

NoCashUpdate (Backtest solamente).........................................................................................22

MinOrder and MaxOrder (backtest solamente)...........................................................................22

Richiamo d'indicatori...................................................................................................23

Indicatori ProRealTime................................................................................................................23

Indicatori personalizzati...............................................................................................................23

Suggerimenti per la programmazione.........................................................................23

Ridurre il numero di richiami agli indicatori ProRealTime............................................................23

Richiami d'indicatori personalizzati..............................................................................................24

ProBacktest – Backtesting di sistemi di trading_______________________27

Money Management....................................................................................................28

Capitale iniziale...........................................................................................................................28

Brokeraggio: commissioni e gestione del rischio........................................................................28

Page 3: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Ottimizzazione delle variabili.......................................................................................30

Definizione del periodo di esecuzione del backtest....................................................32

Personalizzazione degli orari di trading per il backtest...............................................32

Ragioni di interruzione di un ProBacktest...................................................................34

Visualizzazione dei valori delle variabili backtest (a partire da ProRealTime v10.2)..35

Il metodo Walk Forward___________________________________________36

Esempio.......................................................................................................................37

AutoTrading ProOrder____________________________________________41

Preparate un sistema di trading per l'esecuzione automatica....................................42

Come iniziare un sistema di trading su ProOrder e controllarne i risultati..................44

Parametri del trading automatico e condizioni di esecuzione.....................................48

Parametri del sistema di trading..................................................................................................48

Stop automatico dei sistemi di trading.........................................................................................49

Coesistenza nella piattaforma del trading manuale e automatico..............................50

Sistemi di trading multipli in corso di esecuzione sullo stesso valore.........................51

Restrizioni per indicatori..............................................................................................52

Informazioni riguardanti il fuso orario e gli orari di trading personalizzati...................52

Allegato A: Risultati del sistema di trading___________________________53

Curva guadagni e perdite............................................................................................53

Grafico delle posizioni.................................................................................................54

Rapporto dettagliato....................................................................................................55

Allegato B: Esempi di codici dettagliati______________________________59

Sistema di trading basato su Heikin Ashi....................................................................................59

Sistema di trading basato sullo ZigZag.......................................................................................60

Sistema di trading Breakout Range con Trailing Stop.................................................................61

Sistema di trading basato sullo stocastico lisciato......................................................................62

Swing Trading, ADX e Media Mobile...........................................................................................63

Sistema di trading che utilizza un contatore di posizioni.............................................................64

Sistemi di trading che utilizzano TradeIndex – Find inside bar...................................................65

Sistemi di money management...................................................................................66

Stop di protezione e Target..........................................................................................................66

Stop d'inattività............................................................................................................................66

Cumulo di ordini – Aggiunta di una posizione esistente con l'uso di un contatore di posizioni...67

La martingala classica.................................................................................................................68

La grande martingala...................................................................................................................69

La Piquemouche..........................................................................................................................70

La piramide d'Alembert................................................................................................................71

Page 4: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

L'inverso d'Alembert....................................................................................................................72

Allegato C: esempio dettagliato di un sistema di trading________________73

Presentazione del sistema di trading automatico "Breakout ProOrder".....................74

Risultati del sistema di trading (storico dal 2008 al 2015)..........................................75

Descrizione delle idee del sistema di trading..............................................................76

Idea iniziale: il Breakout 30 minuti...............................................................................................76

Seconda idea: verranno prese al massimo due posizioni al giorno............................................77

Terza idea: limitare il rischio definendo uno scarto massimo tra i due livelli...............................78

Quarta idea: aumentare le possibilità di un'esecuzione favorevole............................................79

Quinta idea: intervenire unicamente sui breakouts (o rotture) definiti per evitare falsi segnali...80

Sesta idea: non prendere posizione se non rimane tempo sufficiente........................................81

Codice del sistema di trading "Breakout ProOrder"....................................................82

Come testare un codice / sistema di trading...............................................................84

Modalità portafoglio virtuale (PaperTrading)...............................................................................84

Modalità trading in tempo reale...................................................................................................84

Glossario_______________________________________________________85

Avvertimento: ProRealTime non propone servizi di consiglio su investimenti. Gli esempi presentati inquesto manuale sono a scopo pedagogico. Tutte le informazioni presenti sono a carattere generale enon rappresentano in nessun caso informazioni o consulenze personalizzate o incitazioni a comprareo vendere strumenti finanziari. Le performances passate non rappresentano previsioni per il futuro.Ogni sistema di trading può esporre a un rischio di perdite superiori all'investimento iniziale.

Page 5: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Introduzione alla programmazione dei sistemi di trading su ProRealTime v10

Questa versione del manuale di programmazione si applica a ProRealTime v10 e superiori.

Gli strumenti del sistema di trading su ProRealTime permettono di creare strategie d’investimentopersonalizzate via la programmazione o la creazione assistita (non é richiesta programmazione). Questisistemi di trading possono essere eseguiti:

Come backtest per testarne le performance sui dati storici di un valore.

Come sistemi automatici di trading: gli ordini vengono passati in tempo reale da un trading o dal contodi PaperTrading.

La programmazione dei sistemi di trading utilizza il linguaggio di programmazione ProBuilder che é ancheusato per scrivere indicatori su ProRealTime ma prevede strumenti addizionali che si applicano solo allaprogrammazione di sistemi di trading.

I programmi del sistema di trading includono istruzioni per prendere posizioni, impostare stop e la gestionedel rischio di ogni sistema di trading basato su condizioni personalizzate come:

Indicatori forniti con la piattaforma o indicatori che avete programmato voi stessi

Le performance passate del vostro sistema di trading

Gli ultimi ordini del vostro sistema di trading

I risultati di un sistema di trading vengono presentati sotto forma di:

Curva dei guadagni e perdite che mostra lo stato dei guadagni e perdite di un sistema su un particolarestrumento.

Istogramma delle posizioni che mostra le posizioni del sistema (barre verdi per le posizioni di acquisto ebarre rosse per le posizioni di vendita alla scoperto). Non viene mostrata nessuna barra se non ci sonoposizioni per un particolare periodo di tempo.

Rapporto dettagliato che indica le statistiche del vostro sistema per il valore, nel periodo di tempo in cuié stato backtestato o eseguito.

Con il backtest, si possono solo ottimizzare le variabili del vostro sistema di trading per vedere quali valoridanno i migliori risultati per il periodo di storico che state esaminando.

Nel trading automatico, gli ordini piazzati attraverso sistemi di trading appaiono nel vostro portafoglio e nellalista degli ordini. Il portafoglio viene aggiornato con i guadagni e perdite fatte.

Questo manuale é organizzato in questo modo: La prima parte spiega come accedere alle funzionalità dicreazione di sistemi di trading. La seconda parte presenta le istruzioni ProBuilder usate per programmaresistemi. La terza parte spiega come backtestare sistemi di trading con ProBacktest. La quarta parte spiegacome eseguire un sistema di trading automaticamente. Gli allegati alla fine del manuale mostrano comesiano visualizzati i risultati dei sistemi di trading ed inoltre forniscono alcuni esempi di programmi oltre alglossario del linguaggio ProBuilder.

Consigliamo agli utilizzatori principianti di guardare il video intitolato "Come impostare un Backtest inpochi click".

Le idee espresse in questo manuale mirano ad insegnarvi come scrivere sistemi di trading e testare le vostreproprie idee. Non si tratta in nessun caso di consigli in investimento.

Vi auguriamo un ottimo successo, buona lettura!

V 5.1.3 – 20170718 www.prorealtime.com 5 / 97

Page 6: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

In t roduz ione

Introduzione

Accedere alla programmazione di sistemi di trading

La finestra di creazione di sistemi di trading é disponible a partire dal tasto "Indicatori e Sistemi di Trading"che si trova in alto a destra di ogni grafico della piattaforma.

Par default, la finestra di gestione si apre sulla linguetta "Indicatori". Posizionatevi sulla seconda linguetta"Backtesting e Trading Automatico". Potrete quindi:

Accedere alla lista dei sistemi di trading esistenti (predefiniti o personalizzati)

Creare un nuovo sistema di trading, da applicare in seguito ad un valore qualsiasi

Modificare o cancellare un sistema di trading esistente

Importare o esportare sistemi di trading.

V 5.1.3 – 20170718 www.prorealtime.com 6 / 97

Page 7: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

In t roduz ione

La finestra di creazione di sistemi di trading

La finestra di creazione di sistemi di trading é composta da due zone principali:

La zona di creazione (assistita o per programmazione) nella parte sinistra della finestra.

La zona d'applicazione del sistema nella parte destra, che comprende la linguetta ProBacktest perbacktestare un sistema di trading e la linguetta AutoTrading ProOrder per eseguire automaticamente unsistema di trading. L'impostazione del ProBacktest é descritta nella sezione 3 di questo manuale.

La zona di creazione, vi permette di:

Programmare il sistema di trading usando zona di testo.

Utilizzare la funzione di aiuto "Inserisci funzione", che vi permette di aprire una nuova finestra con una lista diistruzioni di ProBuilder e sistemi di trading suddivisi in diverse categorie per aiutarvi durante la programmazione.Ritroverete ugualmente testi d'aiuto legati all'istruzione o funzione selezionata nella parte bassa della finestra.

V 5.1.3 – 20170718 www.prorealtime.com 7 / 97

Page 8: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

In t roduz ione

Esempio:

Utilizziamo la biblioteca delle funzioni cliccando su "Inserisci funzione".

Andate alla sezione "Comandi del sistema di trading" e cliccate su "BUY", poi cliccate sul tasto "Aggiungi". Ilcomando verrà aggiunto alla zona di programmazione.

Proviamo quindi a creare una linea intera di codice. Supponiamo per esempio di voler acquistare 10 titoli aprezzo di mercato.

Procedete come sopra per recuperare nell'ordine le istruzioni "SHARES", "AT" e "MARKET" (separate ogniparola con uno spazio). Indicate tra "BUY" e "SHARES" il numero da comprare (10).

Otterrete quindi l'istruzione "BUY 10 SHARES AT MARKET" che ordina l'acquisto di 10 titoli, lotti o contrattia prezzo di mercato. La seguente sezione presenta tutte le istruzioni disponibili per la programmazione disistemi di trading.

Per vedere alcuni esempi di sistemi di trading completi, consulta l'Allegato B alla fine del manuale.

Scorciatoie di tastiera

La finestra di creazione del sistema di trading ha un serie di funzionalità a cui é possibile accedere dallescorciatoie di tastiera a partire della versione 10 di ProRealTime:

Seleziona tutto (Ctrl + A): Seleziona tutto il testo nella finestra programmazione

Copia (Ctrl + C): Copia il testo selezionato

Incolla (Ctrl +X): Incolla il testo copiato

Annulla (Ctrl + Z): Annulla l'ultima azione nella finestra programmazione

Ripristina (Ctrl + Y): Ripristina l'ultima azione nella finestra programmazione

Trova / Sostituisci (Ctrl + F): Trova un testo nella finestra programmazione / sostituisci un testo nellafinestra programmazione (questa funzionalità é minuscola maiuscola)

Commenta / Decommenta (Ctrl + R): Commenta il codice selezionato / Decommenta il codiceselezionato (il codice commentato sarà preceduto da "//" o "REM" e di colore grigio. Sarà preso inconsiderazione quando il codice é eseguito).

Per gli utenti Mac, la stessa scorciatoia di tastiera puo' essere accessibile con il tasto "Apple" al posto deltasto "Ctrl". La maggior parte di queste funzionalità possono essere accessibili con un clic destro nellafinestra di programmazione.

V 5.1.3 – 20170718 www.prorealtime.com 8 / 97

Page 9: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

La Programmazione di sistemi di trading

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Promemoria sulla programmazione ProBuilder

Vi consigliamo di leggere il manuale di programmazione ProBuilder consacrato alla programmazione diindicatori. Questa sezione elenca le istruzioni che sono specifiche dei sistemi di trading.

ProBuilder é il linguaggio di programmazione usato nella piattaforma. Questo linguaggio é molto semplice dautilizzare e offre molte possibilità. E' basato sui seguenti principi:

L'unità di base é la candela e l'unità di tempo é la stessa di quella del grafico sottostante.

I calcoli sono dati alla fine di ogni barra. I programmi di ProBuilder che includono sistemi di trading etutte le loro funzioni sono valutati alla fine di ogni barra dall'inizio alla fine.

Tutte le istruzioni per piazzare ordini sono attivate dopo che i calcoli sulla candela corrente sonoterminati (ossia gli ordini saranno eseguiti all'apertura della candela successiva).

Entrare e uscire dal mercato

E' necessario differenziare le istruzioni a seconda del tipo di posizione:

Posizioni lunghe:

BUY istruzione di acquisto dei titoli (entrata long)

SELL istruzione di vendita di titoli acquistati (uscita long)

L'istruzione BUY permette di aprire (o rinforzare) una posizione lunga sul mercato. E' associata all'istruzioneSELL che permette di chiudere o chiudere parzialmente una posizione. L'istruzione SELL non ha nessuneffetto se non c'é nessuna posizione lunga aperta.

Posizioni corte:

SELLSHORT istruzione di ventita allo scoperto di titoli (entrata short)

EXITSHORT istruzione di riacquisto di titoli venduti allo scoperto (uscita short)

Queste due istruzioni funzionano in maniera simmetrica con BUY e SELL. L'istruzione EXITSHORT non hanessun effetto se non c'é nessuna posizione corta aperta.

Non é possibile prendere una posizione lunga e corta allo stesso tempo sullo stesso titolo. In pratica, cio'significa che é anche possibile chiudere una posizione lunga con l'istruzione SELLSHORT o chiudere unaposizione corta con l'istruzione BUY.

Nota bene: Pensate a verificare la grandezza massima della posizione che avete definito nella sezioneImpegno sul Mercato per il ProBacktest o su ProOrder per i sistemi di trading automatici. Se provate apiazzare un ordine per un importo più importante della grandezza massima della posizione autorizzata,l'ordine sarà rigettato e la vostra posizione originale sarà mantenuta.

Ognuno di questi comandi puo' essere seguito dagli elementi seguenti, che verranno descritti qui di seguito:

<Ordine> <Quantità> AT <tipo>Esempio:

BUY 1000 CASH AT MARKET o SELL 1 SHARE AT 1.56 LIMIT

V 5.1.3 – 20170718 www.prorealtime.com 9 / 97

Page 10: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

QuantitàEsistono 2 modi per definire la quantità:

SHARES che corrisponde ad un'unità dello strumento: "1 Share" puo' rappresentare 1 azione, 1contratto futures, o un contratto Forex. SHARES possono essere utilizzati indifferentemente con SHARE,CONTRACTS, LOT o LOTS su tutti i tipi di strumenti. Nel caso del Forex, la quantità comprata saràmoltiplicata per la grandezza di un lotto. Se la quantità non é indicata, vengono usati i seguenti valoripredefiniti:

1 unità per una posizione di entrata (Es : BUY AT MARKET, acquista una quantità di "1" a prezzo dimercato)

L'intera quantità di una posizione per un'uscita (Es : SELL AT MARKET vende l'intera posizionelunga)

CASH corrisponde all'importo effettivo (come € o $) e quest'istruzione puo' essere usata unicamenteper acquistare o vendere azioni. La quantità dell'ordine sarà calcolata durante la chiusura della barra earrotondata per default all'unità inferiore. Le spese di intermediazione non sono prese in considerazionenel calcolo della quantità corrispondente all'importo da comprare o vendere.

Esempio: BUY 1000 CASH AT MARKET

E' possibile utilizzare l'istruzione ROUNDEDUP per arrotondare questa quantità all'unità superiore.

Esempio: BUY 1000 CASH ROUNDEDUP AT MARKET

TipoSono a vostra disposizione tre modi di esecuzione d'ordini:

AT MARKET: L’ordine sarà passato al prezzo di mercato all'apertura della barra successiva.

Esempio: BUY 1 SHARE AT MARKET

AT <price> LIMIT: Un ordine limite sarà posizionato al prezzo indicato

AT <price> STOP: Un ordine stop sarà posizionato al prezzo indicato

Esempio: BUY 1 SHARE AT 10.5 LIMIT

Gli ordini limite e stop con livelli specifici sono validi per la durata di una barra a partire dall'aperturadella barra successiva. Sono quindi annullati se non eseguiti.

Questi ordini sono diversi dagli ordini protezione stop e target (v. sezione successiva) che sono legati ad unaposizione aperta e valida fino alla chiusura di questa posizione.

Alcuni ordini possono essere trattati come ordini a mercato nelle seguenti condizioni:

Nel caso di un ordine d'acquisto (BUY), se il prezzo del limite é superiore al prezzo di mercato, l'ordinesarà trattato come un ordine a mercato.

Nel caso di un ordine d'acquisto (BUY), se il prezzo dello STOP é inferiore al prezzo di mercato, l'ordinesarà trattato come un ordine a mercato.

Nel caso di un ordine di vendita allo scoperto (SELLSHORT), se il prezzo del LIMITE é inferiore alprezzo di mercato, l'ordine sarà trattato come un ordine a mercato.

Nel caso di un ordine di vendita allo scoperto (SELLSHORT), se il prezzo dello STOP é superiore alprezzo di mercato, l'ordine sarà trattato come un ordine a mercato.

V 5.1.3 – 20170718 www.prorealtime.com 10 / 97

Page 11: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Esempio:

Se RSI é in zona d'ipervendita (RSI < 30) e il prezzo é sotto la banda di Bollinger inferiore, alloraacquistiamo un'azione al prezzo di mercato.

Se RSI é in zona d'iperacquisto (RSI > 70) e il prezzo é superiore alla banda di Bollinger, allora vendiamo.

MyRSI = RSI[14](Close)MyBollingerDown = BollingerDown[25](Close)MyBollingerUp = BollingerUp[25](Close)

IF MyRSI < 30 AND Close < MyBollingerDown THEN BUY 1 SHARE AT MARKETENDIFIF MyRSI > 70 AND Close > MyBollingerUp THEN SELL AT MARKETENDIF

Puoi impostare la durata della validità degli ordini limite e stop.

Il seguente esempio mostra come sia possibile creare un ordine limite con una validità impostata su unnumero specifico di barre usando le variabili. Il codice piazza un ordine di acquisto limite al prezzo dichiusura della barra sulla quale avviene un incrocio di una media mobile. L'ordine limite resta valido per 10barre dopo l'incrocio. Se non viene eseguito durante questo periodo, sarà annulato.

Esempio:// Definizione della durata di validità dell'ordineONCE NbBarLimit = 10

MM20 = Average[20](close)MM50 = Average[50](close)// Se la MM20 incrocia al rialzo la MM50, definiamo 2 variabili "MyLimitBuy" e "MyIndex"che contengono il prezzo di chiusura attuale e l'indice della barra dell'incrocio.IF MM20 CROSSES OVER MM50 THEN MyLimitBuy = close MyIndex = BarindexENDIF

IF BarIndex >= MyIndex + NbBarLimit THEN MyLimitBuy = 0 ENDIF// Piazza un ordine al prezzo corrispondente di MyLimitBuy valido fino a che questavariabile é superiore a 0 e che non siamo in posizione long// Richiamo : MyLimitBuy é superiore a 0 durante le 10 barre che seguono.IF MyLimitBuy > 0 AND NOT LongOnMarket THEN BUY 1 SHARES AT MyLimitBuy LIMITENDIF

Se l'ordine non é eseguito, é possibile sostituire l'ordine di acquisto limite scaduto con un ordine di acquistoa mercato. Questo sarà possibile aggiungendo il seguente codice al precedente:IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN BUY 1 SHARES AT MARKETENDIF

V 5.1.3 – 20170718 www.prorealtime.com 11 / 97

Page 12: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Gli Stop e Target

ProBuilder vi permette ugualmente di definire dei target e stop di protezione. La sintassi da utilizzare é la seguente:

SET STOP <tipo> <valore> o SET TARGET <tipo> <valore>Esempio:SET STOP %LOSS 2 // Impostate uno stop loss del 2%

Ogni istruzione é descritta nei paragrafi seguenti.

Attenzione a ben utilizzare le istruzioni STOP:

AT <prezzo> STOP, serve per entrare in una posizione. Quest'ordine é valido per una barra.

SET STOP LOSS <prezzo>, é uno stop di protezione usato per uscire dalla posizione.Quest'ordine é valido fino alla chiusura della posizione.

Stop di protezione

Gli stop di protezione permettono di limitare le perdite di una posizione. Possono essere definiti in terminirelativi o assoluti:

SET STOP LOSS x: La posizione sarà chiusa non appena la perdita sarà a x unità del prezzo di entrata in posizione.

SET STOP pLOSS x: La posizione sarà chiusa non appena la perdita sarà a x punti del prezzo di entrata in posizione.

SET STOP %LOSS x: La posizione sarà chiusa non appena la perdita raggiungerà x%, spese diintermediazione non incluse.

SET STOP $LOSS x: La posizione sarà chiusa non appena la perdita raggiungerà x €,$ (nella valuta dellostrumento), spese di intermediazione non incluse.

La quantità e direzione (uscire dalla posizione lunga o corta) dell'ordine stop di protezione sonoautomaticamente adattate al tipo di posizione aperta. Gli stop di protezione sono collegati ad una posizione.Se non c'é una posizione aperta, gli stop loss non saranno attivati.

Per disattivare uno Stop loss nel codice, bisogna utilizzare la seguente istruzione:SET STOP LOSS 0, SET STOP pLOSS 0, SET STOP %LOSS 0, SET STOP $LOSS 0

SET target profit

Quest'istruzione permette di uscire dalla posizione quando i guadagni raggiungono un certo valore.

SET TARGET PROFIT x: La posizione sarà chiusa non appena il guadagno sarà a x unità del prezzo dientrata in posizione.

SET TARGET pPROFIT x: La posizione sarà chiusa non appena il guadagno sarà a x punti del prezzo dientrata in posizione.

SET TARGET %PROFIT x: La posizione sarà chiusa non appena il guadagno raggiungerà x%, spese diintermediazione non incluse.

SET TARGET $PROFIT x: La posizione sarà chiusa non appena il guadagno raggiungerà x €,$ (valuta dellostrumento)

La quantità e la direzione del profit target sono automaticamente adattate al tipo di posizione aperta in corso.Tutti i profit target sono collegati alla posizione. Se non c'é una posizione aperta, l'ordine profit target non é attivo.

Per disattivare un profit target nel codice, puo' essere usata la seguente istruzione:SET TARGET PROFIT 0, SET TARGET pPROFIT 0, SET TARGET %PROFIT 0, SET TARGET $PROFIT 0

V 5.1.3 – 20170718 www.prorealtime.com 12 / 97

Page 13: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Trailing Stop

Un trailing stop é un ordine stop il cui prezzo cambia in funzione dell'evoluzione del prezzo. Per delleposizioni lunghe, quando il prezzo aumenta, il livello di trailing stop aumenta, ma se il prezzo diminuisce, illivello del trailing stop rimane costante. I trailing stop su posizioni corte funzionano in modo contrario: quandoil prezzo diminuisce, il livello di trailing stop diminuisce, ma se il prezzo aumenta, il livello del trailing stoprimane costante.

Sulla base dello stesso principio che regola gli stop di protezione, i trailing stop possono essere definiti intermini relativi o assoluti:

SET STOP TRAILING y: Impostate un trailing stop di y unità dalla posizione del prezzo di entrata

SET STOP pTRAILING y: Impostate un trailing stop di y punti dalla posizione del prezzo di entrata

SET STOP %TRAILING y: Impostate un trailing stop di y% dalla posizione del prezzo di entrata,commissioni non incluse

SET STOP $TRAILING y: Impostate un trailing stop di y €,$ (valuta dello strumento) dalla posizione delprezzo di entrata, commissioni non incluse

La quantità e la direzione (uscire dalla posizione lunga o corta) dell'ordine trailing stop sonoautomaticamente adattate al tipo di posizione aperta in corso. Tutti i trailing stop sono collegati ad unaposizione. Se non c'é una posizione aperta, il trailing stop non é attivo.

Se la quantità della posizione cambia, il livello di stop viene azzerata.

Per disattivare un trailing stop nel codice, puo' essere usata la seguente istruzione:SET STOP TRAILING 0, SET STOP pTRAILING 0, SET STOP %TRAILING 0, SET STOP $TRAILING 0

Esempio:

Viene presa una posizione lunga sul DAX a 6000 punti e posizionate un trailing stop a 50 punti:SET STOP pTRAILING 50

Lo stop é inizialmente posizionato a 5950. Se il prezzo aumenta fino a 6010 poi scende fino a 5980, lo stopaumenterà di 10 punti fino a 5960 e resterà bloccato fino a che il prezzo supererà 6010. Sarà quindi attivatose il prezzo raggiunge 5960.

Uso di "Set Target" e "Set Stop" con istruzioni condizionali "IF"

E' possibile cambiare il tipo di target o stop impostati nel vostro codice sulla base di condizionipersonalizzate usando le istruzioni condizionali if.

Esempio:REM Usate uno stop loss di 10% se il guadagno del trade precedente era almeno 10%,altrimenti usate uno stop loss di 5%.

IF PositionPerf(1) > 0.1 THEN

SET STOP %LOSS 10

ELSE

SET STOP %LOSS 5

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 13 / 97

Page 14: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Stop multipli e livelli di target

In circostanze normali, puo' essere attivata soltanto un'istruzione alla volta "Set Stop" e una "Set Target". Seci sono istruzioni successive "Set Stop" o "Set Target" in un codice, l'ultima istruzione sostituirà l'istruzioneprecedente.

Esempio:SET STOP %LOSS 10 // Impostate uno stop loss di 10%

SET TARGET PROFIT 50 // Impostate un profit target di 50 unità

SET TARGET %PROFIT 5 // Rimuovete il target precedente di 50 unità e sostituitelo con unprofit target di 5%

SET STOP %TRAILING 2 // Rimuovete il precedente stop loss di 10% e sostituitelo con untrailing stop di 2%

Tuttavia, é ugualmente possibile combinare stop e trailing stop fissati o stop loss e trailing stop con unasingola istruzione mostrata qui sotto:

SET STOP <Mode> <value> <TrailingType> <value>

fissato trailing

Mode: Loss, pLOSS, %LOSS, $LOSS

TrailingType: TRAILING, p TRAILING, %TRAILING, $TRAILING

Quest'istruzione si presenterà quindi in questo modo:SET STOP [LOSS/pLOSS/$LOSS/%LOSS] <value> [TRAILING/pTRAILING/$TRAILING/%TRAILING] <value>

Esempi di utilizzo:

SET STOP LOSS x TRAILING y: Uno stop loss é piazzato a x unità dal prezzo medio della posizione ediventa un trailing stop di y unità non appena il prezzo corrente varia favorevolmente d'almeno (y-x).

SET STOP LOSS x pTRAILING y: Uno stop loss é piazzato a x unità dal prezzo medio della posizione ediventa un trailing stop di y unità non appena il prezzo corrente varia favorevolmente d'almeno (y-x).

SET STOP LOSS x $TRAILING y: Uno stop loss é piazzato a x unità dal prezzo medio della posizione ediventa un trailing stop di y $ o € (valuta dello strumento) se il livello di trailing stop diventa più vicino alprezzo corrente che al livello di stop loss.

SET STOP LOSS x %TRAILING y: Uno stop loss é piazzato a x unità dal prezzo medio della posizione ediventa un trailing stop di y% se il livello di trailing stop diventa più vicino al prezzo corrente che al livello distop loss iniziale.

V 5.1.3 – 20170718 www.prorealtime.com 14 / 97

Page 15: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

SET STOP pLOSS x TRAILING y: Uno stop loss é piazzato a x punti dal prezzo medio della protezione ediventa un trailing stop di y unità se il livello di trailing stop diventa più vicino al prezzo corrente che al livellodi stop loss iniziale.

SET STOP pLOSS x pTRAILING y: Uno stop loss é piazzato a x punti dal prezzo medio della protezione ediventa un trailing stop di y unità se il livello di trailing stop diventa più vicino al prezzo corrente che al livellodi stop loss iniziale.

SET STOP pLOSS x $TRAILING y: Uno stop loss é piazzato a x punti dal prezzo medio della posizione ediventa un trailing stop di y unità non appena il prezzo corrente varia favorevolmente d'almeno (y-x).

SET STOP pLOSS x %TRAILING y: Uno stop loss é piazzato a x punti dal prezzo medio della posizione ediventa un trailing stop di y% se il livello di trailing stop diventa più vicino al prezzo corrente che al livello distop loss iniziale.

SET STOP $LOSS x TRAILING y: Uno stop loss é piazzato a x $ o € (valuta dello strumento) dal prezzomedio della protezione e diventa un trailing stop di y unità se il livello di trailing stop diventa più vicino alprezzo corrente che al livello di stop loss iniziale.

SET STOP $LOSS x pTRAILING y: Uno stop loss é piazzato a x $ o € (valuta dello strumento) dal prezzomedio della protezione e diventa un trailing stop di y unità se il livello di trailing stop diventa più vicino alprezzo corrente che al livello di stop loss iniziale.

SET STOP $LOSS x $TRAILING y: Uno stop loss é piazzato a x $ o € (valuta dello strumento) dal prezzomedio della posizione e diventa un trailing stop di y unità non appena il prezzo corrente varia favorevolmented'almeno (y-x).

SET STOP $LOSS x %TRAILING y: Uno stop loss é piazzato a x $ o € (valuta dello strumento) dal prezzomedio della posizione e diventa un trailing stop di y% se il livello di trailing stop diventa più vicino al prezzocorrente che al livello di stop loss iniziale.

SET STOP %LOSS x TRAILING y: Uno stop loss di x% é piazzato e diventa un trailing stop di y unità se illivello di trailing stop diventa più vicino al prezzo corrente che al livello di stop loss.

SET STOP %LOSS x pTRAILING y: Uno stop loss di x% é piazzato e diventa un trailing stop di y punti se illivello di trailing stop diventa più vicino al prezzo corrente che al livello di stop loss.

SET STOP %LOSS x $TRAILING y: Uno stop loss di x% é piazzato e diventa un trailing stop di y $ o € (valutadello strumento) se il livello di trailing stop diventa più vicino al prezzo corrente che al livello di stop loss.

SET STOP %LOSS x %TRAILING y: Uno stop loss di x% é piazzato e diventa un trailing stop di y% se il livellodi trailing stop diventa più vicino al prezzo corrente che al livello di stop loss.

V 5.1.3 – 20170718 www.prorealtime.com 15 / 97

Page 16: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Esempio:

SET STOP LOSS x TRAILING y:

Uno stop viene piazzato a x unità del prezzo di entrata della posizione e diventa un trailing stop di y unità se illivello del trailing stop diventa più vicino al prezzo corrente che al livello di stop loss.

Per esempio, se entrate una posizione lunga sul future DAX a 6500, il seguente codice piazza uno stop loss a20 unità del prezzo di entrata della posizione che diventa un trailing stop di 50 unità se il prezzo supera 6530.SET STOP LOSS 20 TRAILING 50

L'immagine seguente illustra l'esempio:

Lo stop iniziale é piazzato ad un livello fisso di 20 unità sotto il prezzo di apertura della posizione (6480).

Solo se il prezzo raggiunge 6530 (=6500 + (50-20) ), lo stop diventa un trailing stop di 50 unità.

Se il prezzo aumenta a 6535, come mostrato dall'immagine qui sopra, il trailing stop prenderà il valore di6485.

V 5.1.3 – 20170718 www.prorealtime.com 16 / 97

Page 17: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Informazioni sull'utilizzo dei punti o unità per la distanza di stop e limiti

Il valore di un punto può variare a seconda del tipo di strumento che seguiamo, mentre il valore dell'unità(variazione di un'unità sul grafico) rimane invariato. A seconda del codice e degli strumenti a cui vieneapplicato è possibile scegliere di misurare la distanza in punti o in unità.

Esempio:

Sull'EuroDollaro (EUR/USD), 1 punto=0.0001 unità sul grafico

Sui futures indici (DAX, FCE), 1 punto=1 unità sul grafico

Sui futures sui tassi di interesse europei,1 punto=0.01 unità sul grafico

Interrompere un sistema di trading con QUIT

L'istruzione «QUIT» permette di interrompere un sistema di trading. Lo stop si verifica dopo la barracorrente. Gli ordini in attesa sono poi cancellati e tutte le posizioni aperte sono chiuse. Questo vi permette diinterrompere un sistema di trading nel caso di perdite alte o dopo una certa data per esempio.

Esempio:IF Date > 20130101 THEN // Interrompi la strategia dopo il 1° Gennaio 2013

QUIT

ENDIF

Monitoraggio delle posizioni

Variabili di stato delle posizioni

Le 3 variabili che permettono di verificare lo stato dei vostri sistemi di trading sono le seguenti:

ONMARKET: vale 1 se avete delle posizioni aperte, altrimenti 0

LONGONMARKET: vale 1 se avete delle posizioni lunghe aperte, altrimenti 0

SHORTONMARKET: vale 1 se avete delle posizioni corte aperte, altrimenti 0

Possono essere utilizzati con delle parentesi quadre.

Per esempio, ONMARKET[1] vale 1 se avete una posizione aperta alla chiusura della barra precedente,altrimenti 0.

Queste variabili sono abitualmente introdotte con le istruzioni IF prima di un'entrata in posizione:

Esempio:REM Definite il MACD

Indicator1 = MACD[12,26,9](Close)

REM Osservate gli incroci dell'istogramma MACD

c1 = (Indicator1 CROSSES OVER 0)

REM Acquisto : Se non si é in posizione lunga e se MACD >0 , comprate 3 lotti

IF NOT LONGONMARKET AND c1 THEN

BUY 3 SHARES AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 17 / 97

Page 18: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Grandezza delle variabili della posizione

Queste 3 variabili permettono di conoscere la quantità di una posizione aperta:

COUNTOFPOSITION: grandezza della posizione (in lotti, titoli o contratti...). Positivo se posizione lungaaperta, negativo se posizione corta aperta.

COUNTOFLONGSHARES: grandezza di una posizione lunga (in lotti, titoli o contratti...) se c'é una posizionelunga aperta, altrimenti 0.

COUNTOFSHORTSHARES: grandezza di una posizione corta (in lotti, titoli o contratti...) se c'é posizionecorta aperta, altrimenti 0.

Queste variabili sono spesso introdotte con le istruzioni IF prima di un'entrata in posizione.

Attenzione a ben utilizzare queste variabili di stato : Il codice viene valutato alla fine di ogni

barra, e gli ordini sono piazzati all'apertura della barra successiva.Per esempio, nel successivoblocco di codice, la variabile "long" non sarà uguale a 1 alla chiusura della prima candela, masolamente alla chiusura della seconda candela poiché il primo ordine d'acquisto é passatoall'apertura della seconda candela.BUY 1 SHARE AT MARKET

IF LONGONMARKET THEN

long = 1

ENDIF

TradeIndex

Il comando TRADEINDEX(n) consente di accedere alla barra dell'ennesimo ordine precedente eseguito:

TRADEINDEX(n-simo ordine precedente)Nota bene: E' possibile usare TradeIndex senza un numero tra le parentesi. In questo caso, il programmaconsidererà la barra dell'ultimo ordine eseguito: TradeIndex=TradeIndex(1).

TradeIndex é spesso usato unitamente a Barindex.

Esempio:REM: Chiudete una posizione lunga se é stata aperta da almeno 3 barre:

IF LONGONMARKET AND (BarIndex - TradeIndex) >= 3 THEN

SELL AT MARKET

ENDIF

TradePrice

Il comando TRADEPRICE(n) permette di trovare il prezzo della transazione precedentemente eseguita.

La sua sintassi é la seguente:

TRADEPRICE(n-simo ordine precedente)Se n non é specificato, il prezzo dell'ultimo ordine eseguito é: TradePrice=TradePrice(1)

Esempio:REM: Chiudete una posizione lunga se il prezzo é superiore al prezzo dell'ordine precedentemaggiorato di 2%

IF LONGONMARKET AND CLOSE > 1.02 * TRADEPRICE THEN

SELL AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 18 / 97

Page 19: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

PositionPerf

Il comando POSITIONPERF(n) restituisce:

La performance in % dell'ennesima ultima posizione chiusa, se n>0 (commissioni non incluse)

La performance in % della posizione aperta in corso, se n=0 (commissioni non incluse)

La sintassi é la seguente:

POSITIONPERF(n-sima posizione precedente)Se n non é indicato, si suppone n=0: PositionPerf=PositionPerf(0)

Esempio:REM Acquista se il trade precedente ha fatto almeno 20% di guadagni

IF NOT ONMARKET AND PositionPerf(1) > 0.2 THEN

BUY 1000 CASH AT MARKET

ENDIF

PositionPrice

Il comando PositionPrice permette di conoscere il prezzo medio di acquisto della posizione aperta in corso.

POSITIONPRICEViene calcolato come la somma di tutti i prezzi di entrata ponderati dalla quantità di ogni ordine. Soloaggiungendo ad una posizione, cambierà il valore del PositionPrice.

Quest'istruzione puo' essere utilizzata con delle parentesi quadre: POSITIONPRICE[1] restituisce il valoredella PositionPrice alla chiusura della barra precedente.

Esempio:

Acquistate un'azione a 5€, poi rinforzate la vostra posizione riacquistando un'azione a 10€, poi un'altra a15€. PositionPrice sarebbe quindi uguale a: (5+10+15) / 3 = 10€

Se poi vendete un'azione al prezzo di 20€. PositionPrice sarà ancora uguale à 10 € (resta invariato).

StrategyProfit

Quest'istruzione restituisce i guadagni o le perdite (assolute, nella valuta dello strumento e commissioniescluse) realizzate dall'inizio del sistema di trading. Viene tipicamente utilizzata insieme all'istruzione QUITper interrompere un sistema di trading che ha perso molto.

STRATEGYPROFITQuest'istruzione puo' essere utilizzata con delle parentesi quadre: StrategyProfit[1] dà il profitto alla chiusuradella barra precedente.

Esempio:IF STRATEGYPROFIT < -500 THEN

QUIT

ENDIF

Nota bene:

Ricordate che i sistemi di trading sono valutati alla chiusura della barra. Nell'esempio qui sopra, le perditepossono essere superiori a 500€ nel caso di una grossa perdita su una signola candela o nel caso di un gap.Di conseguenza, un utente che vuole interrompere un sistema di trading dopo una perdita di 500 €,imposterà prima di tutto uno STOP LOSS per limitare le perdite, poi userà il blocco del codice riportato quisopra per interrompere il sistema.

V 5.1.3 – 20170718 www.prorealtime.com 19 / 97

Page 20: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Definizione dei parametri di esecuzione di sistemi di trading

Si possono definire dei parametri addizionali con l'aiuto dell'istruzione DEFPARAM.

Cumulo di ordini

La variabile “CumulateOrders” vi permette di autorizzare o proibire ordini cumulati per entrare a mercato oaggiungere ad una posizione. Questo parametro é impostato su “True” per default per i codici creati dallaprogrammazione il che significa che un sistema di trading puo' aggiungerlo ad una posizione esistente suogni barra dove le condizioni per entrare questa posizione sono vere. E' anche possibile avere limiti multiplio ordini stop per entrare a mercato attivo allo stesso tempo in questo caso.

Per impedire ad un sistema di trading di aumentare la grandezza di una posizione già aperta, la seguenteistruzione deve essere impostata all'inizio del codice:DEFPARAM CumulateOrders = False

Le istruzioni DefParam rimangono valide per l'intera esecuzione del sistema di trading. Non é possibilecambiare i parametri del sistema di trading per gli ordini cumulati o no durante l'esecuzione del sistema ditrading.

Esempi:// Questo codice comprerà 1 titolo ad ogni barra, fino ad un massimo di 3.

DEFPARAM CumulateOrders = True

If CountOfPosition < 3 THEN

Buy 1 shares at market

Endif

// Questo codice comprerà 1 titolo al prezzo di 2 e un titolo addizionale al prezzo di 3

DEFPARAM CumulateOrders = True

If CountOfPosition < 2 THEN

Buy 1 shares at 2 Limit

Buy 1 shares at 3 Limit

Endif

// Questo codice comprerà 5 titoli solo una volta

DEFPARAM CumulateOrders = False

Buy 5 shares at market

E' possibile avere diversi ordini per uscire sul mercato nella stessa direzione anche quando il parametroCumulateOrders é impostato su false.

Esempio:// Questo codice comprerà 5 titoli. Fino a 3 titoli saranno venduti se il prezzo incrociasotto i 40 periodi di media mobile. Tutti i titoli saranno venduti nel caso di unaperdita del 10%.

DEFPARAM CumulateOrders = False

Buy 5 shares at market

If close CROSSES UNDER Average[40] THEN

SELL 3 SHARES AT MARKET

Set stop %Trailing 10

Endif

V 5.1.3 – 20170718 www.prorealtime.com 20 / 97

Page 21: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Nota sui livelli di stop e target quando CumulateOrders é attiva: Se usate le istruzioni per impostare unostop loss, trailing stop o profit target con ordini cumulati attivati, il livello viene calcolato in base al prezzomedio di entrata della vostra posizione e viene ricalcolato ogni volta che la quantità della posizione vienemodificata.

Esempio:

Se comprate 1 azione a 10.00 $ e impostate lo stop loss a 10% e il profit target a 150%, il livello inizialesarebbe : lo stop a 9.00 $ ed il target a 25.00 $. Se comprate una seconda azione al prezzo di 20 $, il prezzomedio di entrata sarebbe di 15 $ e di conseguenza i nuovi livelli sarebbero : uno stop a 13.50 $ e un target a37.50 $ (per la posizione intera).

Nota sui codici creati con la modalità di creazione assistita: CumulateOrders é impostato su false perdefault per i sistemi di trading creati con la modalità di creazione assistita (l'istruzione “DefParamCumulateOrders = False” sarà presente all'inizio di questi codici).

PreLoadBars

L'istruzione "DefParam Preloadbars" vi permette di configurare la quantità massima di barre che vengonoprecaricate prima dell'inizio del sistema di trading per il calcolo degli indicatori usati nel sistemaprecedente all'avvio del sistema (indicatori personalizzati o predefiniti). Per default, questo parametro éuguale a 200. Puo' essere inferiore a 0 o superiore a 5000. Se volete disattivare i dati precaricati,impostate PreLoadBars = 0.

Il valore selezionato é un massimo perché la quantità delle barre che possono essere precaricate dipendedai dati disponibili per un dato strumento ed un'unità di tempo.

Esempio:DEFPARAM PreLoadBars = 300

a = (close + open) / 2

If price CROSSES OVER Average[250](a) THEN

BUY 1 SHARE AT MARKET

Endif

Se PreLoadBars é impostato a 300, significa che una media mobile di 250 barre sarebbe definita comela prima barra dopo che un sistema di trading é iniziato. Non sarebbe cosi' se fossero precaricate solo200 barre.

Notate che il valore di 300 é un massimo: se sono disponibili meno di 300 barre prima dell'inizio del sistemadi trading, solo il numero disponibile di barre sarà precaricato.

Nell'esempio dove 300 barre vengono precaricate, il BarIndex della prima barra dopo l'inizio del sistema ditrading é uguale a 300. Dall'altro lato, se sono precaricate 0 barre, il BarIndex della prima barra dopo l'iniziodel sistema di trading sarebbe uguale a 0.

V 5.1.3 – 20170718 www.prorealtime.com 21 / 97

Page 22: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

FlatBefore e FlatAfter

DEFPARAM FlatBefore = HHMMSS

DEFPARAM FlatAfter = HHMMSS

HHMMSS é l'orario dove HH indica l'ora, MM indica i minuti e SS indica i secondi.

Queste istruzioni vi permettono di cancellare tutti gli ordini in attesa, chiudere tutte le posizioni e impedire dipiazzare ordini supplementari prima di una cert'ora del giorno nel caso di FlatAfter.

Il parametro FlatBefore deve sempre essere posteriore all'orario di apertura del mercato (personalizzato ono), e FlatAfter deve essere anteriore alla chiusura standard del mercato (personalizzato o no), altrimentinon avrebbe alcun effetto. Se l'orario di chiusura non é un multiplo dell'orario principale del sistema di trading(succede a metà della candela), l'istruzione DEFPARAM FlatAfter avrà effetto alla chiusura della candela el'istruzione DEFPARAM FlatBefore sarà applicata fino alla chiusura della candela precedente.

Gli ordini sono limitati durante questo periodo, il che significa che nessun ordine sarà piazzato e tutti gliordini non saranno piazzati all'apertura del prossimo periodo quando il sistema di trading é autorizzato apiazzare ordini. Di conseguenza il tipo di variabili "OnMarket" sarà sempre falso durante questo periodo.

Esempio:DEFPARAM FlatBefore = 093000 // Cancella tutti gli ordini in attesa, chiude tutte leposizioni e evita di piazzare ordini supplementari con il sistema di trading prima delle9:30:00 orario della zona del mercato.

DEFPARAM FlatAfter = 160000 // Cancella tutti gli ordini in attesa, chiude tutte leposizioni e evita di piazzare ordini supplementari con il sistema di trading dopo le16:00:00 orario della zona del mercato.

NoCashUpdate (Backtest solamente)

DEFPARAM NoCashUpdate = True

Se quest'opzione é attivata, il capitale disponibile non é aggiornato con i guadagni, le perdite e lecommissioni.

Per default, NoCashUpdate = False.

Esempio:

Capitale iniziale 10 000 €, con NoCashUpdate = True. L'investimento massimo sarà limitato a 10000€qualunque siano i guadagni e le perdite realizzate per l'intera durata del Backtest.

Nota bene:

I parametri definiti con l'aiuto dell'istruzione DEFPARAM devono essere definiti all'inizio del codice (dopo icommenti)

MinOrder and MaxOrder (backtest solamente)

DEFPARAM MinOrder = n

DEFPARAM MaxOrder = p

Questa opzione permette di bloccare tutti gli ordini la cui quantità (espressa in lotti, contratti o azioni) èinferiore a n o superiore a p.

Esempio:DEFPARAM MinOrder = 100

Buy 1000 cash at market

Se il capitale iniziale è superiore a 10€, la quantità dell'ordine sarà inferiore a 100 quindi l'ordine verrà rifiutato.

V 5.1.3 – 20170718 www.prorealtime.com 22 / 97

Page 23: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Richiamo d'indicatori

Indicatori ProRealTime

Tutte le funzioni che includono gli indicatori ProRealTime disponibili per programmare i propri indicatori sonougualmente accessibili per programmare sistemi di trading (v. glossario alla fine di questo manuale per unalista completa).

Vi consigliamo di riferirvi al manuale ProBuilder per maggiori informazioni su queste funzioni.

La quantità di dati storici necessaria per il calcolo di un indicatore dipende dal tipo di indicatore. Peresempio, per calcolare una media mobile esponenziale su N periodi (ExponentialAverage[N]), si considerageneralmente che 10*N barre sono necessarie per fornire un risultato preciso.

Se la data di inizio del backtest é molto vicina alla prima data del grafico, viene fornito dello storicosupplementare al backtest in modo che gli indicatori diano dei risultati dalla prima barra.

Indicatori personalizzati

E' possibile richiamare gli indicatori ProBuilder che avete programmato usando l'istruzione CALL in unsistema di trading.

Esempio:a,b = CALL "HistoMACD[5,6]" // a e b sono gli outputs della funzione. 5 e 6 sono gli inputs.

Per un buon utilizzo di CALL, vi consigliamo di leggere attentamente la sezione consacrata all'ottimizzazionedel vostro programma.

Suggerimenti per la programmazione

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Il tempo di calcolo di un sistema di trading dipende fortemente dalla complessità degli indicatori utilizzati edal modo in cui sono richiamati. Il seguente paragrafo propone quindi alcuni consigli semplici per ottimizzareil vostro codice.

Ridurre il numero di richiami agli indicatori ProRealTime

Se utilizzate più volte lo stesso indicatore in un programma, conservate l'indicatore in una variabileintermediaria (avg40 nell'esempio qui sotto) piuttosto che richiamare l'indicatore. Questo renderàl'esecuzione più veloce.

CODICE NON OTTIMALE CODICE OTTIMALE

IF NOT LONGONMARKET AND close > Average[40]THEN

BUY 1 SHARE AT MARKET

ENDIF

IF NOT SHORTONMARKET AND close < Average[40]THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

avg40 = Average[40]

IF NOT LONGONMARKET AND close > avg40 THEN

BUY 1 SHARE AT MARKET

ENDIF

IF NOT SHORTONMARKET AND close < avg40 THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 23 / 97

Page 24: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Questo é ugualmente valido quando volete utilizzare lo stesso indicatore più volte ma con un diverso offset.

CODICE NON OTTIMALE CODICE OTTIMALE

a = ExponentialAverage[40](close)

b = ExponentialAverage[40](close[1])

c = ExponentialAverage[40](close)

IF a > b THEN

BUY 1 SHARE AT MARKET

ENDIF

IF a < c[1] THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

a = ExponentialAverage[40](close)

IF a > a[1] THEN

BUY 1 SHARE AT MARKET

ENDIF

IF a < a[1] THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

Richiami d'indicatori personalizzati

Il richiamo d'indicatori personalizzati tramite l'istruzione CALL é più costoso in tempi di calcolo che ilrichiamo d'indicatori ProRealTime. Per gli indicatori ProRealTime, sappiamo in anticipo quali calcoli sononecessari e possiamo controllare come vengono fatti. Questo ci permette di aumentare la velocità di calcoloche non é possibile con gli indicatori personalizzati la cui programmazione é lasciata alla libertà dell'utente.

Per migliorare la velocità di esecuzione di un sistema di trading con l'istruzione CALL, é quindi importanteutilizzare l'istruzione CALL nel modo più efficace possibile nel programma.

Limitare il numero di richiami identici:

Come per gli indicatori ProRealTime, limitate il numero delle volte in cui l'indicatore é richiamato nelprogramma.

CODICE NON OTTIMALE CODICE OTTIMALE

myindic1 = CALL "My Function"

IF NOT LONGONMARKET AND close > myindic1 THEN

BUY 1 SHARE AT MARKET

ENDIF

myindic2 = CALL "My Function"

IF NOT SHORTONMARKET AND close < myindic2 THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

myindic = CALL "My Function"

IF NOT LONGONMARKET AND close > myindic THEN

BUY 1 SHARE AT MARKET

ENDIF

IF NOT SHORTONMARKET AND close < myindic THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 24 / 97

Page 25: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Limitare il numero di richiami sovrapposti:

Se desiderate utilizzare un indicatore personalizzato nel codice del vostro backtest, verificate che non abbial'istruzione CALL nel suo codice.

Richiamare un indicatore personalizzato che richiama a sua volta un altro indicatore personalizzato é moltocostoso in termini di tempo di calcolo. Se possibile, duplicate sempre il codice dell'indicatore personalizzatoche volete richiamare nel ProBacktest piuttosto che usare la funzione CALL in modo che i codici backtestutilizzini solo gli indicatori ProRealTime.

CODICE NON OTTIMALE CODICE OTTIMALE

Codice del sistema di trading:myindic = CALL "MyDCLOSEMix LinearReg"

IF NOT longonmarket AND close > myindic THEN

BUY 1 SHARE AT MARKET

ENDIF

IF NOT shortonmarket AND close < myindic THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

Code de "MyDCLOSEMix LinearReg":dayclosemix = CALL "MyDCLOSEMix"

RETURN LinearRegression[5](dayclosemix)

Code de "MyDCLOSEMix":mix = (DClose(0) + 3.5 * DClose(1) + 4.5 * DClose(2) + 3 * DClose(3) + 0.5 * DClose(4)– 0.5 * DClose(5) – 1.5 * DClose(6)) / 10.5

RETURN mix

Codice del sistema di trading:dayclosemix = (DClose(0) + 3.5 * DClose(1) + 4.5 * DClose(2) + 3 * DClose(3) + 0.5 * DClose(4) – 0.5 * DClose(5) – 1.5 * DClose(6)) / 10.5

myindic = LinearRegression[5](dayclosemix)

IF NOT longonmarket AND close > myindic THEN

BUY 1 SHARE AT MARKET

ENDIF

IF NOT shortonmarket AND close < myindic THEN

SELLSHORT 1 SHARE AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 25 / 97

Page 26: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

La Programmazione d i s istemi d i t rad ing

Limitare il numero di condizioni sovrapposte:

Per tutte le istruzioni condizionali (IF...THEN...ENDIF), é sempre preferibile, in termini di tempo di calcolo,lavorare con una condizione che verifica n condizioni piuttosto che n istruzioni come mostrato qui sotto:

CODICE NON OTTIMALE CODICE OTTIMALE

IF CLOSE >= 0.0014 THEN

IF CLOSE <= 0.0047 THEN

IF INTRADAYBARINDEX >= 5 THEN

IF INTRADAYBARINDEX <= 20 THEN

IF NOT SHORTONMARKET THEN

BUY 1 SHARES AT MARKET

ENDIF

ENDIF

ENDIF

ENDIF

ENDIF

IF CLOSE >= 0.0014 AND CLOSE <= 0.0047 AND INTRADAYBARINDEX >= 5 AND INTRADAYBARINDEX <= 20 THEN

IF NOT SHORTONMARKET THEN

BUY 1 SHARES AT MARKET

ENDIF

ENDIF

Utilizzo dei cicli FOR:

L'utilizzo dei cicli FOR é talvolta indispensabile, ma é meglio evitare di utilizzarli quando si puo', poichéaumentano il tempo di calcolo.

Ecco qualche esempio tipico dove l'impiego del ciclo non é necessario:

// Se la condizione c1 é stata vera almeno una volta nel corso delle ultime n candele:

IF HIGHEST[n](c1) = 1 THEN

...

// Se la condizione c1 é stata sempre vera nel corso delle ultime n candele:

IF LOWEST[n](c1) = 1 THEN

...

// Numero di volte in cui la condizione c1 é stata verificata nel corso delle ultime ncandele:

num = SUMMATION[n](c1)

// Numero di barre da quando c1 é stata vera:

IF c1 THEN

lastoccurence = barindex

ENDIF

timesince = barindex - lastoccurence

// Il max delle variabili (a,b,c,d,e,f,g):

top = MAX(a , MAX(b , MAX(c , MAX(d , MAX(e , MAX(f , g) ) ) ) ) )

V 5.1.3 – 20170718 www.prorealtime.com 26 / 97

Page 27: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

ProBacktest – Backtesting di sistemi di trading

La linguetta "ProBacktest" della finestra di creazione di sistemi di trading permette di configurare i parametri delsistema:

Capitale iniziale

Parametri di intermediazione e Impegno sul Mercato

Ottimizzazione variabili

Periodo di esecuzione

V 5.1.3 – 20170718 www.prorealtime.com 27 / 97

Page 28: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Money Management

Capitale iniziale

Questa sezione permette di inserire il capitale messo a disposizione per il sistema di trading da tradare.L'investimento massimo autorizzato durante l'esecuzione della sistema ne dipende.

Durante l'esecuzione del backtest, i guadagni, le perdite e le commissioni influenzano l'importo del capitaledisponibile per il sistema di trading (eccetto se il parametro NoCashUpdate é attivo, v. paragrafo Reinvestirei guadagni per maggiori informazioni). Per i sistemi di trading automatici, il capitale disponibile per i vostrisistemi é il capitale del vostro portafoglio.

Se un backtest non piazza ordini, pensate ad aumentare l'importo del capitale iniziale.

Brokeraggio: commissioni e gestione del rischio

È possibile personalizzare questi parametri perché riflettano i parametri e i costi del proprio broker. Qualsiasitipo di commissione di brokeraggio può essere applicato a qualsiasi tipo di strumento. I tipi di commissioni dibrokeraggio disponibili sono:

Commissione per ordine: un importo fisso (nella valuta dello strumento) viene applicato ad ogni ordineeseguito. È inoltre possibile specificare un valore minimo e un valore massimo per ogni ordine.

% transazione: una percentuale della transazione (nella valuta dello strumento) viene applicata ad ogniordine eseguito.

Commissione per lotto: un importo fisso (nella valuta dello strumento) viene applicato ad ogni lotto ocontratto

Margine: un deposito (importo fisso o %) è richiesto per ogni lotto. Determina il massimo effetto leva(=100/margine)

Misura per lotto (solo Forex): é la quantità minima per ordine dello strumento. La quantità di ogni ordineinserito nelle istruzioni BUY/SELL é moltiplicata per la taglia del lotto.

Spread (in pips): il valore aggiunto al prezzo medio che riflette lo spread bid-ask.

La sezione di gestione del rischio permette di definire il parametro grandezza massima di una posizione :ogni ordine che oltrepassa il limite qui indicato viene rifiutato. La grandezza massima della posizionerappresenta il numero massimo di contratti per futures e forex e di contante o % di capitale per azioni. Leimpostazioni della sezione di "Gestione del rischio" non prendono in considerazione le commissioni dibrokeraggio.

V 5.1.3 – 20170718 www.prorealtime.com 28 / 97

Page 29: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Futures:

Le commissioni di brokeraggio per i futures sono definite per contratto e per transazione.

Il margine é l'importo in contanti necessario per comprare un contratto. Il valore di un punto viene calcolatoautomaticamente sula piattaforma per il future su cui impostiamo il sistema di trading in backtest.

Di seguito la lista con i valori di un punto per i principali futures.

NOME DEL FUTURE VALORE DI 1 PUNTO

FCE CAC 40 10€

DAX 25€

DJ Eurostoxx 50 10€

BUND 10€

Euro FX 12,5$

Mini S&P 500 50$

Mini Nasdaq 100 20$

Mini Dow 5$

Forex:

Lo spread, la taglia del lotto e il margine possono essere definiti e applicati ad ogni ordine.

Esempio su EURUSD:

Tagli del lotto: 100 000

Spread: 2 pips

Margine: 5%

L'istruzione BUY 1 LOT AT MARKET sull'EURUSD compra 1 lotto di 100000 con uno spread di 2 pips.(0.0002). Dato che l'effetto leva è a 20:1 (5% del margine), un deposito di 5000 € è richiesto per piazzarel'ordine.

Azioni:

Le commissioni di brokeraggio sono normalmente un importo in € o in % della transazione. È inoltrepossibile definire un importo minimo o massimo di costi di commissione per ogni transazione.

Esempio di impostazione per azioni:

Commissione per ordine: $10

Margine: 20%

Con queste impostazioni ogni ordine può usufruire di un effetto leva a 5:1.

V 5.1.3 – 20170718 www.prorealtime.com 29 / 97

Page 30: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Ottimizzazione delle variabili

In questa sezione, potete scegliere di ottimizzare le variabili. Questa funzione permette di testare le diversecombinazioni di parametri in un backtest, per sapere quale dà il miglior risultato su un dato strumento e unitàdi tempo sul periodo di dati storici testati.

Per saperne di più e vedere un esempio concreto, potete visionare il video "Come impostare la gestionedel capitale e gli stop in ProBacktest".

Il risultato dell'ottimizzazione é presente nel "Rapporto ottimizzazione". Vedrete le statistiche delle miglioricombinazioni delle variabili testate e utilizzerete quest'informazione per determinare quale variabiledesiderate utilizzare nel vostro sistema di trading.

Ecco un esempio di programma con ottimizzazione di due medie mobili con periodi di n e m:AVGm = ExponentialAverage[m](Close)

AVGn = ExponentialAverage[n](Close)

IF AVGm CROSSES OVER AVGn THEN

BUY 100 SHARES AT MARKET

ENDIF

IF AVGm CROSSES UNDER AVGn THEN

SELL 100 SHARES AT MARKET

ENDIF

Le variabili n e m possono essere definite cliccando sul tasto "Aggiungi" nella sezione ottimizzazione.

La seguente finestra si apre e vi consente di impostare l'ottimizzazione:

"Nome utilizzato nel programma" rappresenta il nome attribuito alla variabile nel codice (n in questocaso). Attenzione a rispettare le maiuscole e minuscole.

"Formula visibile nell'interfaccia" rappresenta il nome che si vuole attribuire alla variabile, in modo darenderla più facilmente riconoscibile (per esempio "Numero di Periodi" per n).

"Valore Min" e "Valore Max" rappresentano i limiti delle variabili per il test d'ottimizzazione.

"Passo" é l'intervallo delle variabili da testare nell'ottimizzazione.

V 5.1.3 – 20170718 www.prorealtime.com 30 / 97

Page 31: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Ecco un esempio di rapporto di ottimizzazione:

Il rapporto di ottimizzazione indica 5 statistiche per ognuna delle combinazioni di variabili testate. Questestatistiche sono le seguenti:

"Guadagno", indica il guadagno o perdita realizzata con il sistema di trading. Si traduce nella formula:

Guadagno = Importo del capitale finale – Importo del capitale iniziale

Questa statistica permette di valutare il potenziale guadagno assoluto con il sistema di trading definito per ilperiodo storico testato e per ogni combinazione di variabili.

Nota bene: i parametri di intermediazione definiti nella sezione "Parametri di intermediazione" sono presi inconsiderazione in questo calcolo.

"%Guadagno", rappresenta il guadagno o perdita in %. Si traduce tramite la formula:

%Guadagno = 100 x Profitto/ Importo del capitale iniziale

Indica quindi la relativa performance del backtest configurato con le variabili corrispondenti.

"N posizioni", indica il numero di posizioni aperte durante il backtest.

"% Posizioni vincenti" indica la percentuale delle posizioni vincenti. Matematicamente, si definisce con:

% posizioni vincenti = (100 x Numero di posizioni vincenti) / Numero di posizioni

"Guad. medio per posizione" é il guadagno medio per posizione. Puo' essere utile per determinare ilrendimento degli ordini piazzati. Si definisce con:

Guad. medio per posizione = Guadagno / Numero di posizioni

Nota bene: i risultati dei rapporti di ottimizzazione possono cambiare per un dato sistema di trading chedipende dal valore, unità di tempo o la quantità di dati storici usati.

V 5.1.3 – 20170718 www.prorealtime.com 31 / 97

Page 32: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Definizione del periodo di esecuzione del backtest

Questi campi permettono di definire le date di inizio e di fine del backtest. Notate che la quantità di storicoche puo' essere usata per il backtest é generalmente limitata alla quantità di storico disponibile sul grafico.Potete aumentare la quantità di dati storici caricati sul vostro grafico usando il menù di sinistra di ognigrafico. E' necessario caricare la quantità di storico che desiderate prima di avviare il vostro backtest.

Nel caso di un backtest "Fino a ultima data", gli ordini appaiono sul grafico ad ogni scatto dei segnali. E'ugualmente possibile associare questi ordini a delle popup o a dei suoni selezionando "Suono allarmi" nelmenù "Opzioni".

Se é definita una data di fine, le posizioni ancora aperte a questa data saranno chiuse.

Nota bene:

Se il vostro backtest mette del tempo ad eseguirsi, potete ridurre il periodo di esecuzione : il tempo di calcoloper backtestare un sistema di trading é proporzionale alla lunghezza dello storico sul quale il sistema ditrading é testato.

Dopo l'esecuzione di un backtest, i risultati sono mostrati nel seguente modo:

Curva dei guadagni e perdite che mostrano il guadagno e le perdite del sistema di trading

Istogramma delle posizioni

Rapporto dettagliato

Per maggiori informazioni riguardo alla visualizzazione dei risultati dei backtest, controlla l'Allegato A altermine di questo documento.

Personalizzazione degli orari di trading per il backtest

Attraverso il menù "Opzioni / Fuso orario & Orari di trading" è possibile impostare degli orari di tradingpersonalizzati per un determinato mercato.

Orari di trading personalizzati: Se impostiamo degli orari di trading ridotti per un determinato mercato,questo implica che saranno visibili sui grafici (e presi in configurazione nei ProBacktest) solo le quotazionidegli orari impostati. Nota bene: è possibile definire degli orari di trading ridotti solo in un determinato giorno.Ad esempio se un mercato è aperto 24 ore su 24 è possibile scegliere di visualizzare solo le quotazioni tra le10:00 e le 14:00, non è invece possibile visualizzare le quotazioni tra le 21:00 di un giorno e le 09:00 delgiorno successivo. Se un ordine è piazzato alla chiusura personalizzata dell'ultima candela del giorno ditrading con orari di trading personalizzati, questo ordine verrà piazzato all'apertura personalizzata delsuccessivo giorno di trading.

Informazioni sui fusi orari personalizzati e quotazioni durante il week-end:

Alcuni mercati aperti 24 ore su 24 permettono di "utilizzare quotazioni intraday per costruire candelegiornaliere". Questa opzione non è presa in considerazione quando vengono eseguiti dei ProBacktest, cheutilizzano sempre candele ufficiali giornaliere basate sul fuso orario di base (mercato locale).

Alcuni mercati (come il Forex) includono quotazioni durante il week-end. Esiste un'opzione nel menù"Opzioni / Fuso orario & Orari di trading" per questi mercati che permette di mostrare o nascondere i dati delweek-end nei grafici. Le quotazioni del week-end sono però sempre prese in considerazione per iProBacktest. Per il mercato Forex le quotazioni della domenica sono incluse nella candela giornaliera dellunedì per i ProBacktest (non esiste una candela giornaliera per la domenica).

V 5.1.3 – 20170718 www.prorealtime.com 32 / 97

Page 33: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Informazioni sui fusi orari personalizzati:

Il codice viene sempre eseguito nel fuso orario dell'utilizzatore. Questo significa che le istruzioni temporali(time, flatafter, flatbefore) prenderanno in considerazione questo fuso orario per il loro calcolo. Il fuso orariodell'utilizzatore è quello predefinito per il mercato dello strumento finanziario. È possibile personalizzare i fusiorari dal menù "Opzioni / Fuso orario & Orari di trading".

Per default, il fuso orario dello strumento finanziario è quello predefinito sul suo computer.

È possibile modificare il fuso orario di un mercato dal menù "Opzioni / Fuso orario & Orari di trading". Seviene apportata una modifica, il fuso orario personalizzato sarà preso in considerazione all'esecuzionesuccessiva di un ProBacktest.

Esempio: Per il titolo Vodafone (appartenente al mercato London Stock Exchange – fuso orario UTC+1 oraestiva britannica), imposto i grafici sul fuso orario di Parigi (UTC+2 ora estiva dell'Europa centrale):l'istruzione tempo passerrà a 13:00 (tempo della chiusura della candela 15 minuti cominciata alle 11:45 (oraestiva britannica, ovvero 12:00 ora estiva britannica modificato in 13:00 ora estiva dell'Europa centrale).

Le istruzioni temporali "intraday" coinvolte:

"Time" and similar functions ("Hour", "Minute")

"OpenTime" and similar functions ("OpenHour", "OpenMinute")

"FlatAfter" and "FlatBefore"

"IntradayBarIndex" (azzera all'apertura del mercato nel fuso orario selezionato)

Le istruzioni temporali in unità di tempo giornaliero non sono coinvolte dalla modifica di fuso orario:

"DOpen", "DHigh", "Dlow", "DClose"

"Date" and similar functions ("Year", "Month", "Day")

"DayOfWeek" e "Days"

Queste istruzioni temporali sono invece sempre nel fuso orario del mercato locale.

V 5.1.3 – 20170718 www.prorealtime.com 33 / 97

Page 34: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Ragioni di interruzione di un ProBacktest

Un ProBacktest puo' fermarsi in uno dei seguenti casi:

Il backtest raggiunge il termine specificato nella finestra di programmazione. In questo caso, il terminedel backtest viene mostrato solo da una linea verticale nera sul grafico.

C'é un'istruzione "Quit" nel codice che é eseguito. In questo caso, il termine del backtest viene mostrato

con la seguente icona:

Il capitale disponibile non é più sufficiente a coprire le perdite ("stima" del capitale é negativa). In questocaso, il termine del backtest sarà mostrato da questa icona

Un ordine é respinto per denaro insufficiente. Quest'ordine apparirà nella lista di ordini del rapportodettagliato. In questo caso, il termine del backtest sarà mostrato con l'icona:

Qui di seguito un esempio di backtest interrotto per insufficienza di capitale:

V 5.1.3 – 20170718 www.prorealtime.com 34 / 97

Page 35: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

ProBackt est – Backtest ing d i s istemi d i t rad ing

Visualizzazione dei valori delle variabili backtest (a partire da ProRealTime v10.2)

La funzione GRAPH consente di visualizzare i valori delle variabili che utilizza nel suo programma backtest.

Questa istruzione si utilizza nel modo seguente:GRAPH myvariable AS "my variable name"

myvariable é il nome della variabile nel codice

"my variable name" é l'etichetta della variabile che sarà visualizzata sul grafico

E' ugualmente possibile definire un colore di uscita grazie al settaggio opzionale COLOURED:

GRAPH myvariable COLOURED (r,g,b) AS "my variable name"

r,g,b sono degli interi tra 0 e 255 (Format RGB)

ex: (255,0,0) per una curva rossa

così come la trasparenza della curva:GRAPH myvariable COLOURED (r,g,b,a) AS "my variable name"

a é un intero compreso tra 0 e 255 e indica la trasparenza (0 per una curva totalmente trasparente, 255 per una curva piena)

Un nuovo sotto-grafico appare sotto la curva Guadagni/Perdite del suo Backtest. Questo sotto-graficocontiene i valori di myvariable a ogni barra, come nell'esempio sotto:

Note:

L'istruzione GRAPH non può essere utilizzata in trading automatico.

5 variabili al massimo possono essere visualizzate simultaneamente sullo stesso grafico. Ogni variabilesupplementare sarà ignorata.

V 5.1.3 – 20170718 www.prorealtime.com 35 / 97

Page 36: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

I l metodo Walk Forw ard

Il metodo Walk Forward

Il metodo Walk Forward é una parte essenziale dello sviluppo di una strategia di trading. Consente diottimizzare un sistema di trading e di valutarne la validità e la stabilità nel tempo.

Innanzitutto, il metodo walk forward permette di ottimizzare una serie di variabili su un periodo inizialechiamato "dati in-sample" o "periodo di ottimizzazione", e quindi testa i migliori parametri nel seguenteperiodo chiamato "dati out of sample" o "periodo di test", e ripete il processo spostando in avanti le finestretemporali. I periodi di ottimizzazione (in-sample) possono avere diversi punti di partenza (modo nonancorato) o un singolo punto di partenza (modo ancorato).

MODO NON ANCORATO MODO ANCORATO

Confrontando questi 2 periodi, il metodo consente di:

Controllare che la performance della strategia sui periodi ottimizzati (dati In-sample in blu) siacompatibile con i periodi di test (dati out-of-sample in grigio). Si evita così il rischio di effettuareun'ottimizzazione eccessiva, proiettando la strategia in un periodo di tempo non utilizzatonell'ottimizzazione.

Controllare come si comporta la strategia in condizioni di mercato mutevoli.

Testare la forza della strategia su dati passati.

Per determinare se una strategia é solida o no, si usa il rapporto WFE (Walk Forward Efficiency). Il rapportoWalk Forward Efficiency é un indicatore qualitativo del processo di ottimizzazione. Confronta i guadagniannualizzati del periodo di test con i guadagni annualizzati del periodo di ottimizzazione. Questa misura dellasoidità é una parte critica del metodo walk forward.

Rapporto WFE =Guadagni annualizzati del periodo di test

Guadagni annualizzati del periodo di ottimizzazione

I guadagni annualizzati sono i guadagni realizzati su un periodo determinato espresso in termini annuali. Cipermettono di confrontare i guadagni di periodi diversi su basi comuni. Tipicamente, il periodo diottimizzazione (in-sample in blu / nell'immagine sopra) rappresenta il 70% del periodo totale analizzato, e ilperiodo di test (out of sample/ grigio) il 30%.

Per misurare l'affidabilità dell'analisi, i risultati dei due periodi hanno bisogno di essere valutati su basicomuni. Studi su questo metodo indicano che se almento 3/5 dei periodi di test mostrano un rapporto WFEmaggiore del 50%/60%, la strategia può essere considerata solida.

Dopo l'analisi Walk Forward, é interessante analizzare i risultati dei diversi punti. È necessario esaminare laregolarità dei guadagni derivanti dai periodi di post-ottimizzazione. Se i risultati rivelano che la strategiamostra un rischio di essere sovra-ottimizzata (= i guadagni dai periodi di test sono molto più bassi rispetto aquelli dei periodi di ottimizzazione), la piattaforma le permette di modificare diversi parametri (variabili, livellidi stop e di target , periodi di trading) e avviare di nuovo l'analisi walk forward, tante volte quanto ne sianecessario, per ottenere una strategia solida.

V 5.1.3 – 20170718 www.prorealtime.com 36 / 97

Page 37: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

I l metodo Walk Forw ard

Esempio

Questa sezione mostra come ottimizzare un sistema di trading esistente utilizzando il metodo WalkForward.

Clicchi sul pulsante nella parte superiore della finestra di edizione del codice che trova di seguito.

V 5.1.3 – 20170718 www.prorealtime.com 37 / 97

Page 38: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

I l metodo Walk Forw ard

Si aprirà la finestra seguente. Dopo aver definito le variabili può attivare il metodo Walk Forward cliccandosul pulsante "Attivo" e scegliere i parametri del Walk Forward. Selezioni il modo Non ancorato per diversipunti di partenza, o il modo Ancorato per un punto di partenza unico per tutte le occorrenze del test.

Può definire il numero di occorrenze del metodo Walk Forward (un'occorrenza consiste nell'ottimizzare iparametri del periodo di ottimizzazione e nel testare la migliore combinazione sul periodo testato), e ilrapporto tra il periodo dell'ottimizzazione ed il periodo del test.

Ricerca suggeriscono un periodo di ottimizzazione del 70% di periodo di simulazione e un periodo di test del30%. È inoltre consigliato fare diversi test per incrementare l'affidabilità dell'analisi.

Dopo aver definito i parametri, chiuda la finestra qui sopra e avvii l'analisi Walk Forward cliccando su"ProBacktesta il mio sistema".

V 5.1.3 – 20170718 www.prorealtime.com 38 / 97

Page 39: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

I l metodo Walk Forw ard

Durante l'analisi Walk Forward, la piattaforma incomincia ad ottimizzare la strategia su un primo campioneper determinare la prima combinazione di variabili che generano la massima performance. In seguito laperformance di questa combinazione è analizzata su un campione aggiuntivo che non era inclusonell'ottimizzazione. Questa procedura si ripete 5 volte. Lo scopo è determinare la combinazione di variabiliche ha generato delle performance importanti e stabili in diverse condizioni di mercato.

A seconda del numero di variabili e occorrenze il calcolo sarà più o meno complesso. Il tempo di esecuzionedel backtest dipenderà dalla sua difficoltà.

Una volta terminata l'analisi visualizzerà un grafico contenente una curva insieme al rapporto dettagliatodella performance del sistema. Oltre alle finestre del rapporto dettagliato classico, visualizzerà una sezionededicata al Walk Forward contenente i risultati di ogni occorrenza.

V 5.1.3 – 20170718 www.prorealtime.com 39 / 97

Page 40: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

I l metodo Walk Forw ard

La curva riunisce e mostra il primo periodo in-sample (ottimizzazione) e i 5 periodi out-of-sample (test) sul grafico.Passando col cursore sulle bande in basso il periodo corrispondente verrà evidenziato insieme ai parametri presi inconsiderazione ed alle performance del periodo di tempo in questione. Nell'immagine qui sopra il mouse si trova sulsecondo periodo di test. I valori visualizzati sopra per le variabili PROTEZIONE, ORDINI, e NUMERO danno Imigliori risultati durante la 2a ottimizzazione (in-sample #2) e verranno quindi applicati al periodo di test (out-of-sample #2), mostrando un guadagno di 2.000€ durante il periodo di test #2 (evidenziato nell'immagine qui sopra).La strategia studiata in questo esempio sembra essere solida. Solo 2 di 5 periodi out-of-sample hanno unaperformance più bassa dei corrispondenti periodi in-sample. Ad ogni modo, anche se il rischio (rappresentatodal massimo drawdown) misurato durante le fasi di test é in linea con il rischio misurato durante le fasi diottimizzazione, il rapporto WFE indica la presenza di un errore.Un rapporto WFE che é troppo alto può indicare un sovra-ottimizzazione della strategia o un comportamentoanomalo causato dagli eventi di mercato.Per esempio, se ci fosse un evento economico che pesasse troppo sui risultati della strategia, i risultatipotrebbero essere molto differenti se questo evento eccezionale di mercato causasse un movimento delprezzo nella direzione opposta.Nel caso di un rapporto molto alto di WFE, potrebbe essere interessante incrementare il numero di analisi diwalk forward e verificare se queste discrepanze continuano a persistere. Se ne é il caso, potrebbe indicareche il metodo walk forward mostri un rischio di sovra-ottimizzazione della strategia e é inoltre consiglabilemodificare i parametri iniziali.

V 5.1.3 – 20170718 www.prorealtime.com 40 / 97

Page 41: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

AutoTrading ProOrder

Questa parte di manuale spiega come prendere i sistemi di trading che hai precedentemente backtestato eeseguirli come sistemi di trading automatici.

La prima sezione spiega come inviare un sistema di trading a ProOrder per prepararlo per l'esecuzionecome un sistema di trading automatico.

La seconda sezione spiega come iniziare un sistema di trading e verificare i risultati

La terza sezione spiega i parametri dei sistemi di trading e le loro condizioni di esecuzione.

La quarta sezione spiega come coesistono i sistemi di trading manuali e automatici nella piattaforma

La quinta sezione spiega le implicazioni dell'esecuzione di sistemi di trading automatici multipli sullostesso strumento.

L'ultima sezione contiene una lista di indicatori che non possono essere usati su trading automatici acausa del loro metodo di calcolo.

Ti consigliamo di leggere l'intero manuale prima di iniziare un sistema di trading per conoscere tutte lecondizioni di esecuzione dei sistemi di trading.

V 5.1.3 – 20170718 www.prorealtime.com 41 / 97

Page 42: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Preparate un sistema di trading per l'esecuzione automatica

Cominciate ad aprire la finestra ProOrder dal menù trading:

Verrà visualizzata la seguente finestra che contiene le istruzioni per preparare un sistema di trading per iltrading automatico.

V 5.1.3 – 20170718 www.prorealtime.com 42 / 97

Page 43: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Prima di tutto, scegliete il grafico e unità di tempo che volete per eseguire il vostro sistema di trading e

cliccate sul tasto. Apparirà la finestra Indicatori e Sistemi di Trading. Cliccate su "Backtesting e

Trading Automatico" per vedere la lista dei vostri sistemi di trading:

Scegliete il sistema di trading che volete eseguire automaticamente e premete sul tasto "Preparati per iltrading automatico". Il sistema di trading apparirà poi su ProOrder.

V 5.1.3 – 20170718 www.prorealtime.com 43 / 97

Page 44: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Come iniziare un sistema di trading su ProOrder e controllarne i risultati

Una volta che avete aggiunto un sistema di trading su ProOrder, potrete definire la grandezza massima dellaposizione per questo sistema e poi cominciare il trading con questo, premendo il tasto start:

Una finestra popup vi chiederà di confermare che volete eseguire il sistema che si consiglia di leggere conattenzione.

Notate che la "Grandezza massima posizione" presente su ProOrder ha la precedenza sulle istruzioni delcodice. La grandezza massima della posizione per futures e forex é definita in numero di lotti o contratti. Peresempio, se il vostro codice ha un'istruzione di comprare 3 lotti, ma limitate la grandezza massima dellaposizione a 1, quest'ordine di acquisto sarà ignorato. Allo stesso modo, se il vostro codice ha un'istruzione dicomprare 1 lotto, poi vendete 3 lotti, l'ordine di vendita sarà ignorato e vi rimarrà 1 posizione. Si deve sempreverificare la grandezza massima della posizione prima di eseguire un codice.

Per le azioni, la grandezza massima della posizione é definita in contanti (non incluse le spese diintermediazione).

Dopo aver premuto sul tasto "Start", il sistema sarà visualizzato nella sezione "In corso di esecuzione" comemostrato qui sotto.

V 5.1.3 – 20170718 www.prorealtime.com 44 / 97

Page 45: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Una volta che il sistema di trading é iniziato, la sua posizione, guadagno latente e guadagno totale sarannomostrati nella finestra ProOrder. E' possibile cliccare sul link nella sezione "Versione" per vedere la copia delcodice di questo sistema.

Potete anche cliccare sul tasto giallo mostrato qui sotto per vedere la curva dei guadagni e perdite delsistema e un rapporto dettagliato delle sue performance.

V 5.1.3 – 20170718 www.prorealtime.com 45 / 97

Page 46: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Un esempio della curva dei guadagni e perdite del sistema in esecuzione e il suo rapporto dettagliato:

V 5.1.3 – 20170718 www.prorealtime.com 46 / 97

Page 47: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Nota bene: Il guadagno nella sezione “Statistiche delle posizioni chiuse” puo' essere diverso dal valore dellacurva dei guadagni e perdite perché il sistema é ancora in corso di esecuzione e la curva dei guadagni eperdite prende in considerazione posizioni ancora aperte.

V 5.1.3 – 20170718 www.prorealtime.com 47 / 97

Page 48: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Parametri del trading automatico e condizioni di esecuzione

Parametri del sistema di trading

Prima di eseguire qualsiasi sistema di trading, cliccate sull'icona a chiave inglese mostrata in giallo perconfigurare i parametri del vostro trading:

Un link per mostrare le condizioni di esecuzione del vostro sistema di trading é anche incluso nella parteinferiore di questa finestra ("Clicca qui"). Vi invitiamo a leggere con attenzione queste condizioni.

V 5.1.3 – 20170718 www.prorealtime.com 48 / 97

Page 49: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Stop automatico dei sistemi di trading

Data di validità: Tutti i sistemi di trading in corso di esecuzione hanno una data di validità comune. Se noncliccate sul tasto "Prolunga" prima di questa data, ProOrder li interromperà automaticamente. Potete vederela data di validità (espresso nel fuso orario del computer) e prolungare la validità dei vostri sistemi di tradingcon il tasto "Prolunga" nella parte inferiore della finestra ProOrder quando un sistema di trading é in corso diesecuzione:

La quantità di tempo di ogni prolungamento puo' essere configurata all'interno della linguetta "Tradingautomatico" nella finestra “Preferenze del trading”. Si puo' aumentare questo parametro quando avetesistemi di trading in corso di esecuzione. La modifica sarà applicata con il prossimo prolungamento cheavete fatto.

Numero di ordini piazzati: ProOrder puo' interrompere qualsiasi sistema di trading se la somma degli ordiniin attesa e se il numero di ordini eseguiti dall'apertura del mercato (0:00 GMT per il mercato del forex) ésuperiore o uguale alla quantità scelta nella linguetta “Trading automatico“ nella finestra "Preferenze deltrading". Un ordine in attesa é un ordine che era inviato al broker e non eseguito, rigettato o cancellato.

Per esempio, ogni istruzione "Set stop" o "Set Trailing stop" o "Set target" fino a quando l'ordinecorrispondente non é stato cancellato, rifiutato o eseguito.

Inoltre, 3 diversi ordini limite o 3 diversi ordini stop che non sono stati cancellati, rifiutati o eseguiticonteranno come 3 ordini in attesa. Questo é vero se i 3 ordini sono sullo stesso livello di prezzo o su livellidi prezzo diversi.

V 5.1.3 – 20170718 www.prorealtime.com 49 / 97

Page 50: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Se scegliete per esempio un livello di stop di 8 ordini e dall'apertura del mercato 5 ordini sono stati eseguiticon un dato sistema di trading e questo sistema ha una posizione aperta e 2 ordini in attesa (uno "set target"e uno "set stop") e il sistema ha bisogno di inviare un ordine supplementare a mercato: questo 8° ordine nonsarà inviato (5+2+1 raggiunge il livello stop), questo sistema di trading sarà interrotto con gli ordini in attesacancellati prima, e poi la posizione chiusa.

Rifiuto di ordini: ProOrder puo' interrompere qualsiasi sistema di trading se vengono rigettati troppi ordini.Potete scegliere di interrompere immediatamente un sistema di trading nel caso in cui un ordine sia rigettatoo scegliere un numero predeterminato di tentativi. Non é possibile cambiare i parametri del rigetto quando unsistema di trading é in corso di esecuzione.

Coesistenza nella piattaforma del trading manuale e automatico

Se un sistema di trading é in corso di esecuzione su un valore, non sarà più possibile tradare manualmentesu questo valore dalla piattaforma mentre il sistema é in esecuzione. Potete continuare a tradaremanualmente su altri valori. Sui valori sui quali i sistemi di trading sono in esecuzione, gli strumenti di tradingmanuale saranno sostituiti con un tasto che mostra il trading automatico attivato per questo valore:

Si puo' cliccare su questo tasto per aprire la finestra ProOrder e controllare i sistemi di trading in esecuzione.

V 5.1.3 – 20170718 www.prorealtime.com 50 / 97

Page 51: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

Sistemi di trading multipli in corso di esecuzione sullo stesso valore

Se avete sistemi di trading multipli in corso di esecuzione sullo stesso valore, la posizione netta édeterminata su tutti questi sistemi di trading. Per esempio, se ci sono 2 sistemi di trading ed uno compra 1lotto e l'altro vende 1 lotto, la posizione netta sarà 0. Unicamente la posizione netta presa con tutti sistemi ditrading sarà aperta a mercato in un dato momento per un dato valore.

Quando aprite la curva dei guadagni e perdite di un sistema di trading, vedrete il grafico "Posizioni". Questoindica la posizione di un sistema di trading individuale su questo valore che puo' essere diverso dalla vostraposizione netta su questo valore (determinata da tutti i sistemi di trading in corso di esecuzione su questovalore). La posizione netta viene mostrata dalla linea della posizione.

Esempio:

2 sistemi di trading sono in corso di esecuzione sullo stesso valore: uno sta comprando 6 lotti di grandezza100.000 ciascuno e l'altro sta comprando 2 lotti di grandezza 100.000 ciascuno = posizione netta +800.000.

In questo esempio la posizione del sistema di trading mostrata sul grafico é +600.000. La posizione nettamostrata dalla linea della posizione é +800.000.

V 5.1.3 – 20170718 www.prorealtime.com 51 / 97

Page 52: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Au toTrad ing Pro Order

La posizione netta di + 800.000 viene anche mostrata sulla finestra "Trading" > "Portafogli":

Quando stanno funzionando più sistemi di trading sullo stesso valore, ogni istanza del sistema in funzionesegue indipendentemente la sua propria posizione attuale, ordini, trade, e guadagni. Di conseguenza, leistruzioni "LongOnMarket", "ShortOnMarket" vi dicono se il sistema in funzione attualmente é lungo o corto.

La vostra posizione netta su un valore puo' essere diversa dalla posizione di un dato sistema. Your netposition on a security may be different from the position of a given system. Allo stesso modo, altre variabili distato come "CountOfLongShares", "CountOfShortShares", "CountOfPosition", "PositionPrice","StrategyProfit", "TradeIndex", "TradePrice" e "PositionPerf" applicano solo la strategia corrente.

Restrizioni per indicatori

I seguenti indicatori non possono essere usati per trading automatici perché il loro modo di calcolo nonpermette l'uso del tempo reale:

ZigZag: i segnali che sono basati su questo indicatore sono ricalcolati dopo il fatto e di conseguenza, isegnali dati in tempo reale possono essere molto diversi dai segnali dati durante i backtest.

Informazioni riguardanti il fuso orario e gli orari di trading personalizzati

Quando invia un sistema di trading a ProOrder, il fuso orario e gli orari di trading associati alla strategia sonoquelli che sono stati impostati per il mercato dello strumento finanziario. Queste impostazioni vengonoapplicate ad ogni invio della strategia. Per modificare il fuso orario e gli orari di trading di una strategia ènecessario eliminare la strategia da ProOrder e modificare le impostazioni dal menù "Opzioni / Fuso orario &Orari di trading". A questo punto sarà possibile inviare di nuovo il sistema di Trading a ProOrder.

Per maggiori informazioni circa le istruzioni che dipendono dal fuso orario del grafico e le impostazioni degliorari di trading leggere la sezione "Personalizzazione degli orari di trading per il backtest".

V 5.1.3 – 20170718 www.prorealtime.com 52 / 97

Page 53: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

Allegato A: Risultati del sistema di trading

I risultati del sistema di trading si presentano in 3 forme complementari:

Curva guadagni e perdite

La Curva guadagni e perdite di un backtest mostra il profitto e perdita del sistema di trading o backtest:

La linea blu orizzontale rappresenta il capitale iniziale nel caso del backtest o 0 nel caso di un sistemadi trading automatico. Cosi', nel caso del backtest che ha un capitale iniziale di 10.000 e una perdita di2.705, il valore della curva dei guadagni e perdite sarebbe 7.295 come mostrato nell'esempio qui sotto.Nel caso di un sistema automatico di trading con la stessa perdita, il valore iniziale sarebbe 0 e il valorefinale sarebbe - 2.705.

Il riempimento della curva guadagni e perdite sarà di colore verde se la performance globale épositiva (il capitale é aumentato in rapporto al capitale iniziale), di colore rosso se la performance globale énegativa.

Il tratto della curva guadagni e perdite sarà di colore verde per indicare una variazione positiva inrapporto al livello precedente, di colore rosso per indicare una variazione al ribasso.

V 5.1.3 – 20170718 www.prorealtime.com 53 / 97

Page 54: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

Grafico delle posizioni

L'istogramma delle posizioni vi permette di visualizzare in istogramma l'evoluzione delle posizioni presedurante la simulazione del sistema di trading.

Una barra verde indica l'apertura di una posizione lunga (acquisto).

Una barra rossa indica l'apertura di una posizione corta (short).

Se non si visualizza nessuna barra, nessuna posizione é aperta sul mercato.

La comparsa di più barre successive e dello stesso colore indica che la o le posizioni sono ancora aperte.

Sull'asse verticale visibile sul lato destro del grafico, vedrete le diverse posizioni che avete apertoattualmente (evidenziate). Nell'esempio qui sotto, possiamo constatare che siamo in posizione aperta lungadi un lotto di 100.000 unità sull'EUR/USD.

V 5.1.3 – 20170718 www.prorealtime.com 54 / 97

Page 55: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

Rapporto dettagliato

Il rapporto dettagliato vi permette di visualizzare le statistiche del sistema di trading e ugualmente il dettagliodi ogni posizione e ordine:

V 5.1.3 – 20170718 www.prorealtime.com 55 / 97

Page 56: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

Il rapporto dettagliato si presenta in una finestra indipendente composta da tre linguette:

La linguetta "Statistiche delle posizioni chiuse" vi darà una visione esaustiva delle performance del vostrosistema di trading (guadagno o perdita, numero di trade vincenti,...) ed anche degli indicatori di rischio comemax drawdown. Notate che questa linguetta non include le analisi delle posizioni aperte nel momento in cui ilrapporto é generato (vengono prese in considerazione solo le posizioni chiuse). Qui di seguito troverai lalista delle statistiche:

"Guadagno", indica il guadagno o perdita realizzata con il sistema di trading. Matematicamente, questosi traduce nella formula:

Guadagno = Importo del capitale finale – Importo del capitale iniziale

Questa statistica permette di valutare il potenziale guadagno assoluto con il sistema di trading definito peril periodo storico testato e per ogni combinazione di variabile.

Nota bene: i parametri di intermediazione definite nella sezione "Parametri di intermediazione" sono presiin considerazione nel calcolo.

"%Guadagno", rappresenta il guadagno o perdita in %. Si traduce con la formula:

%Guadagno = 100 x Profitto/ Importo del capitale iniziale

"N posizioni" indica il numero di posizioni che sono state aperte durante il backtest.

"% Posizioni vincenti" indica la percentuale di posizioni vincenti. Si traduce con la formula:

% posizioni vincenti = (100 x Numero di posizioni vincenti) / Numero di posizioni

"Guad. medio di posizioni vincenti": é il guadagno medio per posizione. Puo' essere utiledeterminare l'efficacia degli ordini piazzati. Il guadagno medio per posizione é particolarmente importantequando si crea un sistema di trading che piazza un basso numero di ordini. Matematicamente, si definiscecome:

Guad. medio di posizioni vincenti = Guadagno / Numero di posizioni

"Profitto miglior posizione" é il guadagno massimo su una posizione presa e "Perdita peggiorposizione" é la perdita massima sulla posizione presa dall'inizio del sistema di trading. "Scarto tipoprofitti e perdite" é lo scarto tipo di risultati di ogni posizione.

Max Drawdown: é il potenziale di perdite massimo del sistema di trading. Il drawdown é definito comela distanza tra un dato punto ed il punto massimo che lo precede nella curva dei guadagni e perdite:

DD(n)= Max t€[0 ;n] P(t) - P(n)Il "Max drawdown" é calcolato come il più grande drawdown dell'intera storia del sistema di trading.

MaxDD(N) = Max n€[0:N] ( Max t€[0;n] P(t) - P(n) )

Max Run-up: é il potenziale guadagno massimo del sistema di trading. Il run-up é definito come la differenzatra un dato punto e il punto più basso che lo precede nella curva dei guadagni e perdite:

RU(n)= P(n) – Min t€[0;n] P(t)

"Max Run-up" é calcolato come il massimo di questo valore dell'intera storia del sistema di trading.

MaxRU(N) = Max n€[0;N] ( P(n) – Min t€[0;n] P(t) )

V 5.1.3 – 20170718 www.prorealtime.com 56 / 97

Page 57: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

Esempio:

BARINDEX PNL DRAWDOWN RUNUP

1 0,00 0,00 0,00

2 15,00 0,00 -15,00

3 10,00 5,00 -10,00

4 0,00 15,00 0,00

5 15,00 0,00 -15,00

6 -10,00 25,00 0,00

7 -20,00 35,00 0,00

8 -5,00 20,00 -15,00

9 -6,00 21,00 -14,00

10 20,00 0,00 -40,00

11 5,00 15,00 -25,00

Max: -35,00 40,00

V 5.1.3 – 20170718 www.prorealtime.com 57 / 97

Page 58: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato A: R isu l t at i de l s istema d i t rad ing

"% Max esposizione rischio": L'esposizione al rischio é il rapporto tra la perdita massima possibile sullaposizione e l'importo corrente del capitale. La % max esposizione rischio é quindi il massimo di questovalore espresso in percentuale. Sono da distinguere 3 casi:

Azioni:

% Max esposizione rischio = Max posizione (Quantità * prezzo medio / capitale) * 100

Futures:

% Max esposizione rischio = Max posizione (Quantità * deposito / capitale) * 100

Forex:

% Max esposizione rischio = Max posizione (Quantità * prezzo medio * effetto leva / capitale) * 100

Ugualmente, "% Esposiz. media al rischio" é la percentuale media dell'esposizione al rischio.

"Commissioni" contabilizza l'insieme delle commissioni di ogni ordine dall'inizio del sistema di trading.

Queste commissioni sono definite nei parametri della sezione di un backtest.

La % di tempo nel mercato viene calcolata come il numero delle barre con una posizione aperta diviso ilnumero delle barre del sistema di trading.

Le 2 linguette seguenti vi danno delle informazioni su tutti gli ordini piazzati e le posizioni aperte e chiusedurante l'esecuzione del sistema di trading automatico o backtest.

Nella "Lista ordini" troverete una lista di tutti gli ordini piazzati includendo i dettagli sull'ora, il senso, laquantità e il prezzo. Gli ordini sono mostrati con il fuso orario del mercato.

Infine, nella "Lista posizioni chiuse" troverete un'informazione riguardo alle posizioni prese con ilvostro sistema di trading (lunga o corta, la durata espressa in numero di barre, la performance di ogniposizione, la data di entrata e di uscita…). Se c'é una posizione ancora aperta nel momento in cui ilrapporto é generato, non sarà inclusa in questa lista. Nel caso di un backtest, se volete chiudere tutte leposizioni alla fine del backtest, scegliete una data di fine fissa.

V 5.1.3 – 20170718 www.prorealtime.com 58 / 97

Page 59: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Allegato B: Esempi di codici dettagliati

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistema di trading basato su Heikin Ashi

Questo sistema di trading genera un segnale di acquisto quando, in stile Heiken-Ashi, una candela verdeappare dopo una candela rossa.

Un segnale di vendita viene emesso se una candela rossa appare dopo una candela verde.

Questo backtest ricostruisce la vista Heikin Ashi da candele normali. Puo' essere applicato ad un graficousando lo stile a candela normale (non lo stile a candela Heikin Ashi).

ONCE PreviousStatus = 0

IF BarIndex = 0 THEN

XClose = TotalPrice

XOpen = (Open + Close) / 2

ELSE

XClose = TotalPrice

XOpen = (XOpen[1] + Xclose[1]) / 2

ENDIF

IF XClose >= XOpen THEN

IF PreviousStatus <> 1 THEN

BUY 1 SHARES AT MARKET

PreviousStatus = 1

ENDIF

ELSE

IF PreviousStatus <> -1 THEN

SELLSHORT 1 SHARES AT MARKET

PreviousStatus = -1

ENDIF

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 59 / 97

Page 60: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistema di trading basato sullo ZigZag

Questo backtest si basa sullo ZigZag per determinare quali sarebbero state le migliori opportunità d'acquistoe di vendita. I risultati eccellenti di questo sistema di trading sul mercato delle azioni e futures sono legati alcarattere non predittivo dello ZigZag, che viene ricalcolato a posteriori e non dà dunque dei segnali validi intempo reale.

La ragione per cui i risultati di questo sistema di trading sono interessanti é che danno dei risultati quasiideali che possono essere comparati ad altri sistemi di trading.

// I periodi dell'indicatore zigzag possono essere ottimizzati usando l'ottimizzazione divariabili

myZigZag = ZigZag[10]

c11 = (myZigZag > myZigZag[1])

c12 = (myZigZag < myZigZag[1])

IF c11 AND NOT LONGONMARKET THEN

BUY 1 SHARES AT MARKET

ENDIF

IF c12 AND NOT SHORTONMARKET THEN

SELLSHORT 1 SHARES AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 60 / 97

Page 61: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistema di trading Breakout Range con Trailing Stop

Sistema di trading Breakout Range con Trailing Stop

Si tratta di un sistema di trading di tipo BreakOut intraday che prende solo posizioni lunghe. Il range iniziale édeterminato dai punti più alti e più bassi sulle 2 prime candele della giornata.

Se il prezzo incrocia al rialzo una linea di resistenza e la media mobile 10 periodi aumenta, viene presa unaposizione lunga.

Viene definito un target a 1%.

Uno stop di protezione é impostato sul livello del supporto, se il prezzo raggiunge questo livello, la posizionesarà chiusa con un ordine stop.

La posizione é chiusa alle 5 del pomeriggio (ora di mercato) per non mantenere posizioni di notte. Unaccesso intraday é necessario per testare questo sistema di trading.

DEFPARAM CumulateOrders = False

MM = Average[10](close)

MyTarget = 1

EndTime = 170000

IF INTRADAYBARINDEX = 2 THEN

MyResistance = highest[2](high)

MySupport = lowest[2](low)

ENDIF

REM Entra Lungo:

IF MM > MM[1] AND close CROSSES OVER MyResistance THEN

BUY 1 SHARES AT MARKET

ENDIF

REM Esci Lungo:

IF time > EndTime THEN

SELL AT MARKET

ENDIF

SELL AT MySupport STOP

SET TARGET %Profit MyTarget

V 5.1.3 – 20170718 www.prorealtime.com 61 / 97

Page 62: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistema di trading basato sullo stocastico lisciato

Questo sistema di trading si basa sull'indicatore Stocastico Lisciato applicato al prezzo medio (indicatore 1)e alla media mobile esponenziale di questo valore (indicatore 2). Questo sistema di trading compra quandol'indicatore 1 é sopra l'indicatore 2 o entra una posizione corta quando l'indicatore 1 é sotto l'indicatore 2.

Un target (limite) é definito ad 1% superiore al prezzo di entrata.

DEFPARAM CumulateOrders = False

REM Acquisto

Indicator1 = SmoothedStochastic[9,9](MedianPrice)

Indicator2 = ExponentialAverage[9](Indicator1)

// InitVariabile

StopLimit = 1

REM Inserire condizioni di acquisto

c1 = (Indicator1 >= Indicator2)

IF c1 THEN

BUY 1 SHARES AT MARKET

ENDIF

REM Inserire condizioni di vendita allo scoperto

IF NOT c1 THEN

SELLSHORT 1 SHARES AT MARKET

ENDIF

SET TARGET %PROFIT StopLimit

V 5.1.3 – 20170718 www.prorealtime.com 62 / 97

Page 63: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Swing Trading, ADX e Media Mobile

Questo backtest si basa sull'indicatore ADX e sulla sua posizione rispetto al livello 30 da almeno 5 giorni,permettendo di ridurre i falsi segnali e di minimizzare i rischi. Puo' essere eseguito su un timeframegiornaliero.

Il sistema di trading presenta varie condizioni che ne limitano il numero di opportunità di trading.

DEFPARAM CumulateOrders = False

MyADX12 = ADX[12]

ADXperiods = 5

MyMM20 = Average[20](Close)

// ACQUISTO

// ADX 12 deve essere superiore a 30 per almeno 5 barre

Condition1 = NOT LOWEST[ADXperiods + 1](MyADX12) > 30

// Se la media mobile di 20 periodi del periodo in corso é tra il massimo ed il minimodel periodo in corso e la media mobile del periodo precedente é tra il massimo e ilminimo del periodo precedente

Condition2 = High > MyMM20 AND Low < MyMM20 AND High[1] < MyMM20[1] AND Low[1] <MyMM20[1]

// Se il massimo del giorno é più alto del giorno precedente

Condition3 = Dhigh(0) > Dhigh(1)

IF Condition1 AND Condition2 AND Condition3 THEN

BUY 1 SHARES AT MARKET

ENDIF

// SHORT

// ADX 12 é superiore a 30 da almeno 5 barre

Condition4 = Condition1

// Se la media mobile di 20 periodi del periodo in corso é tra il massimo ed il minimodel periodo in corso e la media mobile del periodo precedente é tra il massimo e ilminimo del periodo precedente

Condition5 = High > MyMM20 AND Low < MyMM20 AND High[1] > MyMM20[1] AND Low[1] >MyMM20[1]

// Se il minimo del giorno é inferiore al minimo del giorno precedente

Condition6 = Dlow(0) < Dlow(1)

IF Condition4 AND Condition5 AND Condition6 THEN

SELLSHORT 1 SHARES AT MARKETENDIF

V 5.1.3 – 20170718 www.prorealtime.com 63 / 97

Page 64: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistema di trading che utilizza un contatore di posizioni

Inverse Fisher Transform applicato al RSI

Questo sistema di trading usa "l'Inverse Fisher Transform RSI" per posizionare ordini di acquisto o divendita.

Il sistema posiziona un ordine di acquisto quando l'Inverse Fisher Transform RSI incrocia al rialzo la sogliadei 50 e vende quando l'indicatore incrocia al ribasso la soglia degli 80.

Posiziona un ordine di vendita allo scoperto quando l'Inverse Fisher Transform RSI incrocia al ribasso lasoglia dei 50 e riacquista quando l'Inverse Fisher Transform RSI incrocia al rialzo la soglia dei 20.

Questo sistema di trading é da testare sulle viste a 1h per i futures o sulle viste giornaliere per le azioni.

REM Inverse Fisher Transform applicato al RSI

REM Parametri : n = Numero di barre per il calcolo del RSI

n = 10

Ind = RSI[n](Close)

x = 0.1 * (Ind - 50)

y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)

z = 50 * (y + 1)

myInverseFisherTransformsRSI = z

IF (myInverseFisherTransformsRSI CROSSES OVER 50) THEN

BUY 1 SHARES AT MARKET

ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 80) THEN

SELL AT MARKET

ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 50) THEN

SELLSHORT 1 SHARES AT MARKET

ENDIF

IF (myInverseFisherTransformsRSI CROSSES OVER 20) THEN

EXITSHORT AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 64 / 97

Page 65: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistemi di trading che utilizzano TradeIndex – Find inside bar

Il seguente esempio é un sistema di trading basato su un pattern di prezzo utilizzato frequentemente econosciuto come "Inside Bar" sulla base di due forme di candele.

La prima forma interviene se il range della 2a candela che precede la candela in corso é più grande delrange della candela che precede la candela in corso. Questa candela che precede la candela in corsodeve essere bianca (chiusura > apertura). In questo caso, viene presa una posizione lunga.

La seconda forma interviene se il range della 2a candela che precede la candela in corso é inferiore alrange della candela che precede la candela in corso e la candela che precede quella attuale é nera(chiusura < apertura). In questo caso, prendiamo una posizione corta.

Tutte le posizioni sono sistematicamente chiuse 3 barre dopo che sono aperte.

DEFPARAM CumulateOrders = False

Condition1 = (High[2] >= High[1] AND Low[2] <= Low[1])

Condition2 = (High[2] <= High[1] AND Low[2] <= Low[1])

Condition3 = (Close[1] > Open[1])

Condition4 = (Close[1] < Open[1])

IF (Condition1 AND Condition3) THEN

BUY 1 Share AT MARKET

ENDIF

IF LONGONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN

SELL 1 share AT MARKET

ENDIF

IF (Condition2 AND Condition4) THEN

SELLSHORT 1 share AT MARKET

ENDIF

IF SHORTONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN

EXITSHORT AT MARKET

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 65 / 97

Page 66: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Sistemi di money management

I risultati di un backtest possono essere migliorati usando i sistemi di money management.

Questi sistemi sono spesso formalizzati in "martingale", destinate ad ottimizzare la speranza matematica diun sistema di trading, che corrisponde al guadagno medio o alla perdita media per ogni transazione se piùtransazioni sono fatte. Cio' implica di poter innanzitutto stimare la probabilità che un'operazione sia vincentee l'importo guadagnato.

Per implementare una martingala, puo' essere utile avere uno stop loss, take profit e ordini inattivi codificatidirettamente nel vostro sistema di trading, cosi' da poterli personalizzare interamente ed avere dei sotto-sistemi che permettono di gestire dinamicamente la grandezza delle posizioni.

Stop di protezione e Target

Per maggiori informazioni sugli stop di protezione, trailing stop e profit target, vedere le apposite sezioni delmanuale.

Stop d'inattività

Il codice sotto riportato permette di usare uno stop di inattività nel vostro sistema di trading. Non dimenticatedi definire le condizioni del vostro stop, qui nominato InactivityStopLong e InactivityStopShort. Nel seguenteesempio, lo stop é scattato dopo 10 barre.

ONCE Count = 10

REM Scelta del numero di barre dopo che la posizione sarà automaticamente chiusa

IF ONMARKET AND (BARINDEX - TRADEINDEX + 1) > Count THEN

IF LONGONMARKET THEN

SELL AT MARKET

ENDIF

IF SHORTONMARKET THEN

EXITSHORT AT MARKET

ENDIF

ENDIF

V 5.1.3 – 20170718 www.prorealtime.com 66 / 97

Page 67: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

Cumulo di ordini – Aggiunta di una posizione esistente con l'uso di un contatore di posizioni

Nella seguente sezione viene presentato un esempio di cumulo di ordini per aumentare la grandezza dellaposizione.

Per attivare il cumulo di ordini, inserite il comando "DEFPARAM CumulateOrders=True" all'inizio delprogramma.

Questo sistema di trading usa la prima condizione basata sul RSI per prendere solo la posizione iniziale.

Vengono aggiunti ad ogni barra titoli addizionali in cui l'apertura é superiore alla chiusura precedente fino adun massimo di 3.

"Countofposition" viene utilizzato in questo codice per limitare la grandezza massima della posizione a 3.

DEFPARAM CumulateOrders = True

REM Comprate 1 quando RSI < 30 e non ci sono posizioni già aperte

IF RSI[14](Close) < 30 AND NOTONMARKET THEN

BUY 1 SHARES AT MARKET

ENDIF

REM Se c'é una posizione aperta lunga e l'apertura > chiusura precedente, ogni voltacompriamo una quantità addizionale fino ad un massimo di tre.

IF LONGONMARKET AND COUNTOFPOSITION < 3 THEN AND Open > Close[1] THEN

BUY 1 SHARES AT MARKET

ENDIF

REM Quando il prezzo incrocia sotto una media mobile semplice, chiudete la posizione

IF Close Crosses Under Average[14](Close) THEN

SELL AT MARKET

ENDIF

Con questi strumenti, possiamo adesso guardare la martingala. Qui ce ne sono alcune tre le più famose.Queste tecniche possono essere aggiunte su qualsiasi sistema di trading.

V 5.1.3 – 20170718 www.prorealtime.com 67 / 97

Page 68: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

La martingala classica

La martingala classica consiste nel raddoppiare la grandezza della posizione quando si é confrontati ad unaperdita, in modo da rifarsi la volta successiva e guadagnare una volta recuperata la posizione di partenza.L'inconveniente maggiore di un tale sistema di trading é che una serie di perdite consecutive rende semprepiù difficile o impossibile continuare a raddoppiare la propria posizione. Cominciando con 1000€ peresempio, se perdiamo cinque volte di seguito, bisognerà disporre di 1000x32 cioé 32000€ per continuarecon questo sistema di trading.

Di conseguenza, i sistemi di trading con la martingala possono essere più adatti al trading d'azioni, che aifutures o al Forex poiché il capitale iniziale richiesto per tradare puo' essere più importante in questi 2 tipi dimercati.

Questo codice puo' essere integrato con le vostre condizioni di entrata e di uscita.

//***********Codice da inserire all'inizio del sistema di trading**********//

ONCE OrderSize = 1

ONCE ExitIndex = -2

REM Initial position size of 1.

//*********************//

//***********Codice da inserire subito dopo la chiusura della posizione**********//

ExitIndex = BarIndex

//***********Codice da inserire alla fine del sistema di trading**********//

IF Barindex = ExitIndex + 1 THEN

ExitIndex = 0

IF PositionPerf(1) < 0 THEN

OrderSize = OrderSize * 2

REM Se l'ultimo trade é perdente, allora raddoppiamo la grandezza della posizione

ELSIF PositionPerf(1) > 0 THEN

OrderSize = 1

REM Se l'ultimo trade é vincente, allora ritorniamo ad una posizione di grandezza 1

ENDIF

ENDIF

//*********************//

REM La grandezza della posizione deve essere determinata sulla variabile OrderSizenell'intero codice

V 5.1.3 – 20170718 www.prorealtime.com 68 / 97

Page 69: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

La grande martingala

La grande martingala é simile alla martingala classica, salvo che non si raddoppia solamente la posizione adogni perdita, ma si aggiunge anche un'unità supplementare.

Questa martingale é più pericolosa della martingala classica, in caso di perdite successive, ma permette diaumentare significativamente i guadagni in caso contrario.

Questo codice puo' essere integrato con le vostre condizioni di entrata e di uscita.

//***********Codice da inserire all'inizio del sistema di trading**********//

ONCE OrderSize = 1

ONCE ExitIndex = -2

// Cominciamo con una posizione di 1

//*********************//

//***********Codice da inserire subito dopo la chiusura di una posizione**********//

ExitIndex = BarIndex

//***********Codice da inserire alla fine del sistema di trading**********//

IF Barindex = ExitIndex + 1 THEN

ExitIndex = 0

IF PositionPerf(1) < 0 THEN

OrderSize = OrderSize * 2 + 1 // se l'ultimo trade era perdente, radoppia OrderSize

eaggiungi 1.

ELSIF PositionPerf(1) >= 0 THEN

OrderSize = 1 // Se l'ultimo trade era vincente, allora impostiamo l' OrderSize a 1.

ENDIF

ENDIF

//*********************//

REM La grandezza della posizione deve essere determinata sulla variabile OrderSizenell'intero codice

V 5.1.3 – 20170718 www.prorealtime.com 69 / 97

Page 70: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

La Piquemouche

La Piquemouche é un'altra variante della martingala classica. In caso di perdite, aumentiamo la grandezzadella posizione di 1 se abbiamo meno di 3 perdite consecutive. Se abbiamo più di 3 perdite consecutive,raddoppiamo la posizione. Un guadagno rimette la posizione a 1 unità.

Questo sistema di trading é meno pericoloso dei due precedenti, poiché non aumentiamo la grandezza dellaposizione in maniera esponenziale prima di 3 perdite successive.

Questo codice puo' essere integrato con le vostre condizioni di entrata e di uscita.

//***********Codice da inserire all'inizio del sistema di trading**********//

ONCE OrderSize = 1

ONCE BadTrades = 0

ONCE ExitIndex = -2

// Cominciamo con una posizione di 1

//*********************//

//***********Codice da inserire subito dopo la chiusura di una posizione**********//

ExitIndex = BarIndex

//***********Codice da inserire alla fine del sistema di trading**********//

IF Barindex = ExitIndex + 1 THEN

ExitIndex = 0

IF PositionPerf(1) < 0 THEN

BadTrades = BadTrades + 1

IF BadTrades < 3 THEN

// Se l'ultimo trade era perdente e abbiamo meno di 3 perdite successive,

// aggiungilo a OrderSize

OrderSize = OrderSize + 1

ELSIF BadTrades MOD 3 = 0 THEN

// Se l'ultimo trade era perdente e abbiamo più di tre perdite successive

// raddoppiamo OrderSize

OrderSize = OrderSize * 2

ENDIF

ELSIF PositionPerf(1) >= 0 THEN

// Se l'ultimo trade era vincente, inizializza OrderSize a 1.

OrderSize = 1

BadTrades = 0

ENDIF

ENDIF

//*********************//

REM La grandezza della posizione deve essere determinata dalla variabile OrderSizenell'intero codice.

V 5.1.3 – 20170718 www.prorealtime.com 70 / 97

Page 71: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

La piramide d'Alembert

Questa martingala é stata resa famosa da d’Alembert, matematico francese del XVIIIe secolo. In caso diperdita, la grandezza della posizione é aumentata di un'unità e in caso di guadagno, viene diminuita diun'unità.

Questa tecnica di gestione della grandezza delle posizioni é pertinente solo quando pensiamo che iguadagni successivi diminuiscano la probabilità di guadagnare ancora e che le perdite successive riducanola probabilità di perdere ancora.

Questo codice puo' essere integrato con le vostre condizioni di entrata e di uscita.

//***********Codice da inserire all'inizio del sistema di trading**********//

ONCE OrderSize = 1

ONCE ExitIndex = -2

// Cominciamo con una posizione di 1

//*********************//

//***********Codice da inserire subito dopo la chiusura di una posizione**********//

ExitIndex = BarIndex

//***********Codice da inserire alla fine del sistema di trading**********//

IF Barindex = ExitIndex + 1 THEN

ExitIndex = 0

IF PositionPerf(1) < 0 THEN

OrderSize = OrderSize + 1

ELSIF PositionPerf(1) >= 0 THEN

OrderSize = MAX(OrderSize -1, 1)

ENDIF

ENDIF

//*********************//

REM La grandezza della posizione deve essere determinata dalla variabile OrderSizenell'intero codice.

V 5.1.3 – 20170718 www.prorealtime.com 71 / 97

Page 72: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato B: Esempi d i cod ic i det tag l ia t i

Avvertimento: Gli esempi presentati in questo manuale sono a scopo pedagogico. Tutte leinformazioni presenti sono a carattere generale e non rappresentano in nessun caso informazioni oconsulenze personalizzate o incitazioni a comprare o vendere strumenti finanziari. Le performancespassate non rappresentano previsioni per il futuro. Ogni sistema di trading può esporre a un rischio diperdite superiori all'investimento iniziale.

L'inverso d'Alembert

Si tratta di un sistema di trading contrario alla Piramide D'Alembert. Diminuiamo la grandezza della posizionein caso di perdita o aumentiamo la grandezza della posizione in caso di guadagno.

Questa tecnica é dunque pertinente quando si ritiene che una perdita passata aumenti la probabilità di unaperdita futura e un guadagno passato aumenti la probabilità di un futuro guadagno.

Questo codice puo' essere integrato con le vostre condizioni di entrata e di uscita.

//***********Codice da inserire all'inizio di un sistema di trading**********//

ONCE OrderSize = 1

ONCE ExitIndex = -2

// Cominciamo con una posizione di 1

//*********************//

//***********Codice da inserire subito dopo la chiusura di una posizione**********//

ExitIndex = BarIndex

//***********Codice da inserire alla fine del sistema di trading**********//

IF Barindex = ExitIndex + 1 THEN

ExitIndex = 0

IF PositionPerf(1) < 0 THEN

OrderSize = MAX(OrderSize -1, 1)

ELSIF PositionPerf(1) >= 0 THEN

OrderSize = OrderSize + 1

ENDIF

ENDIF

//*********************//

REM La grandezza della posizione deve essere determinata dalla variabile OrderSizenell'intero codice.

V 5.1.3 – 20170718 www.prorealtime.com 72 / 97

Page 73: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Allegato C: esempio dettagliato di un sistema di trading

L'esempio di sistema di trading descritto di seguito é comunicato a scopo unicamente informativo.È destinato a presentare le funzionalità del servizio ProOrder. Lo scopo di questa presentazione édunque esclusivamente pedagogico. In nessun caso, questa presentazione di natura puramenteinformativa, contiene, raccomanda o suggerisce in qualche maniera una strategia d'investimento daparte di ProRealTime. Le performances degli anni passati presentate nel presente documento nonsono in nessun caso un indicatore affidabile delle performances future. Ogni sistema di trading puòesporla a rischi di perdita superiori al suo investimento iniziale.

Questo allegato presenta un esempio dettagliato di un sistema di trading di tipo "Breakout" (o rottura) basatosull'unità di tempo 15 minuti e applicato al valore mini-contratto CFD France 40 (1 euro per punto) e analizza lasua performance sugli anni passati tramite ProBacktest.

Performance lorda1 del sistema di trading automatico "Breakout ProOrder" simulato conProBacktest, su 7 anni e mezzo.

Performances annuali lorde1

29,15%Capitale iniziale: 2.000,00 € (1 luglio 2008)

Capitale finale: 13.622,60 € (31 dicembre 2015)

Guadagno lordo1 su 7,5anni:

+11.622 €(+ 581,1%)

2008 2009 2010 2011 2012 2013 2014 2015

Breakout ProOrder Sistema di trading automatico

+124%2 19,70% 41,90% 23,00% 0,70% 7,60% 18,10% 12,90%

Indice CAC 401,3 -27,4%2 +22.3% -3.3% -17% +15.2% +18% -0,50% 8,50%

1 Le performances e guadagni lordi sono calcolati escludendo i costi dibrokeraggio (commissioni o altri costi), questi costi potrebbero ridurrele performances.

2 2008: anno parziale.3 Dati del CAC 40 forniti daEuronext Paris.

V 5.1.3 – 20170718 www.prorealtime.com 73 / 97

Page 74: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Presentazione del sistema di trading automatico "Breakout ProOrder"

Un sistema "Breakout" classico identifica innanzitutto il massimo e il minimo raggiunti dal prezzo su un lassodi tempo dato (nel nostro esempio, i primi 30 minuti di quotazione dopo le 9), in seguito piazza un ordine diacquisto sul livello superiore e un ordine di vendita sul livello inferiore.

Il sistema "Breakout ProOrder" presentato di seguito è una versione modificata della strategia classica diBreakout.

Questo esempio di sistema "BreakOut ProOrder" prende al massimo 2 posizioni al giorno (alle volte una solao nessuna) tra le 9.30 e le 21.45. In ogni caso è flat dopo le 21.45 in modo da poter conoscere il guadagno ol'eventuale perdita della giornata a partire da questo momento.

Per approfondire:

Risultati del sistema di trading (storico dal 2008 al 2015)

Descrizione delle idee del sistema di trading

Il codice del sistema di trading

Come testare un codice / sistema di trading

V 5.1.3 – 20170718 www.prorealtime.com 74 / 97

Page 75: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Risultati del sistema di trading (storico dal 2008 al 2015)

Nota relativa ai risultati: le cifre presentate si riferiscono agli anni passati. Le performances passate nonsono un indicatore affidabile delle performances future e non sono costanti nel tempo.

L'immagine che segue mostra i risultati del sistema applicato al valore mini-contratto CFD France 40 sui datistorici dal 1 luglio 2008 al 31 dicembre 2015, ovvero circa 1.650 giorni di borsa simulati con il nostro moduloProBacktest.

Come indicato sopra, sulle 1.574 posizioni prese, la media dei guadagni in caso di posizione vincente è di80,33€ sul periodo (guadagno massimo di 577€) mentre la media delle perdite in caso di posizione perdenteè di 36,82€ sullo stesso periodo (perdita massima di 99,60€). Nel nostro esempio, il numero di posizionivincenti (593) è inferiore al numero di posizioni perdenti (978) e il montante totale dei guadagni è superioreal montante totale delle perdite.

Stimando le spese dovute allo spread sul mini-contratto CFD France 40 a 1,25€ in media per ordine, i costicommissionali si elevano a 3.935€ su tutto il periodo, di conseguenza il risultato finale è:

una performance annua di 23,4% al netto dei costi con un capitale di 2.000€

o una performance annua di 35,3% al netto dei costi con un capitale iniziale di 1.000€.

V 5.1.3 – 20170718 www.prorealtime.com 75 / 97

Page 76: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Nota bene:

1) Nell'esempio abbiamo un capitale iniziale di 2.000€, ovvero circa due volte la perdita massima costatatasu tutto il periodo dal 2008, se avessimo avviato il sistema di trading nel momento meno favorevole(perdita massima storica di 1.184€). Una simulazione a partire da un capitale meno elevato (ad esempio300€) sarebbe stata possibile dato che il margine attualmente richiesto per un mini-contratto CFD France40 è di 21€, e che abbiamo ipotizzato che, dal 1 luglio 2008, giorno della prima posizione presa in questasimulazione, il sistema avrebbe perso circa 100€ e in seguito sarebbe salito in capitale in modo regolare.

2) Nell'esempio, la taglia della posizione non evolve, quando si sarebbe potuto teoricamente ipotizzare cheogni 2.000€ di eventuali plusvalenze ottenute fossero stati aggiunti mini-contratti supplementari a ogni nuovaposizione. In questo modo si sarebbe aumentato il rischio ma anche la performance in manieraesponenziale. Cominciare la simulazione con 2.000€ di capitale e posizioni da 2 mini-contratti (sebbene ilmargine richiesto dal broker è di soli 42€ di capitale) rappresenta ad esempio lo stesso rischio percentuale diperdite eventuali che si avrebbe, cominciando la simulazione con 4.000€ di capitale e posizioni da 4 mini-contratti.

3) Un CFD è un contratto basato sulla differenza delle quotazioni di un attivo tra il momento in cui uninvestitore apre una posizione e il momento in cui la chiude. I CFD sono degli strumenti a effetto leva.Questo significa che l'investitore immobilizza solo una parte del valore totale della sua esposizione almercato. I CFD permettono di aumentare in modo significativo l'incremento di capitale di un investimento;le perdite eventuali possono superare il versamento iniziale. I CFD sono destinati ad una clientela attentache ne comprende i rischi e che possiede la capacità finanziaria adeguata a sostenerli.

Descrizione delle idee del sistema di trading

Idea iniziale: il Breakout 30 minuti

Il Breakout classico su 30 minuti identifica il livello più alto e il più basso raggiunto dal valore del mini-contratto CFD France 40 sui primi trenta minuti di quotazione della giornata ovvero tra le 9.00 e le 9.30 perquesto strumento (questo periodo è rappresentato da due candele di 15 minuti nell'immagine di seguito asinistra) e definisce questi livelli come livello superiore e inferiore.

In seguito, un ordine stop di acquisto è piazzato sul livello superiore e un ordine stop di vendita sul livelloinferiore come nell'immagine di seguito a destra:

Se il livello superiore è toccato per primo da questo strumento, verrà presa una posizione di acquisto(immagine a destra)

Se il livello inferiore è toccato per primo da questo strumento verrà presa una posizione di vendita.

Visualizzazione dell'ordine stop di acquisto inverde e dell'ordine vendita in rosso dopo che i

livelli superiore e inferiore sono definiti.

Esempio di posizione di acquisto nel caso in cuiil valore raggiunga inizialmente il livello superiore

aprendo una posizione di acquisto.

Nota bene:Il sistema di trading non utilizza obiettivi di guadagno per chiudere le posizioni. Tuttavia, ogni posizioneeventualmente ancora aperta alle 21.45 è chiusa per evitare i rischi legati all'esposizione overnight.

V 5.1.3 – 20170718 www.prorealtime.com 76 / 97

Page 77: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Seconda idea: verranno prese al massimo due posizioni al giorno

Nel nostro esempio prendiamo al massimo due posizioni al giorno (una all'acquisto e una alla vendita).Quando uno dei due livelli è toccato per primo, una posizione viene presa e il livello opposto diventa unostop di protezione che inverte la posizione se viene successivamente toccato.

Esaminiamo tre degli scenari che si sarebbero potuti verificare se una posizione di acquisto fossestata presa per prima:

Scenario 1:

1. Una posizione di acquisto +2 è presa.

2. Il valore evolve tutto il giorno sopra il livello superiore.

3. La posizione è chiusa alle 21.45 con un guadagno.

Scenario 2:

1. Una posizione di acquisto +2 è presa.

2. Il valore scende fino al livello inferiore.

3. Uno stop di protezione chiude la posizione conuna perdita ed una nuova posizione di vendita -2 èpresa. La posizione di partenza è dunque invertita.

4. Il valore continua a scendere e questa secondaposizione è chiusa alle 21.45 con un guadagno.

Scenario 3:

1. Una posizione di acquisto +2 è presa.

2. Il valore scende fino al livello inferiore.

3. Uno stop di protezione chiude la posizione conuna perdita ed una nuova posizione di vendita -2 èpresa. La posizione di partenza è dunque invertita.

4. Il valore sale nuovamente fino al livello superiore.La seconda posizione di vendita viene chiusa dallostop di protezione con una perdita (senza invertirela posizione questa volta).

Tutti gli scenari esposti qui sopra sono possibili anche nel senso contrario, quando viene presa per primauna posizione di vendita.

V 5.1.3 – 20170718 www.prorealtime.com 77 / 97

Livellosuperiore

Livelloinferiore

Scenario 1

Scenario 2

Scenario 321:45

Page 78: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Terza idea: limitare il rischio definendo uno scarto massimo tra i due livelli

Nel nostro esempio di codice, se la distanza tra il livello superiore e il livello inferiore è superiore a 58 punti ilsistema di trading non prenderà posizione in giornata.

Questa condizione è stata introdotta per tentare di limitare direttamente il rischio, perché come visto negliscenari precedenti, il sistema di trading può perdere teoricamente al massimo due volte la distanza tra illivello inferiore e superiore.

Lo scarto massimo è un parametro nel codice che può essere personalizzato seguendo la propensione alrischio di ogni utilizzatore.

Nota bene:

1) La perdita massima teorica di qui sopra è basata sulle esecuzioni di ordini al prezzo degli stop calcolatidal sistema. In alcuni casi il prezzo di esecuzione reale può differire dal prezzo dello stop richiesto.

2) Se i livelli superiori e inferiori tra le 9.00 e le 9.30 sono toccati più volte al giorno tra le 9.30 e le 21.45(esempio dello scenario 3 – il meno favorevole) e questo tutti i giorni a partire dal giorno di avvio delsistema di trading, i risultati del sistema saranno negativi e il capitale iniziale finirà per essere perduto.

3) Il sistema di trading può eventualmente piazzare una terza posizione nella stessa giornata se l'ordined'acquisto e l'ordine di vendita sono entrambi toccati nello stesso periodo di 15 minuti dopo aver definitoquesti due livelli.

4) Il nostro modulo di Trading ProOrder consente di simulare facilmente il sistema con differenti valori discarto massimo. Questa ottimizzazione di variabili ci mostra che la performance del sistema avrebbepotuto essere migliore sul periodo analizzato con un valore di scarto massimo più alto ma ci avrebbeesposto ad un rischio di perdita per operazione più importante perché gli ordini di protezione sarebberostati piazzati a maggiore distanza dagli ordini di entrata in posizione.

V 5.1.3 – 20170718 www.prorealtime.com 78 / 97

Livello inferiore

Livello superiore

Scarto massimo:

Nel nostro esempio di codice, se la distanza tra il livellosuperiore e inferiore è superiore a 58 punti (parametromodificabile nel codice) il sistema di trading non prenderàposizioni in giornata.

Page 79: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Quarta idea: aumentare le possibilità di un'esecuzione favorevole

Nel nostro esempio, siamo partiti dal postulato che i livelli superiori e inferiori sono delle zone di supporto eresistenza importanti sulle quali numerosi investitori possono aver piazzato ordini. Questo si traduce spesso,quando il prezzo rompe un più alto o un più basso, con un'accelerazione in pochi secondi più o meno fortedei prezzi nel senso della rottura per qualche secondo.

Per approfittare di questo eventuale fenomeno di amplificazione della tendenza giusto dopo la rottura eaumentare le probabilità che i nostri ordini vengano eseguiti in maniera favorevole, abbiamo parametrato ilsistema in modo tale che utilizzi unicamente ordini stop piazzati 4 punti al di sotto del livello superiore e 4punti al di sopra del livello inferiore (vedere di seguito). Questo parametro di 4 chiamato "DistanzaOrdine"nel codice del sistema può essere modificato secondo la scelta di ogni utilizzatore.

Nota bene:

1) Questa condizione riduce di 2 x 4 punti la distanza tra l'ordine di acquisto e l'ordine di vendita e diconseguenza il rischio massimo del sistema, dato che nel nostro esempio, 50 punti al massimo separanoquesti 2 ordini. La perdita massima teorica di questo sistema è quindi di 200€ al giorno (2 volte la distanzamassima x 50 x 2 posizioni).

2) Nel caso in cui numerosi altri investitori si posizionassero sulle stesse soglie di acquisto e di venditanello stesso senso del sistema di trading, è possibile modificare il parametro "DistanzaOrdine" (a 4,5 o 5 o5,5, etc...) per approfittare dell'accelerazione che potrebbe seguire l'esecuzione del proprio ordine.

V 5.1.3 – 20170718 www.prorealtime.com 79 / 97

Page 80: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Quinta idea: intervenire unicamente sui breakouts (o rotture) definiti per evitare falsi segnali

Scenario 1: alle 9.30 il valore risulta troppo vicino al livello superiore o inferiore

Nel nostro esempio abbiamo fatto in modo che il sistema non passi ordini quando la quotazione del nostrovalore di riferimento si trova troppo vicino al livello superiore o inferiore al termine del secondo periodo di 15minuti.

In questo caso il sistema attende 15 minuti supplementari.

Se al termine del nuovo periodo di 15 minuti (ovvero alle 9.45), la quotazione si trova ancora vicina ai livelli, ilsistema aspetta ancora 15 minuti supplementari, e così di seguito fino a quando i livelli non vengono definiti.In ogni caso, per un giorno dato, se lo scarto massimo è superiore a 58 punti, il sistema non prenderànessuna posizione nella giornata di trading.

Questo parametro di allontanamento dei livelli superiore e inferiore, chiamato "PercentualeMin" nell'esempiodi codice del sistema, è definito in questo caso al 30% ma può essere modificato in funzione delle scelte diogni investitore.

Di fianco vediamo che il prezzo di chiusura di ogniperiodo è troppo vicino al livello inferiore fino allacandela delle 10.45.

Il livello inferiore è stato dunque abbassato fino allachiusura della candela delle 10.45 – 11.

A questo punto il nostro sistema non prenderàposizioni nella giornata di trading, poiché la distanzatra il livello superiore e inferiore è superiore a 58 punti.

V 5.1.3 – 20170718 www.prorealtime.com 80 / 97

Page 81: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Scenario 2: scarto tra i livelli superiore e inferiore troppo piccolo

Nel nostro esempio, il sistema evita ugualmente le situazioni nelle quali lo scarto tra i livelli superiore einferiore è troppo piccolo (il breakout potrebbe quindi essere ritenuto non significativo). Il sistema misuradunque la distanza tra l'ordine di acquisto e l'ordine di vendita: se questa distanza è inferiore a 11 punti(parametro chiamato "AmplitudeMin" e modificabile nel codice), il sistena non prenderà nessuna posizionenella giornata di trading.

Sesta idea: non prendere posizione se non rimane tempo sufficiente

Dato che il nostro esempio di codice non può essere in posizione dopo le 21.45, abbiamo parametrato ilnostro sistema in modo tale che non prenda nuove posizioni dopo le 17.15.

Allo stesso modo, quando una giornata di trading è più breve a causa di una festività (Natale o SanSilvestro), il sistema non prende posizione.

Possiamo ugualmente personalizzare questo parametro nel codice della strategia per modificare l'ora apartire dalla quale i segnali vengono ignorati dal sistema.

V 5.1.3 – 20170718 www.prorealtime.com 81 / 97

Page 82: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

L'esempio di sistema di trading descritto di seguito é comunicato a scopo unicamente informativo.È destinato a presentare le funzionalità del servizio ProOrder. Lo scopo di questa presentazione édunque esclusivamente pedagogico. In nessun caso, questa presentazione di natura puramenteinformativa, contiene, raccomanda o suggerisce in qualche maniera una strategia d'investimento daparte di ProRealTime. Le performances degli anni passati presentate nel presente documento nonsono in nessun caso un indicatore affidabile delle performances future. Ogni sistema di trading puòesporla a rischi di perdita superiori al suo investimento iniziale.

Approfitti di un supporto alla programmazione tramite l'interfaccia riservata.

Codice del sistema di trading "Breakout ProOrder"

// Non carichiamo mai i dati prima dell'avvio del sistema.

// Così, il primo giorno, se il sistema è avviato nel pomeriggio,

// aspetterà l'indomani per eventualmente definire gli ordini di acquisto o di vendita.

DEFPARAM PreLoadBars = 0

// La posizione è chiusa alle 21.45, ore di Roma

DEFPARAM FlatAfter = 214500

// Nessuna nuova posizione presa dopo la candela che chiude alle 17.15

OraLimite = 171500

// L'analisi del mercato inizia con la candela a 15 minuti che chiude alle 9.30

OraInizio = 091500

// Le giornate come 1 maggio, 24 e 31 dicembre sono escluse

IF (Month = 5 AND Day = 1) OR (Month = 12 AND (Day = 24 OR Day = 25 OR Day = 26 OR Day = 30 OR Day =31)) THEN

GiornoTrading = 0

ELSE

GiornoTrading = 1

ENDIF

// Le variabili che possono essere adattate secondo le preferenze di ognuno

TagliaPosizione = 2

ScartoMassimo = 58

ScartoMinimo = 11

DistanzaOrdine = 4

PercentualeMin = 30

// Si inizializza questa variabile una sola volta all'avvio del sistema

ONCE InizioGiornoTrading = -1

// Le variabili che possono evolvere in giornata sono reinizializzate

// alla prima candela di ogni nuova giornata di borsa

IF (Time <= OraInizio AND InizioGiornoTrading <> 0) OR IntradayBarIndex = 0 THEN

SogliaAcquisto = 0

SogliaVendita = 0

PosizioneAcquisto = 0

PosizioneVendita = 0

InizioGiornoTrading = 0

ELSIF Time >= OraInizio AND InizioGiornoTrading = 0 AND GiornoTrading = 1 THEN

// Conserviamo l'indice della prima barra della giornata di borsa

IndiceInizioGiornata = IntradayBarIndex

InizioGiornoTrading = 1

V 5.1.3 – 20170718 www.prorealtime.com 82 / 97

Page 83: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

ELSIF InizioGiornoTrading = 1 AND Time <= OraLimite THEN

// Per ogni giorno di borsa, determiniamo ogni 15 minuti

// il valore più alto e il più basso dello strumento da OraInizio

// tanto che le soglie di acquisto e di vendita non sono definite

IF SogliaAcquisto = 0 OR SogliaVendita = 0 THEN

LivelloSuperiore = Highest[IntradayBarIndex - IndiceInizioGiornata + 1](High)

LivelloInferiore = Lowest [IntradayBarIndex - IndiceInizioGiornata + 1](Low)

// Calcolo dello scarto tra il valore più alto

// e il più basso dello strumento da OraInizio

ScartoGiorno = LivelloSuperiore - LivelloInferiore

// Calcolo dello scarto minimo desiderato per considerare una rottura dei prezzi

// del valore più alto o più basso come una rottura significativa

DistanzaMin = ScartoGiorno * PercentualeMin / 100

// Calcolo delle soglie di acquisto e vendita per la giornata se le condizioni sono rispettate

IF ScartoGiorno <= ScartoMassimo THEN

IF SogliaVendita = 0 AND (Close - LivelloInferiore) >= DistanzaMin THEN

SogliaVendita = LivelloInferiore + DistanzaOrdine

ENDIF

IF SogliaAcquisto = 0 AND (LivelloSuperiore - Close) >= DistanzaMin THEN

SogliaAcquisto = LivelloSuperiore - DistanzaOrdine

ENDIF

ENDIF

ENDIF

// Creazione degli ordini di acquisto e di vendita allo scoperto per la giornata

// se le condizioni sono rispettate

IF SogliaVendita > 0 AND SogliaAcquisto > 0 AND (SogliaAcquisto - SogliaVendita) >= ScartoMinimoTHEN

IF PosizioneAcquisto = 0 THEN

IF LongOnMarket THEN

PosizioneAcquisto = 1

ELSE

BUY TagliaPosizione CONTRACT AT SogliaAcquisto STOP

ENDIF

ENDIF

IF PosizioneVendita = 0 THEN

IF ShortOnMarket THEN

PosizioneVendita = 1

ELSE

SELLSHORT TagliaPosizione CONTRACT AT SogliaVendita STOP

ENDIF

ENDIF

ENDIF

ENDIF

// Definizione delle condizioni di uscita del mercato quando una posizione di acquisto

// o di vendita allo scoperto è presa

IF LongOnMarket AND ((Time <= OraLimite AND PosizioneVendita = 1) OR Time > OraLimite) THEN

SELL AT SogliaVendita STOP

ELSIF ShortOnMarket AND ((Time <= OraLimite AND PosizioneAcquisto = 1) OR Time > OraLimite) THEN

EXITSHORT AT SogliaAcquisto STOP

ENDIF

// Definizione di rischio massimo di perdite per posizione

// in caso di evoluzione sfavorevole del prezzo dello strumento

SET STOP PLOSS ScartoMassimo

V 5.1.3 – 20170718 www.prorealtime.com 83 / 97

Page 84: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Al legato C: esemp io det tag l i a to d i un s istema d it rad ing

Come testare un codice / sistema di trading

Modalità portafoglio virtuale (PaperTrading)

Se ha un conto su www.ProRealTime.com, può eseguire i suoi sistemi di trading su portafoglio virtualePaperTrading.

Il PaperTrading le consente di testare il sistema giorno dopo giorno in condizioni reali di mercato, senzarischiare capitale.

Potrà vedere in tempo reale le prese di posizione dei suoi sistemi di trading e testare le sue reazioni neiconfronti del trading automatico. Bisogna tenere presente che è possibile reinizializzare il valore delportafoglio PaperTrading tutte le volte che lo desidera per cominciare una nuova simulazione.

Modalità trading in tempo reale

ProOrder AutoTrading è disponibile in modalità tempo reale via l'offerta di brokeraggio IG sponsorizzata daProRealTime.

Per saperne di più sull'apertura di un conto IG sponsorizzato da ProRealTime

Avvertimento: Se crea un sistema di trading attraverso il servizio ProOrder in modalità trading reale,questo servizio invierà dei segnali automaticamente, seguendo i parametri che ha determinato in vistadell'esecuzione degli ordini corrispondenti senza che le sia richiesta nessuna validazione individualedi ogni ordine. Il suo sistema sarà eseguito automaticamente anche quando il suo computer saràspento. È importante che si assicuri di aver parametrato il sistema in modo tale che non conduca allarealizzazione di perdite al di là di un montante che è pronto ad accettare.

In ogni caso, ProRealTime non sarà responsabile delle eventuali perdite subite in seguitoall'esecuzione dei suoi sistemi di trading automatici.

Le ricordiamo che, in ragione dell'effetto leva, i CFD possono esporla a perdite superioriall'investimento iniziale. Questi prodotti sono destinati ad una clientela attenta, capace di valutare irischi e che dispone di una capacità finanziaria tale da supportare tali rischi.

V 5.1.3 – 20170718 www.prorealtime.com 84 / 97

Page 85: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

Glossario

A

CODICE IMPLEMENTAZIONE FUNZIONE

ABS ABS(a) Funzione matematica "Valore assoluto"

AccumDistr AccumDistr(price) Designa l'accumulazione distribuzione classica

ADX ADX[N] Indicatore Average Directional Index di n periodi

ADXR ADXR[N] Indicatore Average Directional Index Rate di n periodi

AND a AND b Operatore logico E

AroonDown AroonDown[P] Designa l'Aroon Down di n periodi

AroonUp AroonUp[P] Designa l'Aroon Up di n periodi

ATAN ATAN(a) Funzione matematica Arco Tangente

AS RETURN x AS "ResultName" Istruzione che serve ad attribuire un nome ad una linea o indicatore mostrato sul grafico. Usato con "RETURN"

AT AT (price) Designa l'associazione al prezzo

Average Average[N](price) Media Mobile Semplice di n periodi

AverageTrueRange AverageTrueRange[N](price) Designa la Media mobile lisciata da Wilder del True Range

B

CODICE IMPLEMENTAZIONE FUNZIONE

BACKGROUNDCOLOR BACKGROUNDCOLOR(R,V,B,a)

Consente di colorare il fondo del grafico o per una candela

BarIndex BarIndex Numero di barre dall'inizio dei dati caricati (per un sistema di trading nel caso di ProBacktest o ProOrder, o in un grafico nel caso di un indicatore ProBuilder).

Vedi anche: PreLoadBars.

BollingerBandWidth BollingerBandWidth[N](price) Banda passante di Bollinger

BollingerDown BollingerDown[N](price) Supporto della banda di Bollinger

BollingerUp BollingerUp[N](price) Resistenza della banda di Bollinger

BREAK (FOR...DO...BREAK...NEXT) o (WHILE...DO...BREAK...WEND)

Istruzione per forzare l'uscita da un circolo FOR o WHILE

BUY BUY x SHARES Istruzione di apertura di posizione lunga

V 5.1.3 – 20170718 www.prorealtime.com 85 / 97

Page 86: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

C

CODICE IMPLEMENTAZIONE FUNZIONE

CALCULATEONLASTBARS DEFPARAM CalculateOnLastBars = 200

Consente di aumentare la velocità alla quale un indicatore viene calcolato, definendo il numero di candele che presentano il risultato.

CALL myResult=CALL myFunction Permette di richiamare un altro indicatore

CASH BUY x CASH Designa l'importo usato nella posizione

CCI CCI[N](price) o CCI[N] Dà il Commodity Channel Index

ChaikinOsc ChaikinOsc[Ch1, Ch2](price) Designa l'oscillatore di Chaikin

Chandle Chandle[N](price) Designa il Chande Momentum Oscillator

ChandeKrollStopUp ChandeKrollStopUp[Pp, Qq, X]

Stop di protezione secondo Chande e Kroll in posizione di acquisto

ChandeKrollStopDown ChandeKrollStopDown[Pp, Qq, X]

Stop di protezione secondo Chande e Kroll in posizione di vendita

Close Close[N] Designa il prezzo di chiusura della barra corrente oppure l'ultimo prezzo registrato

COLOURED RETURN x COLOURED(R,G,B)

Permette di personalizzare il colore di una curva, secondo la convenzione RGB

COS COS(a) Funzione coseno

COUNTOFLONGSHARES COUNTOFLONGSHARES Conta il numero di titoli o lotti nelle posizioni lunghe

COUNTOFPOSITION COUNTOFPOSITION Conta il numero di titoli o lotti nelle posizioni (o di acquisto o di vendita)

COUNTOFSHORTSHARES COUNTOFSHORTSHARES Conta il numero di titoli o lotti nelle posizioni corte

CONTRACT BUY 1 CONTRACT Designa il numero di contratti da acquistare. Equivale a "Shares"

CROSSES OVER a CROSSES OVER b Operatore boleano che verifica che una curva passa al di sopra di un'altra

CROSSES UNDER a CROSSES UNDER b Operatore boleano che verifica che una curva passa al di sotto di un'altra

cumsum cumsum(price) Somma di un prezzo dall'inizio dello storico mostrato

CumulateOrders DEFPARAM CumulateOrders=true/false

Quando é impostato su false, impedisce al codedi rafforzare le posizioni e di impostare ordini multipli per entrare a mercato nella stessa direzione.

CustomClose CustomClose[N] Costante parametrabile nella finestra proprietà

Cycle Cycle(price) Indicatore Cycle

V 5.1.3 – 20170718 www.prorealtime.com 86 / 97

Page 87: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

D

CODICE IMPLEMENTAZIONE FUNZIONE

Date Date[N] Designa la data di ogni barra caricata nel grafico

Day Day[N] Designa il giorno di ogni barra caricata nel grafico

Days Days[N] Contatore di giorni dal 1900

DayOfWeek DayOfWeek[N] Designa il giorno della settimana di ogni barra

DClose DClose(N) Prezzo di chiusura dell'ennesima giornata anteriore a quella della barra corrente

DEFPARAM DEFPARAM Permette di definire dei parametri come CumulateOrders

DEMA DEMA[N](price) Doppia Media Mobile Esponenziale

DHigh DHigh(N) Prezzo più alto dell'ennesima giornata precedente a quella della barra corrente

DI DI[N](price) Designa il DI+ meno il DI-

DIminus DIminus[N](price) Designa l'indicatore DI-

DIplus DIplus[N](price) Designa l'indicatore DI+

DLow DLow(N) Il Minimo dell'ennesima giornata anteriore a quella della barra corrente

DO Vedere FOR e WHILE Istruzione facoltativa dei FOR e WHILE per l'azione di chiusura

DOpen DOpen(N) Prezzo di apertura dell'ennesima giornata anteriore a quella della barra corrente

DOWNTO Vedere FOR Istruzione di lettura decrescente per FOR

DPO DPO[N](price) Designa il Detrented Price Oscillator

DRAWARROW DRAWARROW(x1,y1) Disegna una freccia con punta verso il punto selezionato. Questa funzione e le successive sono disponibili solo per la versione 10.3 e successive

DRAWARROWDOWN DRAWARROWDOWN(x1,y1) Disegna una freccia con punta verso il basso

DRAWARROWUP DRAWARROWUP(x1,y1) Disegna una freccia con punta verso l'alto

DRAWBARCHART DRAWBARCHART(open,high,low,close)

Disegna una barra sul grafico.Apertura, chiusura, minimo e massimo possono essere costanti o variabili

DRAWCANDLE DRAWCANDLE(open,high,low,close)

Disegna una candela sul grafico. Apertura, chiusura, minimo e massimo possono essere costanti o variabili

DRAWELLIPSE DRAWELLIPSE(x1,y1,x2,y2) Disegna un'ellisse sul grafico

DRAWHLINE DRAWHLINE(y1) Disegna una linea orizzontale sul grafico

DRAWLINE DRAWLINE(x1,y1,x2,y2) Disegna una linea sul grafico

V 5.1.3 – 20170718 www.prorealtime.com 87 / 97

Page 88: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

DRAWONLASTBARONLY DEFPARAM DrawOnLastBarOnly = true

Consente di disegnare oggetti disegnati solamente sull'ultima candela

DRAWRECTANGLE DRAWRECTANGLE(x1,y1,x2,y2)

Disegna un rettangolo nel grafico

DRAWSEGMENT DRAWSEGMENT(x1,y1,x2,y2) Disegna un segmento sul grafico

DRAWTEXT DRAWTEXT("your text", x1, y1)

Aggiunge una sezione testo nel grafico con il testo di sua scelta in un punto specifico

DRAWVLINE DRAWVLINE(x1) Disegna una linea verticale sul grafico

E

CODICE IMPLEMENTAZIONE FUNZIONE

EaseOfMovement EaseOfMovement[I] Designa l'indicatore Ease of Movement

ELSE Vedere IF/THEN/ELSE/ENDIF Istruzione per introdurre la seconda condizione in alternativa alla prima uscita di IF

ELSEIF Vedere IF/THEN/ELSIF/ELSE/ENDIF

Contrazione di ELSE IF (da inserire all'interno della condizione)

EMV EMV[N] Designa l'indicatore Ease of Movement Value

ENDIF Vedere IF/THEN/ELSE/ENDIF Istruzione di chiusura delle istruzioni condizionali

EndPointAverage EndPointAverage[N](price) Media Mobile all'ultimo punto

EXITSHORT EXITSHORT x SHARES Istruzione che chiude una posizione short

EXP EXP(a) Funziona matematica esponenziale

ExponentialAverage ExponentialAverage[N](price) Media Mobile Esponenziale

F - G

CODICE IMPLEMENTAZIONE FUNZIONE

FOR/TO/NEXT FOR i=a TO b DO a NEXT Ciclo FOR (elabora tutti i valori con ordini crescenti (TO) o decrescenti (DOWNTO))

FLATAFTER DefParam FlatAfter = HHMMSS

Chiude posizioni, cancella ordini in attesa ed impedisce di piazzare ordini supplementari dopol'orario del giorno specificato (in ore, minuti e secondi)

FLATBEFORE Defparam FlatBefore = HHMMSS

Chiude posizioni, cancella ordini in attesa ed impedisce di piazzare ordini supplementari prima dell'orario del giorno specificato (in ore, minuti e secondi)

ForceIndex ForceIndex(price) Indicatore Force Index che determina chi controlla il mercato (compratore o venditore)

GRAPH GRAPH myvariable AS "myvariable"

Istruzione per visualizzare i valori storici delle variabili di un ProBacktest sui grafici

V 5.1.3 – 20170718 www.prorealtime.com 88 / 97

Page 89: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

H

CODICE IMPLEMENTAZIONE FUNZIONE

High High[N] Designa il massimo della barra corrente o quelladi n barre precedenti

highest highest[N](price) Designa il prezzo massimo di un insieme di barre

HistoricVolatility HistoricVolatility[N](price) Designa la volatilità storica o statistica

Hour Hour[N] Designa l'ora di chiusura di ogni barra

I - J - K

CODICE IMPLEMENTAZIONE FUNZIONE

IF/THEN/ENDIF IF a THEN b ENDIF Insieme di istruzioni condizionali senza la seconda condizione

IF/THEN/ELSE/ENDIF IF a THEN b ELSE c ENDIF Insieme di istruzioni condizionali

IntradayBarIndex IntradayBarIndex[N] Conta il numero di candele sul grafico intraday

L

CODICE IMPLEMENTAZIONE FUNZIONE

LIMIT BUY AT x LIMIT Istruzione che introduce un ordine Limite

LinearRegression LinearRegression[N](price) Indicatore di regressione lineare

LinearRegressionSlope LinearRegressionSlope[N](price)

Inclinazione di regressione lineare

LOG LOG(a) Funzione matematica logaritmica

LONGONMARKET LONGONMARKET Indica se avete o no delle posizioni di acquisto (=lunghe) sul mercato

Low Low[N] Designa il minimo della barra corrente o quella di n barre precedenti

lowest lowest[N](price) Designa il minimo di un periodo su un insieme di barre

LOSS Set STOP LOSS x Permette di mettere uno stop loss di x unità dal prezzo di entrata della posizione

%LOSS SET STOP %LOSS x Permette di mettere uno stop loss di x% dal prezzo di entrata della posizione

$LOSS SET STOP $LOSS x Permette di mettere uno stop loss di x €, $ (nella valuta dello strumento)

LOT BUY 1 LOT Designa il numero di lotti da comprare o vendere (equivalente a "SHARE")

V 5.1.3 – 20170718 www.prorealtime.com 89 / 97

Page 90: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

M

CODICE IMPLEMENTAZIONE FUNZIONE

MACD MACD[S,L,Si](price) Moving Average Convergence Divergence (MACD)

MACDline MACDLine[S,L](price) Designa la linea del MACD

MARKET BUY AT MARKET Designa un ordine al prezzo di mercato

MassIndex MassIndex[N] Indicatore Mass Index applicato su N barre

MAX MAX(a,b) Funzione matematica "Massimo"

MedianPrice MedianPrice Media del prezzo massimo e minimo

MIN MIN(a,b) Funzione matematica"Minimo"

Minute Minute Designa il minuto di ogni barra caricata nel grafico

MOD a MOD b Funzione matematica "Resto della divisione"

Momentum Momentum[I] Momentum (prezzo di chiusura – prezzo della chiusura dell'ennesima barra precedente)

MoneyFlow MoneyFlow[N](price) Dà il MoneyFlow tra -1 e 1

MoneyFlowIndex MoneyFlowIndex[N] Designa il MoneyFlowIndex

Month Month[N] Designa il mese di chiusura di ogni barra caricata nel grafico

N

CODICE IMPLEMENTAZIONE FUNZIONE

NegativeVolumeIndex NegativeVolumeIndex[N] Indicatore dell'indice di volume negativo

NEXT Vedere FOR/TO/NEXT Istruzione da posizionare alla fine del ciclo "FOR"

NextBarOpen AT MARKET NextBarOpen Designa un ordine eseguito all'apertura della barra successiva.

NOCASHUPDATE DEFPARAM NOCASHUPDATE=true/false

Permette di non aggiornare il capitale con i guadagni/perdite (Backtest solamente)

NOT Not A Operatore logico NON

V 5.1.3 – 20170718 www.prorealtime.com 90 / 97

Page 91: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

O

CODICE IMPLEMENTAZIONE FUNZIONE

OBV OBV(price) Designa l' "On-Balance-Volume"

ONCE ONCE VariableName = VariableValue

Istruzione che si vuole realizzare una sola volta

ONMARKET ONMARKET Indica se una posizione é aperta o no

Open Open[N] Designa il prezzo di apertura della barra corrente o quella di n barre precedenti

OpenDate OpenDate Data di apertura della barra in corso in formato YYYYMMDD

OpenDay OpenDay Giorno di apertura della barra in corso

OpenDayOfWeek OpenDayOfWeek Giorno della settimana di apertura della barra in corso

OpenHour OpenHour di apertura della barra in corso

Ora di apertura della barra in corso nel fuso orario dell'utilizzatore

OpenMinute OpenMinute Minuto di apertura della barra in corso nel fuso orario dell'utilizzatore

OpenMonth OpenMonth Mese di apertura della barra in corso

OpenTime OpenTime Tempo di apertura della barra in corso nel formato HHMMSS nel fuso orario dell'utilizzatore

OpenYear OpenYear Anno di apertura della barra in corso

OR a OR b Operatore logico O

V 5.1.3 – 20170718 www.prorealtime.com 91 / 97

Page 92: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

P - Q

CODICE IMPLEMENTAZIONE FUNZIONE

PIPVALUE PipValue Valore in €/$ di un pip (o punto) nella valuta dello strumento. PipValue=Pointvalue

PIPSIZE PipSize Grandezza di un pip (o punto), PipSize=PointSize

POINTVALUE PointValue Valore in €/$ di un pip (o punto) nella valuta dello strumento. PipValue=Pointvalue

POINTSIZE PointSize Grandezza di un pip (o punto), PipSize=PointSize

POSITIONPERF PositionPerf(n) Indica la percentuale di guadagno o di perdita dell'ennesima posizione chiusa

POSITIONPRICE PositionPrice Indica il prezzo medio della posizione in corso

PRELOADBARS DEFPARAM PRELOADBARS = 200

Imposta la quantità massima di barre precaricate per il calcolo degli indicatori usati in un sistema di trading

PriceOscillator PriceOscillator[S,L](price) Indicatore Percertage Price oscillator

PositiveVolumeIndex PriceVolumeIndex(price) Designa l'indicatore Positive Volume Index

PVT PVT(price) Designa l'indicatore "Price Volume Trend"

QUIT QUIT Istruzione per interrompere un sistema di trading

R

CODICE IMPLEMENTAZIONE FUNZIONE

R2 R2[N](price) Coefficiente della radice quadrata (tasso di errore della regressione lineare sul prezzo)

Range Range[N] Calcola il Range (Differenza tra il massimo e il minimo)

REM REM comment Introduce un commento (non preso in considerazione nel codice)

Repulse Repulse[N](price) Indicatore Repulse (misura la spinta al rialzo e al ribasso di ogni candela)

RETURN RETURN Result Istruzione che ritorna il risultato

ROC ROC[N](price) Designa il "Price Rate of Change"

RSI RSI[N](price) Designa l'oscillatore "Relative Strength Index"

ROUND ROUND(a) Funzione matematica "Arrotondamento all'unità"

ROUNDEDUP ROUNDEDUP Arrotondamento all'unità superiore delle quantità da comprare o vendere

ROUNDEDDOWN ROUNDEDDOWN Arrotondamento all'unità inferiore delle quantità da comprare o vendere

V 5.1.3 – 20170718 www.prorealtime.com 92 / 97

Page 93: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

S

CODICE IMPLEMENTAZIONE FUNZIONE

SAR SAR[At,St,Lim] Designa l'indicatore Parabolic SAR

SARatdmf SARatdmf[At,St,Lim](price) Designa l'indicatore Smoothed Parabolic SAR

SELL SELL x SHARES Istruzione per chiudere una posizione lunga

SELLSHORT SELLSHORT x SHARES Istruzione per aprire una posizione corta

SET SET Designa il tipo di ordine: limite o stop

SHARES BUY x SHARES Designa il numero di azioni da comprare o vendere

SHORTONMARKET SHORTONMARKET Indica se ci sono posizioni corte aperte o no

SIN SIN(a) Funzione matematica "Seno"

SGN SGN(a) Funzione matematica "Segno di" (é positivo o negativo)

SMI SMI[N,SS,DS](price) Designa lo Stochastic Momentum Index

SmoothedStochastic SmoothedStochastic[N,K](price)

Designa uno Stocastico lisciato

SQUARE SQUARE(a) Funzione matematica "Elevazione al quadrato"

SQRT SQRT(a) Funzione matematica "Radice quadrata"

STD STD[N](price) Funzione statistica "scarto-tipo"

STE STE[N](price) Funzione statistica "errore standard"

Stochastic Stochastic[N,K](price) Linea %K dello stocastico

STOP SET STOP LOSS Istruzione per creare un ordine stop

summation summation[N](price) Somma del prezzo delle ultime N candele

Supertrend Supertrend[STF,N] Designa il Super Trend

V 5.1.3 – 20170718 www.prorealtime.com 93 / 97

Page 94: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

T

CODICE IMPLEMENTAZIONE FUNZIONE

TAN TAN(a) Funzione matematica "Tangente"

TARGET SET TARGET PROFIT x Istruzione per impostare un ordine target ad un prezzo x

TEMA TEMA[N](price) Media Mobile Esponenziale Tripla

THEN Vedere IF/THEN/ELSE/ENDIF Istruzione che segue la prima condizione di "IF"

TICKSIZE TICKSIZE Dà il ticksize dello strumento (la più piccola variazione di prezzo possibile)

Time Time[N] Rappresenta l'orario di ogni barra caricata nel grafico

TimeSeriesAverage TimeSeriesAverage[N](price) Serie di medie mobili temporali

TO Vedere FOR/TO/NEXT Istruzione direzionale nel ciclo "FOR"

Today Today[N] Data della barra di n periodi che precede la barra corrente

TomorrowOpen AT MARKET TomorrowOpen Designa un ordine eseguito all'apertura della giornata successiva

TotalPrice TotalPrice[N] (Chiusura + Apertura + Massimo + Minimo)/4

TR TR(price) Designa l'indicatore True Range

TRADEINDEX TRADEINDEX(n) Indica l'indice della barra sulla quale é stato eseguito l'ultimo ennesimo ordine

TRADEPRICE TRADEPRICE(n) Indica il livello del prezzo dell'ultimo ennesimo ordine eseguito

TRAILING SET STOP TRAILING x Permette di posizionare un trailing stop di x unità dal prezzo di entrata della posizione

%TRAILING SET STOP %TRAILING x Permette di posizionare un trailing stop di x% unità dal prezzo di entrata della posizione

$TRAILING SET STOP $TRAILING x Permette di posizionare un trailing stop di x €, $ (nella valuta dello strumento)

TriangularAverage TriangularAverage[N](price) Media Mobile Triangolare

TRIX TRIX[N](price) Tripla Media Mobile Esponenziale Lisciata

TypicalPrice TypicalPrice[N] Prezzo Tipico (media dei massimi, minimi e chiusura)

V 5.1.3 – 20170718 www.prorealtime.com 94 / 97

Page 95: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

U

CODICE IMPLEMENTAZIONE FUNZIONE

Undefined a = Undefined Per lasciare una variabile indefinita

V

CODICE IMPLEMENTAZIONE FUNZIONE

Variation Variation(price) Differenza tra la chiusura dell'ultima barra e la chiusura della barra corrente in %

Volatility Volatility[S, L] Designa la volatilità di Chaikin

Volume Volume[N] Designa l'indicatore volume

VolumeOscillator VolumeOscillator[S,L] Designa l'oscillatore volume

VolumeROC VolumeROC[N] Designa il volume del Rate Of Change

W

CODICE IMPLEMENTAZIONE FUNZIONE

WeightedAverage WeightedAverage[N](price) Designa la Media Mobile Ponderata

WeightedClose WeightedClose[N] Media tra il prezzo di chiusura, il massimo e il minimo

WEND Vedere WHILE/DO/WEND Istruzione finale del ciclo WHILE

WHILE/DO/WEND WHILE (condition) DO (action)WEND

Ciclo "WHILE"

WilderAverage WilderAverage[N](price) Rappresenta la media mobile di Wilder

Williams Williams[N](close) Indicatore %R di Williams

WilliamsAccumDistr WilliamsAccumDistr(price) Indicatore Accumulazione/Distribuzione di Williams

X

CODICE IMPLEMENTAZIONE FUNZIONE

XOR a XOR b Operatore logico esclusivo O

V 5.1.3 – 20170718 www.prorealtime.com 95 / 97

Page 96: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

Glossar io

Y

CODICE IMPLEMENTAZIONE FUNZIONE

Year Year[N] Anno della barra di n periodi prima della barra corrente

Yesterday Yesterday[N] Data del giorno che precede la barra di n periodiprima della barra corrente

Z

CODICE IMPLEMENTAZIONE FUNZIONE

ZigZag ZigZag[Zr](price) Rappresenta l'indicatore Zig-Zag introdotto nellateoria delle onde di Eliott

ZigZagPoint ZigZagPoint[Zp](price) Rappresenta l'indicatore Zig-Zag nella teoria delle onde di Eliott calcolata a Zp punti

Operatori

CODICE FUNZIONE CODICE FUNZIONE

+ Somma < Strettamente inferiore

- Sottrazione > Strettamente superiore

* Moltiplicazione <= Inferiore

/ Divisione >= Superiore

= Uguale // Introduce una linea di commenti

<> Differenza

V 5.1.3 – 20170718 www.prorealtime.com 96 / 97

Page 97: Sistemi di trading (ProBacktest & ProOrder) - V 5.1.3 ... · PDF fileGli strumenti di programmazione di sistemi di trading ProRealTime permettono di creare strategie di investimento

www.prorealtime.com