Sei sulla pagina 1di 27

PIATTAFORMA PROREALTIME

PROBACKTEST

1 - PROBACKTEST

Se siete traders che utilizzano solamente i dati giornalieri come base per il vostro trading, prorealtime è
sicuramente la piattaforma che fa per voi.

Vi sarà utilissima per analizzare i mercati e sperimentare le vostre strategie, fare i backtest e poi
immettere gli ordini sulla piattaforma del vostro Broker, e questo credetemi è già un grandissimo
vantaggio.

I delay tra dati giornalieri della piattaforma e quelli del broker non dovrebbero essere rilevanti.

Probacktest ci serve ai fini di ricavare le statistiche delle varie strategie long o short term che devono
fungere principalmente da supporto psicologico per la nostra operatività di trading.

Grazie a questo programma possiamo renderci conto delle possibilità e delle potenzialità che realmente
hanno i nostri sistemi, grazie al profit factory, alle percentuali di vincite e di perdite ed a tutta una serie di
statistiche relative al money management.

Non solo, ma possiamo paragonare i diversi sistemi l'uno con l'altro, ottimizzare i parametri da utilizzare nel
trading reale su tutti i mercati disponibili, anche senza utilizzare il trading automatico del software, cioè
Proorder.

Possiamo fare una lista dei parametri adatti per ogni tipo di mercato:

forex, azioni, commodities e indici.

Una volta che sappiamo cosa cercare, lo facciamo tramite proscreener quando i mercati sono chiusi.

Inoltre, probacktest è utilissimo per identificare i parametri dominanti dei vari indicatori che possono non
essere affatto i valori di default.

Per esempio, non è detto che il periodo dominante dell'RSI sia 14 per un determinato mercato, come non è
detto che l'ipercomprato l'ipervenduto siano ai livelli di 70 e 30.

Per capire quali siano, basta impsotare un trading system che ottimizza questi 3 parametri in modo da
vedere quali siano i valori più adatti per quel mercato.
Possiamo per esempio vedere quale sia la media mobile che funziona meglio, facendo un sistema di
incrocio col prezzo.

2 - FINESTRA DI PROGRAMMAZIONE

Prima di iniziare consiglio sempre di vedere i video offerti dal sito prorealtime, scaricare la guida in PDF
probacktest & proorder, leggere la pagina dedicata ai sistemi automatici, e visitare il sito prorealcode.

Vediamo ora nel dettaglio il procedimento di impiego di Probacktest nella scrittura dei programmi di
trading o EA - Expert Advisors (consiglieri esperti).

ln linguaggio è sempre Probuilder.

Avviate la piattaforma ed il vostro piano di lavoro.

Il procedimento è lo stesso che abbiamo visto per la creazione di indicatori personalizzati.

Come per inserire un indicatore, cliccate sulla stessa icona in alto a destra della finestra prezzo e
successivamente sulla sezione di destra della finestra di controllo "backtesting e trading automatico".

A sinistra della finestra verranno visualizzati i vostri trading systems salvati e quelli predefiniti di esempio
che vi fornisce la piattaforma.

Anche in questo caso, avete le stesse opzioni:


Nuovo, Modifica, Duplica, Cancella, Importa, Esporta.

Per creare un nuovo trading system, dovete cliccare su nuovo e si apre la finestra di programmazione.

 
 

Anche in questo caso, potete utilizzare la creazione semplificata cliccando sugli indicatori del grafico per
definire le condizioni ed immettere le operazioni.

Vedete che le operazioni da fare sono essenzialmente 6.

Acquisto e vendita per le posizioni long.

Vendita allo scoperto e riacquisto per le posizioni short.

Stop loss e trailing profit.

Orari di trading.

 
Oppure, possiamo inserire direttamente i codici noi stessi, scrivendoli nella finestra di programmazione, ed
è ciò che faremo.

Clicchiamo sulla seconda opzione: creazione per programmazione.

Vediamo subito che la finestra di default inserisce le istruzioni base.

Dobbiamo semplicemente inserire al posto della dicitura "TueCondizioni" appunto, le condizioni del nostro
sistema.

Sulla sezione di destra, dobbiamo settare alcuni parametri relativi al money management e cioè:

1) Il capitale iniziale (del conto di trading che è relativo alla valuta dello strumento su cui stiamo
lavorando).
2) Misura per lotto, solo per il forex (microlotto 1000, minilotto 10000, lotto 100000 o multipli o divisori,
ecc....)

