Tradestation – Come andare live con un mini/micro future, guida completa

  • Home
  • Tradestation – Come andare live con un mini/micro future, guida completa
Shape Image One

Tradestation – Come andare live con un mini/micro future, guida completa.

Se vogliamo andare live con contratti micro o mini dobbiamo prendere delle precauzioni.

La prima cosa da fare è vedere se ci sono differenze di performance tra il sistema applicato sul contratto intero e il sistema applicato sul contratto micro/mini.

Attenzione: il contratto mini/micro non serve mai in data2,3,4,5 ecc, solo in data1.

Due esempi

Soybean Krepsys

Soybean Duane

Abbiamo due sistemi su contratti interi. Lo storico è lungo, i timeframe sono 2 o 3.

Applichiamo i sistemi sui contratti mini/micro relativi, con l’obiettivo del live.

Quindi in questo caso serve applicare il ticker YKN23, cioè mini soia di luglio 23.

Inoltre lo storico sarà più breve, questo per due motivi. Il primo è che caricare tutto lo storico possibile per il live non serve e appesantisce la VPS; il secondo è che alcuni mini/micro non hanno il contratto continuo, quindi hanno lo storico strutturalmente breve.

Questo è il caso dei mini sulle granaglie.

Prima cosa da fare: aggiustare i valori di stop loss e take profit.

Se, come consigliamo sempre, nel codice c’è la stringa di codice “setstopcontract”, questo passaggio è facilissimo. Se non c’è, aggiungerla.

Grazie a questa riga di codice, questo passaggio è facilissimo. Andiamo negli input della strategia e modifichiamo a mano gli importi di stop loss e take profit in base al rapporto tra il mini/micro future e il contratto intero. 

Nella tabella seguente sono scritte le proporzioni.

Ad esempio su soia il rapporto è 1 su 5. Se abbiamo uno stop di 1000$ dobbiamo fare 1000/5, cioè 200. Se abbiamo uno stop di 2500 dobbiamo fare 2500/5, cioè 500. Questa cifra la mettiamo direttamente negli input della strategia.

Prossimo step. Carichiamo le strategie e vediamo cosa succede.

Il grafico sopra ha il mini contratto in Data1 e il contratto intero in Data2.

Il grafico sotto ha i contratti interi e continui (non vogliamo andare live con il contratto intero, in questo esempio, ma col mini). 

Questo è il sistema Krepsys.

Lo storico è 100 giorni, più che sufficienti (anche perché il mini sulle granaglie sicuramente non ha più storia di così).

Di seguito invece il grafico del sistema Duane. Sopra c’è il grafico in cui proviamo ad applicare il sistema sul mini.

Sotto, il sistema con i continui sui future normali.

Si notano i due problemi principali che dobbiamo risolvere e che possono capitare in queste situazioni. 

Il primo è che i trade sono chiaramente diversi. È evidente a colpo d’occhio.

Per quanto riguarda il sistema Duane (qui sotto) addirittura non ci sono trade, quando dovrebbero essercene due.

Questo succede per due possibili motivi: 

  1. Lo storico sul contratto mini/micro è troppo “sporco”. Forse è poco liquido. Fatto sta che le barre sono diverse, quindi il calcolo stesso della strategia è diverso.
  2. C’è troppo poco storico per il calcolo corretto della strategia.

Il secondo possibile problema è facile da risolvere. Carichiamo un custom future.

Di seguito i passaggi.

Tasto destro sul grafico, cliccare “Timeframe, poi cliccare “Customize”.

Selezionare Data1 e cliccare “Customize”.

Cliccare “Lookup”.

Nel menù a sinistra cliccare “Custom futures”.

A questo punto bisogna fare tre cose:

  1. Scrivere il ticker del mini/micro future (YK per soia) senza mese né anno né chiocciola
  2. Selezionare “time” e scrivere “5”
  3. Cliccare su “use this symbol for trading”.

A questo punto abbiamo molto più storico, quindi possiamo allungarlo un po’, ad esempio passando da 100 a 1000 giorni.

Il gioco è fatto.

