Proprietà strategia

Ogni strategia Pine dispone di alcune proprietà specifiche che ne determinano il comportamento: 

  1. Capitale iniziale
  2. Valuta base
  3. Dimensione ordine
  4. Piramidare
  5. Commissione
  6. Verifica prezzo per ordini limite
  7. Slippage
  8. Margine
  9. Ricalcola

Sono tutte presenti nella sezione Proprietà delle impostazioni:


Ognuno dei parametri specificato nelle proprietà della strategia può essere modificato mettendo mano agli argomenti della funzione strategy() nello script Pine corrispondente:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

Analizziamo nel dettaglio i vari parametri menzionati:

1 - Capitale iniziale (parametro: initial_capital) rappresenta il bilancio di partenza della strategia, stabilito nella Valuta base. Di default, questo valore è uguale a 100.000, ma puoi cambiarlo nel caso in cui reputi più opportuno partire con un capitale maggiore / minore.

2 - Valuta base (parametro: currency) specifica la valuta da usare per i calcoli. I risultati che appaiono nella sezione Tester strategia (profitto, perdita, drawdown, ecc) sono espressi con tale unità di misura. Le valute disponibili sono:

Default, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Selezionando l'opzione Default, la strategia utilizzerà la valuta predefinita per quello strumento finanziario, senza applicare alcuna conversione.

3 - Dimensione ordine (parametri: default_qty_value, default_qty_type). Richiede un valore ed un'unità di misura. Tieni a mente che i valori calcolati saranno comunque soggetti ad alcune limitazioni a seconda della minima quantità negoziabile per il simbolo in questione:

  • Contratti (argomento: strategy.fixed) - la strategia aprirà posizioni con quel numero di contratti/azioni/lotti.
  • Ammontare in valuta (argomento: strategy.cash) - la strategia aprirà posizioni il più vicino possibile a quel controvalore pecuniario, nella valuta base selezionata prima.
  • Percentuale di equity (argomento: strategy.percent_of_equity) - le dimensioni degli ordini saranno calcolate come percentuale dell'equity disponibile nel momento dell'apertura del trade.

4 - Piramidare (parametro: pyramiding) specifica il numero massimo di operazioni che possono essere aperte nello stesso lato (long/short) consecutivamente. Quando è disabilitato, la strategia può aprire al massimo una operazione per lato, anche se le condizioni vengono soddisfatte più di una volta. Questo parametro influenza solo le operazioni eseguite usando la funzione strategy.entry(). Non ha alcun effetto sugli ordini creati usando strategy.order().

5 - Commissione (parametri: commission_typecommission_value) rappresenta l'ammontare di commissioni da pagare per ogni operazione. Richiede un valore ed un'unità di misura. Tieni a mente che questo fattore si applica alle operazioni di entrata e di uscita allo stesso modo, e che quando si usa una percentuale l'importo sarà differenze a seconda dei costi della transazione:

  • Percentuale del transato (argomento: strategy.commission.percent) - imposta una commissione su ogni ordine pari ad una percentuale del volume d'acquisto o di vendita.
  • Valuta per contratto (argomento: strategy.commission.cash_per_contract) - imposta una commissione variabile sulla base del numero di contratti acquistati o venduti.
  • Valuta per ordine (argomento: strategy.commission.cash_per_order) - imposta una commissione fissa per ogni ordine.

6 - Verifica prezzo per ordini limite (parametro: backtest_fill_limits_assumption) rende le condizioni per aprire una posizione con ordine limite più stringenti. Di default, il valore è 0, ed implica che gli ordine limite sono eseguiti sullo storico delle barre non appena il prezzo indicato è raggiunto. Se invece il valore è diverso da 0, significa che l'ordine è eseguito solo se il prezzo di mercato ha superato la soglia di un certo numero di tick.

7 - Slippage (parametro: slippage) specifica il valore in tick da aggiungere al prezzo di esecuzione degli ordini a mercato o degli ordini stop. Viene usato per tenere conto dello spread.

8 - Margine per posizioni long e short (parametri: margin_long, margin_short) sta ad indicare il margine richiesto per mantenere una posizione. Se non ci sono abbastanza fondi, si procede con una margin call, che va a chiudere immediatamente una o più posizioni aperte con ordini a mercato, fintanto che non ci sono abbastanza fondi per mantenere tutte le posizioni esistenti.

9 - Ricalcola specifica in che modo la strategia debba essere ricalcolata. Di default, il ricalcolo avviene alla chiusura di ogni barra, ma ci sono alcune opzioni addizionali descritte qui sotto:

  • Dopo l'esecuzione dell'ordine (parametro: calc_on_order_fills). Consente alla strategia di effettuare un calcolo addizionale all'interno della barra subito dopo l'esecuzione dell'ordine. Avviene sia sulle barre storiche che su quelle in tempo reale.
  • Ad ogni tick (parametro: calc_on_every_tick). Di default, le strategie eseguono il calcolo alla chiusura delle barre in tempo reale. Questo parametro permette alla strategia di effettuare un calcolo ad ogni aggiornamento della barra in formazione. Tieni a mente però che i dati tick vengono persi non appena si aggiorna il grafico (poiché le barre vengono storicizzate), e questo causerà un repaint sulle barre formate prima del refresh (non su quelle che erano già storicizzate). Inoltre, considerando che le barre storiche non contengono i dati tick, i risultati non saranno realistici.