Sono riuscito ad aggiungere la strategia al grafico, ma non viene generato alcun ordine

Se le schede “Lista dei trade” e “Panoramica” del Tester strategia visualizzano “Nessun dato” dopo aver aggiunto una strategia al grafico, è probabile che lo script non simuli alcun ordine, il che si traduce nell'assenza di dati per popolare le schede. Se lo script non genera ordini, ciò può essere dovuto a uno dei seguenti motivi:

Lo script non è classificato come strategia o non utilizza comandi che creano ordini.

Il backtesting con il Tester strategia funziona solo con le strategie Pine Script® che utilizzano la funzione strategy() come dichiarazione. Gli script dichiarati con indicator() o library() non possono interagire con il modulo Tester strategia.

Gli script dichiarati come strategie devono utilizzare i comandi di inserimento ordini `strategy.*` (ad esempio, strategy.order() o strategy.entry()) per simulare gli ordini e visualizzare i dati nel Tester strategia, indipendentemente da qualsiasi altro segnale di acquisto/vendita che l'autore dello script possa aver incluso nel codice.

La strategia non dispone di un capitale sufficiente per aprire una posizione

Affinché una strategia possa aprire una posizione, deve disporre di denaro sufficiente per acquistare il numero specificato di contratti/lotti/azioni/unità. Non entrerà in una posizione se non dispone di un capitale sufficiente a coprire il costo. Ad esempio, se il capitale iniziale di una strategia è di 1000 USD e la dimensione dell'ordine è di un contratto, non potrà entrare in posizione se il prezzo dell'asset non scende sotto i 1000 USD, poiché non può permettersi l'intera operazione. Le strategie cercheranno sempre di acquistare il numero di contratti/azioni/lotti/unità specificato e niente di meno.

Nota importante sul backtesting dei futures: 

I simboli dei futures hanno comunemente una Unità di Contratto (rappresentata come Valore del Punto su TradingView e accessibile in Pine tramite la variabile syminfo.pointvalue). Come per gli altri simboli, il prezzo grezzo sul grafico rappresenta il prezzo di un'unità della commodity negoziata. Tuttavia, i contratti futures hanno una quantità prestabilita che ognuno di essi rappresenta, quindi un acquisto di una singola unità non è tipicamente possibile. Per calcolare il capitale richiesto per un contratto, moltiplicare il prezzo del grafico per il Point Value.

Nell'esempio seguente, la strategia che abbiamo aggiunto al grafico è entrata in una posizione a 4000 USD e ne è uscita a 4500 USD. L'importo effettivo speso per il contratto al prezzo di entrata è stato di 4000 USD moltiplicato per il valore del punto di 50, pari a 200.000 USD. Quando la strategia ha chiuso la sua posizione al prezzo di uscita, l'importo ricevuto è stato di 4500 USD * 50 = 225.000 USD, con un profitto di 25.000 USD, che possiamo confermare visualizzando la colonna “Profitto” della scheda “Lista dei trade” nel Tester della strategia:

Se in questo caso la strategia avesse avuto un valore di Capitale iniziale inferiore a 200.000 USD, non sarebbe stata in grado di piazzare l'ordine perché non poteva permettersi il prezzo di entrata, che era 50 volte il prezzo mostrato sul grafico. Per simulare la posizione, è necessario aumentare il Capitale iniziale o abbassare i valori di Margine long/short per consentire alla strategia di permetterlo.

La strategia restituisce un errore di esecuzione

Se una strategia incontra un problema durante i suoi calcoli, genererà un errore di runtime e mostrerà un punto esclamativo rosso nell'angolo superiore sinistro del riquadro grafico che contiene la strategia. Gli errori di runtime impediscono allo script di continuare i calcoli e quindi di simulare gli ordini. I diversi errori di runtime di Pine hanno diverse cause e potenziali soluzioni. Facendo clic sul punto esclamativo si visualizza il messaggio di errore dello script.

Le condizioni necessarie per piazzare gli ordini della strategia non sono state soddisfatte

 

Una possibile causa per cui una strategia non mostra alcun dato è che nessuna condizione ha attivato un ordine nell'intervallo di test. In questo caso, non ci sarebbero voci sul grafico perché non ci sono ordini da riempire. Gli utenti possono risolvere questo problema modificando le condizioni nel codice sorgente della strategia. Spesso può essere utile esaminare visivamente lo storico delle condizioni degli ordini di una strategia tracciandole sul grafico.

Lo script seguente utilizza la funzione plotshape() di Pine per tracciare croci blu e rosse sopra le barre al verificarsi delle condizioni long e short, consentendoci di ispezionare la loro storia sul grafico:

//@version=6
strategy('My Strategy', overlay = true)

longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))

if longCondition
    strategy.entry('Long', strategy.long)

plotshape(longCondition, color=color.new(color.blue, 0))

shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))

if shortCondition
    strategy.entry('Short', strategy.short)

plotshape(shortCondition, color=color.new(color.red, 0))

Per ulteriori informazioni su questo argomento, consultare la pagina del Manuale utente dedicata al debug.

Le proprietà della strategia non sono corrette

Ogni strategia ha diversi parametri che determinano le regole per l'apertura degli ordini. Gli autori possono impostare questi parametri dal codice sorgente di una strategia e gli utenti possono sovrascriverli con gli input della scheda “Proprietà” delle impostazioni della strategia.

NOTA: nel codice sorgente di una strategia sono presenti diversi punti in cui gli utenti possono impostare il numero di contratti/azioni/lotti/unità per gli ordini:

  • I parametri della funzione strategy() consentono di impostare la quantità e il tipo di negoziazione predefiniti, che definiscono i valori predefiniti nella scheda “Proprietà”. Gli utenti possono modificare questi valori regolando gli input “Dimensione dell'ordine”.
  • I comandi di collocamento degli ordini che producono ordini di entrata, come strategy.entry(), possono impostare la quantità di negoziazione per ogni singolo ordine. In questo caso, le modifiche apportate all'input nella scheda “Proprietà” non influiscono sulla dimensione dell'ordine della strategia. 

Gli utenti devono assicurarsi di specificare correttamente le dimensioni degli ordini delle loro strategie. A completamento della sezione “La strategia non dispone di capitale sufficiente per aprire una posizione”, si noti che:

  • Se il “Tipo di ordine” di una strategia è impostato su “Contratti” (equivalente a strategy.fixed come `default_qty_type` nel codice sorgente), la dimensione dell'ordine deve essere maggiore di 1 per la maggior parte dei simboli. Alcune criptovalute facilitano le dimensioni frazionarie. Ad esempio, una dimensione dell'ordine di 0,1 è valida per BTCUSD ma non per AAPL o EURUSD.
  • La dimensione dell'ordine deve essere positiva; i numeri negativi causeranno errori di esecuzione e un valore pari a 0 non avrà alcun effetto.
  • La dimensione totale della posizione (numero di contratti) non può superare 1e12. Le strategie non simuleranno nuovi ordini se la dimensione della posizione supera questo numero.