Il sistema applicato sul mini future produce risultati uguali al sistema applicato sul contratto intero, ora?

Senza neanche dover confrontare la lista dei trade, possiamo stabilire che i trade sono diversi.

Questo step non ha prodotto i risultati sperati, quindi il problema non risiede nello storico troppo corto ma nella qualità dei dati.

Bisogna, quindi, procedere con un’altra soluzione.

Dobbiamo far sì che il codice, che adesso fa riferimento a data1 (dove c’è il mini future) e data2 (dove c’è il contratto intero), faccia riferimento a un data3 dove caricheremo il contratto intero.

A questo scopo, serve che in tutte le serie storiche, ci sia lo stesso contratto custom. Questo serve per far sì che i prezzi, tra le tre serie storiche, siano uguali.

Un esempio

Situazione di partenza

  • DATA1 – YK 30 minuti
  • DATA2 – @S 1440 minuti 

Situazione di risoluzione del problema

  • DATA1 – @YKK23=105XC 30 minuti
  • DATA2 – @SK23=105XC 1440 minuti 
  • DATA3 – @SK23=105XC 30 minuti.

Questo nuovo data3 prenderà il posto, nel codice, del data1.

Un esempio

if close of data2> open of data2 and close > average(close, 10) then buy next bar at high stop;

Questa linea di codice lavora in data1 e in data2, per la prima condizione.

Dove data1 è un contratto intero, non avremo mai problemi.

Se c’è un micro/mini che dà differenze, allora dovremo fare così:

  • DATA1 – @YKK23=105XC 30 minuti
  • DATA2 – @SK23=105XC 1440 minuti 
  • DATA3 – @SK23=105XC 30 minuti.

Il codice “nuovo” sarà:

if close of data2> open of data2 and close of data3 > average(close of data3, 10) then buy next bar at high of data3 stop;

A questo punto il data1 non è più coinvolto del calcolo quindi non avrai più possibili errori.

Un esempio sul codice. Prenderò proprio Krepsys.

if t> EntryLong and t<ExitLong and  TEST_PTN2(+ptn, P) and dayofweek(date)<>DL then buy ("EL_S_Krepsys") nCon contracts  next bar at highd(0) stop; 
if t> EntryShort and t<ExitShort and  TEST_PTN2(-ptn, P) and dayofweek(date)<>DS  then sellshort  ("ES_S_Krepsys") nCon contracts next bar at lowd(0) stop;
If marketposition<>0 and barssinceentry > ExitBars*4 then begin
Sell next bar at market;
Buytocover next bar at market;
End;
Setstopcontract;
If myprofit>0 then setprofittarget(myprofit);
If mystop>0 then setstoploss(mystop);

In questo caso, “TEST_PTN2(+ptn, P) “, rimane invariato, perché la funzione di pattern fa già riferimento a data2.

Ciò che modificheremo sarà l’ordine di ingresso. 

In generale va modificato tutto il codice che fa riferimento alle candlestick, alle barre, di Data1.

Di seguito il codice corretto.

if t> EntryLong and t<ExitLong and  TEST_PTN2(+ptn, P) and dayofweek(date)<>DL  then  buy ("EL_S_Krepsys") nCon contracts  next bar at highd(0) of data3 stop; 
if t> EntryShort and t<ExitShort and  TEST_PTN2(-ptn, P) and dayofweek(date)<>DS  then sellshort  ("ES_S_Krepsys") nCon contracts next bar at lowd(0) of data3 stop;
If marketposition<>0 and barssinceentry> ExitBars*4 then begin
Sell next bar at market;
Buytocover next bar at market;
End;
Setstopcontract;
If mystop>0 then setstoploss(mystop);
If myprofit>0 then setprofittarget(myprofit);

Per quanto riguarda Duane, prima di mettere mano al codice, ho corretto i simboli e verificato se così funzionasse.

Problema risolto. 

Analisi, news e spunti operativi, gratis nella tua inbox ogni domenica mattina.

 

 

Anche noi odiamo lo spam: i tuoi dati sono al sicuro e potrai cancellarti in qualsiasi momento.