3) Commissione per ordine (solitamente per i titoli azionari).

4) Spread.

5) Data: intervallo del periodo di test.

Quando è tutto impostato potete spuntare la casella "mantieni la finestra aperta" ed eseguire il comando
"Probacktesta il mio sistema".

Possiamo inserire le variabili come abbiamo visto con gli indicatori probuilder ed effettuare le
ottimizzazioni.

Le ottimizzazioni ci permettono di vedere quali sono i parametri che danno le migliori performance in
termini di profitto.

In seguito vedremo un esempio con i risultati dei sistemi visualizzati sul grafico e sulla tabella delle
statistiche.

3 - FASI DI SCRITTURA DI UN SISTEMA

FASE 1

Per prima cosa dobbiamo settare la possibilità di eseguire solo un ordine oppure più ordini
successivamente, cioè l'istruzione del CUMULO DI ORDINI.

Il comando è DEFPARAM CumulateOrders:

DEFPARAM CumulateOrders = false

Con questa istruzione eseguiamo solo un ordine.

DEFPARAM CumulateOrders = true

Con questa istruzione eseguiamo più ordini.


Se non viene specificato, l'istruzione di default è False.

Possiamo settare inoltre, il numero di barre da caricare per il backtest ed affinchè il nostro sistema funzioni
in reale:

DEFPARAM preloadbars=10000

Oppure, per la simulazione ed il trading reale in intraday, possiamo selezionare l'intervallo di tempo in cui il
nostro sistema deve oparare:

DEFPARAM flatbefore=hhmmss

il sistema non deve essere operativo prima di un certo orario (ora, minuti, secondi) per esempio: 09:00:00.
Il sistema aprirà operazioni a partire dalle 09:00:00.

DEFPARAM flatafter=hhmmss

il sistema non deve essere operativo dopo un certo orario (ora, minuti, secondi) per esempio: 22:00:00. Il
sistema chiuderà tutte le operazioni in essere alle 22:00:00.

________________________________________________________________________________________

FASE 2

Il secondo step è quello dell'inserimento di tutti gli indicatori e delle condizioni come abbiamo fatto con
proscreener e probuilder.

Possiamo definirli come C1, C2, C3 oppure con qualsiasi altro nome a nostro piacimento, l'importante è che
successivamente vengano richiamati con gli stessi nominativi nelle istruzioni di acquisto e vendita.

________________________________________________________________________________________

FASE 3

In seguito, come abbiamo visto nella scaletta della programmazione semplificata immettiamo le istruzioni
secondo lo schema generale seguente:

1) acquisto long, mediante l'istruzione:


// Condizioni per entrare su posizioni long

IF NOT LongOnMarket AND TueCondizioni THEN

BUY 1 CONTRACTS AT MARKET

ENDIF

2) di vendita (uscita da posizione long), mediante l'istruzione:

// Condizioni per uscire da posizioni long

If LongOnMarket AND TueCondizioni THEN

SELL AT MARKET

ENDIF

3) di vendita allo scoperto short, mediante l'istruzione:

// Condizioni per entrare su posizioni short

IF NOT ShortOnMarket AND TueCondizioni THEN

SELLSHORT 1 CONTRACTS AT MARKET

ENDIF

4) di riacquisto (uscita da posizione short), mediante l'istruzione:

// Condizioni per uscire da posizioni short

IF ShortOnMarket AND TueCondizioni THEN

EXITSHORT AT MARKET

ENDIF

5) eventuale stop loss, trailing profit e target, mediante le seguenti istruzioni:

// Stop e target: Inserisci qui i tuoi stop di protezione e profit target

VEDI PUNTO 7
SET STOP XLOSS X

SET TARGET XPROFIT X

SET TRAILING XPROFIT X

Possiamo anche impostare solamente un sistema long oppure uno short.

Inoltre possiamo omettere il punto 5, in quanto nelle istruzioni 2 e 4 sono già previste le uscite dai trades
long e short.

4 - ISTRUZIONI IMPORTANTI

Vediamo ora alcune istruzioni importanti per la programmazione di probacktest che abbiamo già visto, in
parte, nelle istruzioni precedenti.

1) ENTRATE E USCITE DAL MERCATO.

