Programmazione ProRealtime
by Marcello Belguardi
Supponiamo di avere a disposizione 10000 USD da investire sul prossimo trade e, per gestire un pò meglio il rischio, decidiamo di entrare inizialmente solo con 5000 USD; dopo aver verificato che la direzione è corretta decidiamo quindi di investire i rimanenti 5000 USD.
Cioè tentiamo di frazionare il capitale da investire; stiamo utilizzando una tecnica che prende il nome di scaling-in o piramidizzazione.*
Specificatamente potremmo decidere di entrare con il secondo lotto solo quando il guadagno alla chiusura di una certa barra è maggiore del Range medio (cioè della media dei range High/Low calcolato su x barre).
Nell'esempio entreremo il 6 febbraio e piramidizzeremo l'11 febbraio perchè è proprio da quel momento che la condizione suddetta è verificata.
(Fare click sull'immagine per ingrandire)
Nella simulazione entriamo il 6 Febbraio perchè il segnale goLong scatta la sera prima. Sappiamo che i nostri due lotti sono di 5000 USD e calcoliamo l'equivalente numero di azioni sempre la sera del 5 Febbraio.
Calcoliamo inoltre la media dei range più recenti (senza prendere in considerazione gli eventuali gap)
Siamo inoltre sicuri che il cumulo di ordini è consentito dal programma perchè abbiamo settato la variabile globale cumulateorders = true.
(Se questa variabile fosse settata a false non verrebbe consentito lo scaling-in).
Questo lo script:
// Scaling-In example
defparam cumulateorders = true
goLong = (date=20150205)
nShares = Round(5000/close)
averageRange = Average[10](Range)
if goLong then
buy nShares share at market TomorrowOpen
endif
scalingIn = (close - TRADEPRICE) >= averageRange
consentScaling = countofLongShares < nShares*2
if longonmarket and scalingIn and consentScaling then
buy nShares share at market TomorrowOpen
endif
graph scalingIn and consentScaling as "2nd entry"
Note:
*Ad essere precisi nell'esempio facciamo un Averaging up, cioè compriamo altre azioni che già possediamo ad un prezzo più alto. Tecnica utilizzata da trend e momentum followers.
Riferimenti:
http://thepatternsite.com/ScalingIn.html
by Marcello Belguardi
Supponiamo di avere a disposizione 10000 USD da investire sul prossimo trade e, per gestire un pò meglio il rischio, decidiamo di entrare inizialmente solo con 5000 USD; dopo aver verificato che la direzione è corretta decidiamo quindi di investire i rimanenti 5000 USD.
Cioè tentiamo di frazionare il capitale da investire; stiamo utilizzando una tecnica che prende il nome di scaling-in o piramidizzazione.*
Specificatamente potremmo decidere di entrare con il secondo lotto solo quando il guadagno alla chiusura di una certa barra è maggiore del Range medio (cioè della media dei range High/Low calcolato su x barre).
Nell'esempio entreremo il 6 febbraio e piramidizzeremo l'11 febbraio perchè è proprio da quel momento che la condizione suddetta è verificata.
(Fare click sull'immagine per ingrandire)
Nella simulazione entriamo il 6 Febbraio perchè il segnale goLong scatta la sera prima. Sappiamo che i nostri due lotti sono di 5000 USD e calcoliamo l'equivalente numero di azioni sempre la sera del 5 Febbraio.
Calcoliamo inoltre la media dei range più recenti (senza prendere in considerazione gli eventuali gap)
Dopo l'ingresso misuriamo la differenza tra il prezzo di chiusura corrente ed il prezzo di ingresso (close - TRADEPRICE). Quando questa differenza è maggiore del range medio possiamo entrare con il nuovo lotto, perchè la condizione scalingIn è verificata ed inoltre sappiamo di essere già long a mercato.
Siamo inoltre sicuri che il cumulo di ordini è consentito dal programma perchè abbiamo settato la variabile globale cumulateorders = true.
(Se questa variabile fosse settata a false non verrebbe consentito lo scaling-in).
Questo lo script:
// Scaling-In example
defparam cumulateorders = true
goLong = (date=20150205)
nShares = Round(5000/close)
averageRange = Average[10](Range)
if goLong then
buy nShares share at market TomorrowOpen
endif
scalingIn = (close - TRADEPRICE) >= averageRange
consentScaling = countofLongShares < nShares*2
if longonmarket and scalingIn and consentScaling then
buy nShares share at market TomorrowOpen
endif
graph scalingIn and consentScaling as "2nd entry"
Naturalmente nulla impedirebbe allo script di continuare a cumulare ordini, in teoria indefinitivamente, questo perchè dal secondo ingresso in poi la condizione scalingIn è sempre verificata.
Introduciamo allora una nuova condizione che confronta il numero di azioni a mercato (countofLongShares) con il numero di azioni massimo che vogliamo investire (nShares*2), mettendo un freno al cumulo.
Notare che ProRealtime visualizza mediante un istogramma il numero di azioni (positions) correntemente a mercato. Le azioni vengono raddoppiate alla seconda entry.
Note:
*Ad essere precisi nell'esempio facciamo un Averaging up, cioè compriamo altre azioni che già possediamo ad un prezzo più alto. Tecnica utilizzata da trend e momentum followers.
Riferimenti:
http://thepatternsite.com/ScalingIn.html