Proprietà strategia
Ogni strategia Pine dispone di alcune proprietà specifiche che ne determinano il comportamento:
- Capitale iniziale
- Valuta base
- Dimensione ordine
- Piramidare
- Commissione
- Verifica prezzo per ordini limite
- Slippage
- Margine
- Ricalcola
- Esecuzione ordini
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, process_orders_on_close, use_bar_magnifier)
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 1.000.000, ma puoi aumentarlo nel caso in cui reputi avere più fondi per operare con un determinato simbolo.
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 quantità minima 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_type, commission_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) specifica il margine per ogni operazione, ovvero la percentuale della posizione che il trader deve finanziare. Ad esempio, se il margine per le posizioni lunghe è impostato al 25%, il trader deve disporre di fondi sufficienti a coprire il 25% dell'operazione aperta e può potenzialmente spendere fino al 400% del proprio capitale per ogni operazione. Se un'operazione è stata aperta e inizia a perdere denaro fino al punto in cui i fondi del trader non sono sufficienti a coprire la sua parte dell'operazione, si verifica una Margin Call che liquida forzatamente una parte della posizione originale. Per ulteriori informazioni su questa funzione e sul suo calcolo, consulta il seguente articolo del Centro di supporto.
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, come farebbe un indicatore. Tieni a mente però che i dati tick vengono persi non appena si aggiorna il grafico (poiché le barre vengono storicizzate), e questo causerà repainting. Questo parametro non influisce sul comportamento delle strategie sulle barre storiche. Si noti inoltre che le strategie che utilizzano questa funzione non mostreranno risultati realistici sulle barre storiche, poiché non contengono dati in tick.
10 - Esecuzione ordini:
- Usa Bar Magnifier (parametro: use_bar_magnifier). Consente all'emulatore del broker di utilizzare i dati di timeframe inferiori durante il backtesting dello storico per ottenere risultati più realistici. Per ulteriori informazioni sulla modalità di backtesting Bar Magnifier, consulta il relativo articolo nel Centro di supporto.
- Alla chiusura della barra (parametro: process_orders_on_close). Se è vero, la strategia genera un ulteriore tentativo di esecuzione degli ordini dopo la chiusura della barra e il completamento dei calcoli della strategia stessa. Se gli ordini sono a mercato, l'emulatore li esegue prima dell'apertura della barra successiva. Se gli ordini sono dipendenti dal prezzo, verranno eseguiti solo se le condizioni di prezzo sono soddisfatte. Questa opzione è utile se si desidera eseguire gli ordini nello stesso momento in cui vengono creati: per impostazione predefinita, gli ordini vengono creati alla chiusura della barra corrente ed eseguiti all'apertura della barra successiva; con questa impostazione attivata, verranno eseguiti alla stessa chiusura in cui è stato creato l'ordine. Si noti che l'inserimento della posizione nello stesso tick in cui è stato creato l'ordine può essere fuorviante, poiché non sarebbe possibile realizzarlo nel trading reale.
- L'utilizzo dell'OHLC standard (parametro: fill_orders_on_standard_ohlc) obbliga le strategie che operano sui grafici Heikin Ashi a eseguire gli ordini utilizzando i prezzi OHLC, per ottenere risultati più realistici. Per impostazione predefinita, gli script di strategie compilano gli ordini utilizzando i prezzi del grafico, indipendentemente dal tipo di grafico. Per i grafici Heikin Ashi, questa impostazione impedisce l'uso di prezzi sintetici che potrebbero non corrispondere alla realtà. Ad esempio, questa strategia applicata al grafico giornaliero NASDAQ:AAPL Heikin Ashi ha eseguito un ordine il 25/09/2023 a un prezzo sintetico di 175,61 USD. Tuttavia, dopo aver attivato l'opzione "Utilizzo dell'OHLC standard", lo stesso ordine è stato eseguito al prezzo standard del grafico di 174,20 USD.