I comandi sono:

BUY, per acquistare o andare long.

SELL, per uscire da una posizione long (rivendita).

SELLSHORT, per vendere o andare short.

EXITSHORT, per uscire da una posizione short (riacquisto).

Posso inserire un ordine STOP o LIMIT.

Stop, se il prezzo di acquisto è superiore al prezzo corrente od il prezzo di vendita inferiore al prezzo
corrente.

Limit, se il prezzo di acquisto è inferiore od il prezo di vendita superiore rispetto al prezzi corrente.

 
Se utilizzo il comando AT MARKET, vado direttamente a mercato quando il segnale di acquisto o di vendita
impostato si verifica.

In realtà, non si va subito a mercato, ma all'apertura della barra successiva, cioè NEXTBAROPEN, e questo
accade sempre con i sistemi di trading automatici di Proorder.

Se compro specificando un livello di prezzo, devo specificare quel livello.

Ad esempio, se il mio sistema prevede di comprare su un nuovo massimo mensile (se il backtest è
impostato su timeframe daily), inserisco una condizione, per esempio:

MASSIMO20=high[0]>=highest[20](high)[1]

L'istruzione di acquisto sarà:

IF NOT LongOnMarket AND MASSIMO20 THEN

BUY 1 CONTRACTS AT MARKET

ENDIF

Cioè, traducendo: se non sono a mercato con un trade long, ogni qualvolta il prezzo fa un nuovo massimo a
20 periodi o giorni, il sistema genera un segnale di acquisto e all'APERTURA DELLA BARRA SUCCESSIVA
acquisterà 1 contratto come da me specificato.

Se ho impostato il cumulo di ordini su TRUE, questo avverrà ad ogni massimo successivo mensile.

Se ho impostato FALSE, avverrà solo la prima volta fino alla chiusura del trade.

________________________________________________________________________________________

2) ISTRUZIONE DI BREAKOUT DI PREZZO E DI PULLBACK.

Con PROBACKTEST e PROORDER abbiamo anche la possibilità di comprare a BREAKOUT su rottura di


resistenze o di vendere a rotture su supporti definiti dalle linee del canale di Donchian.

Per farlo basta semplicemente settare la condizione di massimo o minimo del canale di donchian ma non
riferito al giorno prima (quindi senza il [1] finale) e cioè:
 

C1=HIGHEST[N](HIGH)

C2=LOWEST [N](LOW)

Quando mettiamo l'ordine di acquisto inseriremo il seguente codice:

// se il prezzo tocca la resistenza C1

If C1 then

// compra 1 contratto con un ordine stop in quel punto.

BUY 1 shares AT C1 STOP


ENDIF

Come vedete, ordino che non appena il prezzo tocca la resistenza a N periodi il mio sistema backtest
compra a quel livello di prezzo C1 e non all'apertura della candela successiva.

Il contrario per l'operazione short andando a vendere su C2 con un ordine stop al punto C2, cioè quando si
verifica il minimo su cui andare a breakdown.

Per acquistare quando il prezzo tocca il massimo od il minimo della candela precedente si utilizzano i
seguenti parametri:

C1=HIGHEST[1](HIGH)

C2=LOWEST [1](LOW)

Lo stesso può essere fatto sui tutti i tipi di canali, come il canale di donchian sui prezzi di chiusura, le bande
di bollinger od il canale di Keltener, le envelopes, ecc...basta determinare i codici del canale e inserire
l'istruzione base che ho scritto sopra per

negoziare a breakout.

Possiamo anche impostare un ordine limite e comprare su ritraccciamenti (PULLBACKS).

Nell'esempio sopra:
 

// se il prezzo tocca il supporto C2

If C2 then

// compra 1 contratto con un ordine limit in quel punto.

BUY 1 shares AT C2 LIMIT


ENDIF

________________________________________________________________________________________
_

3) ISTRUZIONE DI INCROCIO.

Le istruzioni di incrocio sono:

CROSSES OVER e CROSSES UNDER.

Queste istruzioni sono molto utili perchè permettono di comprare o vendere a seguito dell'incrocio di un
livello di valore dall'alto verso il basso (crosses under) o dal basso verso l'altro (crosses over).

Viene utilizzato per le medie mobili, ma anche per tutti gli altri indicatori che hanno livelli di valori per
esempio:

