Sunday, September 20, 2015

Scaling-In

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)

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