Questo post è stato ispirato da una domanda che ho visto di recente su reddit su / r / Forex / . L’utente chiedeva semplicemente:

What does the “Recalculate After Order Filled flag” actually do?

In un primo momento, ho pensato che un rapido sguardo all’help di Tradingview sarebbe sufficiente per trovare la risposta. In questo caso si scopre che la documentazione non è così chiara:

You can set the strategy to perform additional calculation after an order is filled. For this you need to check off “Recalculate After Order filled” in settings or do it in script itself:

Questa documentazione  è un po’ ambigua e lascia spazio ad alcune domande: Di quale calcolo aggiuntivo stiamo parlando? Devo specificare qualcosa da calcolare? È un calcolo speciale documentato altrove?

Ricalcola dopo l'esecuzione dell'ordine

Prima di dare la mia interpretazione, devo evidenziare che “ricalcola dopo l’esecuzione dell’ordine” è il nome del flag che si vede nella schermata delle impostazioni della strategia. In realtà nel codice è indicato come “calc_on_order_fills ” ed è impostato come argomento nella chiamata alla funzione strategy().

tradingview-ricalcolo-dopo-esecuzione-trading-algoritmico

In questo modo si effettua il il ricalcolo in questione per l’intero script, cioè il tuo script viene “calcolato” per ogni barra dei dati storici disponibili. Quando si attiva il “ricalcola dopo che l’ordine evaso“, si ricalcola nuovamente lo script ogni volta che un ordine sia stato completamente eseguito. Nell’emulatore di broker reso disponibile da Tradingview, questo avviene prima della barra successiva.

 

Può sembrare un dettaglio trascurabile (o può aumentare notevolmente il rischio)

A seconda del contenuto dello script, l’impostazione “ricalcola dopo l’esecuzione dell’ordine” (calc_on_order_fills) potrebbe non avere alcun evidente effetto sul risultato dello script, ad esempio le strategie semplici che non prevedono la “piramidazione”.

Dall’altra parte, può causare un’esposizione eccessiva perchè si inserendo più ordini sulla stessa barra. Con la piramidazione, viene piazzato un secondo ordine sulla stessa barra se le condizioni di ingresso sono ancora soddisfatte dopo il “ricalcolo”. Secondo me questo annulla l’effetto della piramidazione.

Codice Pinescript

Per effettuare i primi test possiamo usare una strategia molto, molto semplice. E’ cosi semplice che ho limitato l’intervallo di backtest a soli 100 giorni in modo che il grafico non venga sovraccaricato da troppi ordini di acquisto e vendita. (si può fare tramite la  parola chiave max_bars_back)

            //@version=4
strategy("calc_on_order_fills testing",  overlay=true, calc_on_order_fills=true, pyramiding=2, max_bars_back=100)

//setup ma
ma = sma(close, 50)

//plotting
plot(ma, linewidth=2)

//Strat
longCondition = (open > ma)
if (longCondition)
    strategy.entry("MA Long Sig", strategy.long)

shortCondition = (open < ma)
if (shortCondition)
    strategy.entry("MA Short Sig", strategy.short)
        

Risultati

Vediamo di seguito i risultati dopo aver eseguito lo script con le impostazioni predefinite calc_on_order_fills = false, pyramiding = 2:

La cosa fondamentale da notare su questa immagine è che ogni entrata / uscita si trova su una barra diversa. 

Di seguito abbiamo un esempio dello stesso script ma con le impostazioni calc_on_order_fills = true, pyramiding = 2:

trading-algoritmico-tradingview-pinescript-Recalc-On

Nel secondo esempio possiamo vedere come 2 ordini di entrata vengono entrambi eseguiti sulla stessa barra. Ciò accade perché l’intero script viene ricalcolato e le condizioni per l’ingresso sono ancora valide.

Penso che vedere le due immagini affiancate renda facile vedere capire l’effetto di questa impostazione. Inoltre la seconda immagine evidenzia i pericoli della piramidazione quando si ricalcola dopo l’esecuzione dell’ordine. Questa impostazione potrebbe essere più utile nei test a termine in cui le condizioni non sono identiche dopo che l’ordine è stato eseguito o quando si vuole fare trading automatico con broker reali su Tradingview.


PS. Se sei nuovo su pinescript assicurati di controllare alcuni dei miei post precedenti su Tradingview:

  1. Tradingview: primo script
  2. Tradingview: crea un indicatore
  3. Tradingview: comprensione dei dati anticipati, storici e in tempo reale

Recommended Posts