l'incrocio dello 0 nel ROC, dei livelli di ipercomprato e ipervenduto degli oscillatori, dei massimi e minimi dei
canali di Donchian, oppure delle bande di Bollinger.

Esempio:

if average[5](close) crosses over average[20](close) then

buy 1 shares at market

if rsi[14](close) crosses under 70 then

sell 1 shares at market

if roc[20] (close) crosses over 0 then


buy 10000 cash at market

________________________________________________________________________________________
_

4) QUANTITA'

Ci sono 2 modalità per definire l'ammontare della quantità di negoziazione:

1) SHARES o CONTRACTS, cioè contratti o lotti.

SHARES rappresenta il lotto minimo, per le azioni equivale ad 1 azione e per le commodities e gli indici ad 1
contratto.

Mentre per il forex può essere impostato il lotto di acquisto:

1000 equivale ad 1 microlotto, 10000 ad un minilotto, 100000 ad un lotto.

L'istruzione è:

BUY 10 SHARES AT MARKET

Se ho impostato 1000 come misura per lotto (solo per il forex) significa che ogni SHARE equivale a 1.000 $
della valuta quotata.

Invece, per determinare la quantità di azioni, contratti forex, commodities o indici acquistabili per trade in
base ad una % di rischio, per esempio il 2% dobbiamo utilizzare la formula:

RISCHIO/(ENTRY - STOP LOSS) x una posizione long.

RISCHIO/(STOP LOSS - ENTRY) x una posizione short.

Nell'esempio visto sopra scriverò:

BUY 200/(ENTRY - STOP LOSS) SHARES AT MARKET

Definendo prima i livelli di ENTRY e di STOP LOSS del nostro sistema mediante indicatori e condizioni.

Consiglio di utilizzare quindi la formula con SHARES per i backtest.

 
2) Oppure possiamo utilizzare il codice CASH, cioè soldi.

Con questo comando posso determinare l'ammontare della mia scommessa mediante una % del conto di
trading impostato nella sezione di destra della finestra di programmazione.

Per esempio, se il conto è di 10.000 $ e voglio negoziare il 10% per trade, imposto 1.000 $, cioè:

1000 CASH AT MARKET.

Comprerà cioè l'ammontare equivalente a 1.000 $ in azioni o contratti.

Se compro un titolo al prezzo di 50$, comprerò quindi 20 azioni,

se compro un titolo al prezzo di 5$, ne comprerò 200.

________________________________________________________________________________________
_

5) VARIABILI DI STATO DELLE POSIZIONI.

Ci sono 3 variabili di stato delle posizioni:

ONMARKET, identifica le posizioni aperte, sia long che short.

LONGONMARKET, identifica le posizioni long aperte.

SHORTONMARKET, identifica le posizioni long aperte.

Queste variabili sono introdotte con l'istruzioni IF e IF NOT prima di un'entrata in posizione come abbiamo
visto nello schema delle fasi generali:

IF LONGONMARKET AND.....se si ha aperta una posizione long....

IF NOT LONGONMARKET AND.......se non si ha aperta una posizione long....

________________________________________________________________________________________
_

6) GRANDEZZA DELLE VARIABILI DELLA POSIZIONE E CUMULI DI ORDINI.


 

Abbiamo già visto l'istruzione del cumulo di ordini in precedenza.

Ad esso sono legate le istruzioni per determinare la grandezza della posizione in lotti o contratti e quindi la
definizione di quante volte successivamente entrare a mercato:

COUNTOFPOSITION : grandezza della posizione totale.

Positivo se posizione lunga aperta, negativo se posizione corta aperta.

COUNTOFLONGSHARES : grandezza di una posizione lunga se c'è una posizione lunga aperta, altrimenti 0.

COUNTOFSHORTSHARES: grandezza di una posizione corta, se c'è una posizione corta aperta, altrimenti 0.

Queste istruzioni vanno aggiunte alle istruzioni IF LONGONMARKET per determinare acquisti e vendite.

Per esempio, se determinate l'ammontare del lotto FOREX a 1000, significa che 1 contratto o share equivale
a 1.000 $ della valuta base.

Quando vogliamo limitare l'acquisto a 5 contratti o 5.000 $, dovremo specificare nel codice di acquisto:

IF COUNTOFLONGSHARES < 5 AND TueCondizioni THEN

BUY 1 CONTRACTS AT MARKET

