Fedeli alle promesse fatte (leggete qui) dedichiamo spazio a un articolo didattico sui trading system. Per mostrare le implementazioni possibili partendo da listati che si possono trovare in rete o, in questo caso, nei libri.

Abbiamo preso come base di partenza il listato 3Averages che trovate in “Trading system vincenti” sia in formato per Multicharts che per Visual Trader. Abbiamo cambiato le uscite originali con questo listato che incorpora il chandelier exit e uscite temporizzate. Le uscite spesso possono completamente stravolgere i risultati di una strategia (nel bene o nel male) e sono quindi uno dei 4 ambiti di ricerca nella progettazione di un trading system.

Alleghiamo i risultati su un time frame a 60 minuti del Ftsemib comprensivo di 8 € ad eseguito di spese. Il trading system non ha subito ottimizzazioni. Ogni lettore potrà sbizzarrirsi a cercare di migliorare il trading system ed eventualmente utilizzare queste uscite (o le entrate di partenza) mixandole con altre alla ricerca del “suo” trading system.

//******************* Variabili uscite Chandelier by ???  **************************

input: MoltiplicatoreLONG(3), MoltiplicatoreSHORT(3), PERIODO_ATR(5);
Var: STOPLOW(0), STOPUP(0), STOP_LOSS_LONG(0), STOP_LOSS_SHORT(0), ColorChand(0), ixv(0);

//*****************3Averages from Trading system vincenti by Enrico Malverti ********************

Var: Media1(6), Media2(12), Media3(24);
Var: Length(5);
Var: Length2(5);
Var: Mov1(0), Mov2(0), Mov3(0), OrderPrice(0), OrderPrice2(0);

Mov1 = Mov(C, Media1, e);
Mov2 = Mov(C, Media2, e);
Mov3 = Mov(C, Media3, e);

If crossover(Mov1, Mov2) AND Mov2 > Mov3 then
enterlong(nextbar, atopen);
endif;

If CrossUnder(Mov1, Mov2) AND Mov2 < Mov3 then
entershort(nextbar, atOpen);
endif;

If Mov1 < Mov2 then
exitlong(nextbar, atopen);
endif;

If Mov1 > Mov2 then
exitshort(nextbar, atopen);
endif;

//******** Uscite temporizzate****************

if positionmoney < 200 and positionmoney > -200 and BarSinceInverted(PositionDir=0) >= 5 then
if positiondir = 1 then exitlong(nextbar, atopen);
endif;
if positiondir = -1 then exitshort(nextbar, atopen);
endif;
endif;

//*********** Costruzione condizioni di Stop Chandelier *********************

//Definizione stop posizioni long
STOPLOW = C -(MoltiplicatoreLONG * ATR(C, PERIODO_ATR));
//Definizione stop posizioni short
STOPUP = C + (MoltiplicatoreSHORT * ATR(C, PERIODO_ATR));

//************** Calcolo trailing Stop Chandelier ***************

if positionlong=false then
STOP_LOSS_LONG=STOPLOW;
endif;

if positionshort=false then
STOP_LOSS_SHORT=STOPUP;
endif;

if positionlong then
if STOPLOW<STOP_LOSS_LONG then
STOP_LOSS_LONG=STOP_LOSS_LONG[1];
ColorChand=green;
else
STOP_LOSS_LONG=stoplow;
endif;
endif;

if positionshort then
if stopup>STOP_LOSS_SHORT then
STOP_LOSS_SHORT=STOP_LOSS_SHORT[1];
ColorChand=red;
else
STOP_LOSS_SHORT=stopup;
endif;
endif;

if positiondir<>1 and positiondir <>-1 then
ColorChand=moneygreen;
endif;

//************************ USCITE *****************************

if C < STOP_LOSS_LONG then
exitlong(nextbar,atopen,stop,0,”CHANDELIER STOP LONG”);
endif;

if C > STOP_LOSS_SHORT then
exitshort(nextbar,atopen,stop,0,”CHANDELIER STOP SHORT”);
endif;
{//SOTTOMODULO PER ATTIVAZIONE DIRETTA CHANDELIER IN FORMAZIONE DI BARRA
if positionlong then
//installstoploss(inval,STOP_LOSS_LONG[1],”CHANDELIER STOP”);
endif;
if positionshort then
//installstoploss(inval,STOP_LOSS_SHORT[1],”CHANDELIER STOP”);
endif;
//FINE SOTTOMODULO PER ATTIVAZIONE DIRETTA CHANDELIER IN FORMAZIONE DI BARRA}
//******************* Grafici ************************

ixv = CreateViewport(300, true, true);
plotchart(STOP_LOSS_LONG,0,ColorChand,solid,2);
plotchart(STOP_LOSS_SHORT,0,ColorChand,solid,2);
plotchart(stoplow,0,moneygreen,solid,1);
plotchart(stopup,0,moneygreen,solid,1);

Per approfondimenti:

Trading System Vincenti