ENDIF

Nel codice di entrata in posizione short:

IF COUNTOFSHORTSHARES < 5 AND TueCondizioni THEN

BUY 1 CONTRACTS AT MARKET

ENDIF

In questo modo sostituiamo quindi il codice IF NOT LONGONMARKET con i codici delle posizioni massime
long e short.
 

ATTENZIONE:

Quando non definite il lotto dei contratti nella sezione di destra, ma utilizzate la formula:

BUY 200/(ENTRY - STOP LOSS) SHARES AT MARKET, in questo caso dovete capire che la definizione del
lotto negoziabile non è fissa ma è variabile.

Quindi, non abbiamo per esempio nelle azioni un LOTTO specifico ma azioni il cui numero varia in base ai
livelli di prezzo di ENTRY e di STOP LOSS.

Quindi, in base al prezzo del titolo dobbiamo fare una stima della posizione totale che vogliamo assumere
in quel particolare mercato e dobbiamo porre un limite di posizione totale in $.

Ad esempio un controvalore di 10.000 azioni acquistabili totalmente od un controvalore di 10.000 $ di lotti


forex.

In questo caso scriveremo questo:

IF COUNTOFLONGSHARES < 10000 AND TueCondizioni THEN

BUY 1000 CONTRACTS AT MARKET

ENDIF

IF COUNTOFSHORTSHARES < 10000 AND TueCondizioni THEN

BUY 1000 CONTRACTS AT MARKET

ENDIF

Negozierete 1000 azioni o contratti per posizione fino ad un totale di 10000 azioni.

________________________________________________________________________________________
_

7) TRADEINDEX, TRADEPRICE e BARINDEX

 
- TRADEINDEX consente di accedere alla barra dell'ennesimo ordine precedente eseguito e cioè mediante il
comando: TRADEINDEX(N).

- TRADEPRICE trova invece il prezzo della transazione precedentemente eseguita mediante il comando:
TRADEPRICE (N).

Tradeprice(1) rappresenta il prezzo di entrata precedente.

Quest'ultima è utile per esempio quando vogliamo entrare con una seconda posizione quando la prima è a
break-even, cioè quando il trailing profit (stop loss) settato da un indicatore trailing lineare come il
supertrend è a livello dell'entrata del trade precedente.

Per fare questo dobbiamo aggiungere le seguenti condizioni:

C1=stoploss>=tradeprice(1) (per un trade long)

C2=stoploss<=tradeprice(1) (per un trade short)

Con le seguenti istruzioni di acquisto:

// prima posizione

if not longonmarket and TueCondizioni then


buy 1 shares at market
endif
// long posizioni successive
if longonmarket and C1 and TueCondizioni then
buy 1 shares at market
endif

Lo stesso per le posizioni short ma con la condizione C2.

- BARINDEX, si riferisce alla barra corrente e di solito è utilizzata con TRADEINDEX per identificare per
quante barre deve rimanere aperta una posizione:

if longonmarket and (barindex-tradeindex)>=3 then


sell at market

endif.

In questo caso, la nostra posizione durerà 3 barre, cioè chiuderà all'apertura della quarta candela "at
market", cioè sempre nextbaropen.

________________________________________________________________________________________
_

8) TIME.

Altra importantissima funzione per il trading intraday è TIME.

Con questa funzione, possiamo ordinare al sistema di compiere operazioni entro una determinata fascia
oraria, sia per le operazioni long che quelle short.

Per esempio se vogliamo che le operazioni long siano svolte dalle 15:00 alle 18:00, impostiamo una
funzione mediante IF (TIME=>15:00 and TIME <=18:00 and condizioni.....).

Oppure solo in una certa ora: if time=15:00 and condizioni......

In questo caso, le operazioni si aprono solo in quelle ore, ma rimangono attive anche oltre se non
dichiarate ulteriormente.

Da non confondere con la funzione:

DEFPARAM flatbefore=hhmmss e DEFPARAM flatafter=hhmmss che indicano le fasce orarie entro le quali
i trading system sono validi durante la giornata.

 _________________________________________________________________________________

9) STOP LOSS, TARGET PROFIT E TRAILING PROFIT.

E' possibile definire le grandezze dei parametri mediante:


 

- Unità di prezzo. (NESSUNA DICHIARAZIONE)

- Punti o pips. (DICHIARATA CON SIMBOLO P)

- % di distanza. (DICHIARATA CON SIMBOLO %)

- $ di distanza. (DICHIARATA CON SIMBOLO $)

Vedi sotto.

Stop loss, target e trailing verranno calcolati dal punto di entrata in un trade, e quindi dall'apertura della
barra successiva rispetto al segnale di trading impostato se AT MARKET.

A meno che non si entri a breakout di un livello di prezzo con ordini STOP.

Come abbiamo visto in strumenti operativi i punti o pips dei vari strumenti dipendono dai decimali della
quotazione.

Per calcolare i Pip, le unità di prezzo vanno moltiplicate per i decimali del prezzo.

Per esempio nel forex 1 pip equivale a 0.0001 unità di prezzo perchè:

0.0001*10.000=1.

Negli indici senza decimali il punto riguarderà l'unità intera.

Negli indici, azioni o commodities con 2 decimali dopo la virgola il punto sarà al centesimo.

Es: distanza tra 50,20 e 50,80 = 60 punti = (50,80-50,20)*100

Per settare i comandi dobbiamo usare la seguente formula:

SET STOP LOSS X

SET STOP pLOSS X

SET STOP %LOSS X

SET STOP $LOSS X


 

SET TARGET PROFIT X

SET TARGET pPROFIT X

SET TARGET %PROFIT X

SET TARGET $PROFIT X

SET TRAILING PROFIT X

SET TRAILING pPROFIT X

SET TRAILING %PROFIT X

SET TRAILING $PROFIT X

Questi codici vanno scritti alla fine della programmazione e calcolano direttamente la direzione e la
distanza dal punto di entrata nel trade.

Va prima definita la distanza dal punto di entrata allo stop loss mediante una condizione od un indicatore
nell'elenco principale oppure direttamente nel codice finale.

La distanza può essere definita in unità, in pips, in % o in $.

Per esempio se il vostro sistema ha uno stop loss iniziale pari a 2 volte il valore dell'ATR che è espresso in
unità di prezzo (quindi senza dichiarazioni nei codici), può essere definito nell'elenco a priori:

Sloss=averagetruerange[14](close)*2

e richiamato alla fine sostituendolo alla X:

SET STOP LOSS Sloss

oppure può essere scritto direttamente alla fine:

 
SET STOP LOSS avreagetruerange[14](close)*2

In questo modo il programma setta lo stop loss ad una distanza dal prezzo di entrata pari a 2 volte l'ATR
(in unità).

Se avete utilizzato invece l'opzione della determinazione del rischio in $, cioè per esempio:

BUY 200/(ENTRY - STOP LOSS) CASH AT MARKET

basta settare lo stop loss pari al rischio di 200$ e cioè:

SET STOP $LOSS 200

poichè il rischio è dato dalla distanza tra entry e stop loss.

Lo stesso principio vale per il target profit.

Se voglio impostare un target profit pari a 3 volte il mio rischio, imposterò a seconda dei 2 casi:

SET STOP LOSS averagetruerange[14](close)*6

oppure:

SET TARGET $PROFIT 600

Quindi è fondamentale indicare i parametri giusti dell'indicatore di stop loss, trailing o target e l'unità di
misura: unità, punti, % o cash $

Un ulteriore opzione è quella di correlare STOP LOSS E TRAILING PROFIT insieme.

C'è la possibilità di impostare uno stop loss iniziale e farlo diventare un trailing profit quando il prezzo
raggiunge un certo livello.

E' possibile settare stop e trailing di diversi tipi, per esempio:

SET STOP LOSS x TRAILING y


SET STOP LOSS x pTRAILING y

SET STOP LOSS x $TRAILING y

SET STOP LOSS x %TRAILING y

e tutte le altre combinazioni, in totale sono 16.

Per esempio:

SET STOP pLOSS 20 pTRAILING 50

In questo caso setto uno stop loss ad una distanza di 20 punti dal prezzo di entrata nel trade, ad esempio a
5000.

Lo stop loss è quindi posizionato a 4880.

Non appena la distanza tra stop loss e prezzo corrente diventa di 50 punti, scatta il trailing profit, cioè a
5030.

Quindi se successivamente il prezzo sale fino a 5100 il trailing profit si muove fino a 5050 rimanendo alla
distanza di 50 punti.

Qualora il prezzo scenda a 5080, il trailing profit rimane a 5050.

N.B: IMPORTANTE!

Stop loss, target profit e trailing profit possono essere inclusi più specificatamente dopo le istruzioni di buy
(acquisto) e sellshort (vendita allo scoperto) e prima dell'istruzione ENDIF.

In questo caso, potete settare parametri diversi per trades long e short, per esempio:

//long position entry


if not longonmarket and c1 then
buy 1 contracts at market
set stop $loss 50
set target $profit 200
set stop $trailing 100
endif
 

//short position entry


if not shortonmarket and c3 then
sellshort 10 contracts at market
set stop $loss 30
set target $profit 150
set stop $trailing 50
endif

 _________________________________________________________________________________

10) RICHIAMO DI INDICATORI PERSONALIZZATI

Come nel caso di Proscreener, anche con Probacktest possiamo richiamare indicatori personalizzati.

E' possibile, quando si ha progettato un indicatore personalizzato e quindi salvato, richiamare l'indicatore
tramite la funzione "CALL" o richiamo.

Ciò va fatto inserendo nello screener la condizione con il richiamo del nostro indicatore e con i parametri da
cui è costituito.

Esempio:

C1=CALL "nomeindicatore[a,b](price)"<=>valore

Le virgolette comprendono il nome ed i parametri.

 _________________________________________________________________________________

Possiamo ora scrivere il nostro modulo di programmazione base, che ci servirà come "modello" dei nostri
sistemi di trading.

Vi consiglio di copiarlo nella vostra libreria di prorealtime come "sistema base" in modo che possiate
inserire le condizioni e modificarlo a vostro piacimento.

Tutte le funzioni che non volete utilizzare come ad esempio stop loss, take profit, trailing profit, ecc..
lasciatele precedere dalle 2 barre e verranno ignorate.

defparam cumulateorders=false

defparam preloadbars = 10000


//defparam flatbefore= hhmmss

//defparam flatafter =hhmmss

// condizioni long

// entry long positions

if not longonmarket and condizioni long then

buy 1 contracts at market

//set stop $loss X

//set target $profit X

//set stop $trailing Y

//set stop $loss X $trailing Y

endif

// condizioni exit long

// exit long positions

if longonmarket and condizioni exit long then

sell 1 contracts at market

endif

// condizioni short

// entry short positions

if not shortonmarket and condizioni short then


sellshort 1 contracts at market

//set stop $loss X

//set target $profit X

//set stop $trailing Y

//set stop $loss X $trailing Y

endif

// condizioni exit short

// exit short positions

if shortonmarket and condizioni exit short then

exitshort 1 contracts at market

endif

_______________________________________________________________________________________

Facciamo un esempio.

defparam cumulateorders=false

defparam preloadbars = 10000

//defparam flatbefore= hhmmss

//defparam flatafter =hhmmss

// condizioni long

c1=close>exponentialaverage[10](close)
c2=exponentialaverage[20](close)>exponentialaverage[100](close)

c3=close[0]>open[0] and close[0]>close[1]

c4=macd[12,26,9]>0

c5=rsi[14]>50

c6=adx[14]>20

// entry long positions

if not longonmarket and c1 and c2 and c3 and c4 and c5 and c6 then

buy 1 contracts at market

set stop $loss 100

set target $profit 1000

//set stop $trailing Y

//set stop $loss X $trailing Y

endif

// condizioni exit long

c7=close[0]<lowest[10](low)[1]

// exit long positions

if longonmarket and c7 then

sell 1 contracts at market

endif

// condizioni short

c8=close<exponentialaverage[10](close)

c9=exponentialaverage[20](close)<exponentialaverage[100](close)
c10=close[0]<open[0] and close[0]<close[1]

c11=macd[12,26,9]<0

c12=rsi[14]<50

c13=adx[14]>20

// entry short positions

if not shortonmarket and c8 and c9 and c10 and c11 and c12 and c13 then

sellshort 1 contracts at market

set stop $loss 100

set target $profit 1000

//set stop $trailing Y

//set stop $loss X $trailing Y

endif

// condizioni exit short

c14=close[0]>highest[10](high)[1]

// exit short positions

if shortonmarket and c14 then

exitshort 1 contracts at market

endif

I codici che non mi servono restano inattivi mediante le 2 barre poste all'inizio.

Potrebbero piacerti anche