FTSEMIB e altri Indici, Materie Prime (1 Viewer)

xinian70

CROC Analista
Registrato
22 Agosto 2011
Messaggi
19.558
Località
Terra di Mezzo
Il TS ADX/ADM

L’ADX o Average Directional Index
è un ottimo indicatore di medio periodo però
indica solo la forza del trend e non la sua direzione.

Il valore dell’ADX può essere compreso tra 0 e 100. Tipicamente un trend caratterizzato da un ADX al di sotto del 20 è considerato debole, mentre sopra 25 è da considerarsi forte.

Molto più utili gli indicatori +DI (Positive Directional Indicator) ed il -DI (Negative Directional Indicator), considerando la loro media a 14 giorni: +DI14 in verde e -DI14 in rosso.

I loro incroci deteminano la la direzione del trend.

+DI14 > -DI14+FlatZone = LONG
+DI14 < -DI14-Flatzone = SHORT

FLAT nella fascia -Flatzone+Flatzone dell'incrocio

la Flatzone era -10% +10% nelle vecchie versioni , ora è calcolata anche essa in base a dei backtest periodici

L'ADM o Average Daily Movement è un indicatore Intraday basato sulla volatilità

vengono dati ogni giorno 2 entry (Long o Short) e 3 Take Profit (Long e Short)



Operativamente:

si entra long/short se alla chiusura oraria (alle 10, alle 11, ecc) il valore dell’indice è superiore/inferiore all’entry long/short giornaliero
poi
se non arriva il TP xx entro chiusura
se siamo in trend (vedi ADX) si va in over e il giorno dopo si chiude se entra il segnale di reverse
se siamo controtrend (ADX contrario) si chiude in chiusura mercato

per esempio…

al segnale io entro long con 3 posizioni (3 contratti, ecc…)

la 1° pos va in take profit sul TP1 (alla battuta)
la 2° sul TP2 (alla battuta) una volta fatto il TP1 (candela oraria) si alza lo stop loss sull’entry
la 3° sul TP3 (alla battuta) una volta fatto il TP2 (candela oraria) si alza lo stop loss sul TP1

- se ADX è FLAT o LONG, se non ha raggiunto uno dei target si porta la posizione in over…..
il giorno dopo al raggiungimento del TP1 si vendono tutte le posizioni e si aspettano i segnali nuovi, se invece non arriva l’ex-tp1 ma entra l’entry contraria si chiude tutto e si reversa.
- se ADX è SHORT meglio chiuderla in giornata

Varianti intraday

i livelli sono da considerare come resistenze/supporti
una volta superata una resistenza diventa supporto, e viceversa….

per esempio il 21/04/2015



ha fatto
1 – entry long
2 – entry short (stop loss & reverse)
3 – tp1 short
4 – ex-entry short (nuovo entry long)
5 – ex-entry long (nuovo tp1 long)

Calcolo dei livelli intraday

ADM è la media su N-giorni della volatilità giornaliera (Max-Min) , la media a N giorni…
io ora lo calcolo periodicamente in base a dei backtest e lo trovate in alto a sinistra nel grafico , nelle prime versioni del TS usavo il valore di 30 giorni, che è abbastanza valido
,altri usano altri valori..

i livelli di entrata vengono calcolati in questo modo



i livelli di entrata vengono calcolati in questo modo:

la teoria standard dice di usare un break-out level = 0.382 (Price Break) , io ultimamente lo sto calcolando ogni giorno in base alla volatilità

(chiusura giorno precedente + Price Break*ADM Ndays) ci dà l’Entry Long
(chiusura giorno precedente – Price Break*ADM Ndays) ci dà l’Entry Short

DayC = chiusura giorno precedente
C = prezzo corrente

Entry Long = C>((DayC)+((Price Break)*(ADM Ndays)));
Entry Short = C<((DayC)-((Price Break*(ADM Ndays)));

ho notato che però quando aumenta la volatilità il price break posto a 0,382 genera diversi falsi segnali
pertanto dalla versione 3.0 sto sperimentando questa formula…

Price Break=(0,382+0,382*((ADM 10 days-ADM Ndays)/ADM Ndays))


I target invece vengono così calcolati….

Target 1 Long = (0.45*ADM)+Entry Long;
Target 2 Long = (0.95*ADM)+Entry Long;
Target 3 Long = (1.95*ADM)+Entry Long;
Target 1 Short = Entry Short-(0.45*ADM);
Target 2 Short = Entry Short-(0.95*ADM);
Target 3 Short = Entry Short-(1.95*ADM);

-----------------------------------------------------------------------------------

Implementazioni su piattaforme Standard:


ADM v. 2. 0 per Amibroker by Murali krishna

http://www.wisestocktrader.com/indicators/4059-ultimate-volatility-trading-system-v-2.txt


ADM per VisualTrader by Strong

Codice:
{******************************************************************************
* ADM by Strong.
*
* Versione 1 fix 1 del 18/04/2014
*
* Filtro ingressi ATTIVO
*
******************************************************************************}

Var:
newDay(false), // CAMBIO GIORNO
numDay(0),     // STORICO GIORNI PER CALCOLO ADM
lastRange,lastClose,HistoryRange,HistoryClose, // VALORI END OF DAY
num(0),den(0),adm(0),STORICO_ADM(30), // ADM
targetLong(0),targetShort(0), // TARGET X USCITA
stopLossLong(0),stopLossShort(0), // STOPLOSS
flagLong(false),flagShort(false),   // SINGOLA OPERAZIONE GIORNALIERA
buf, // TEMPORANEA
zonaPlotting;

//
// ************************ CALCOLO INDICATORE ADM *****************************
//
newDay=GetValues (days, 1, buf,buf,buf,buf);
if newDay then

  // FLAG PER GESTIRE UNA OPERAZIONE LONG E SHORT AL GIORNO
  flagLong=true;
  flagShort=true;

  lastRange=EOD.R[1];
  lastClose=EOD.C[1];

  num = num + lastRange*lastClose;
  den = den + lastClose;

  // GESTIONE DEL NUMERO DI GIORNI PER IL CALCOLO DELL'INDICATORE
  if numDay >= STORICO_ADM then

    historyRange=EOD.R[STORICO_ADM];
    historyClose=EOD.C[STORICO_ADM];
    num = num - historyRange*historyClose;
    den = den - historyClose;

  endif;

  // CALCOLO ADM
  adm = num/den;

  inc(numDay);

endif;

//
// ************************ LONG ***********************************************
//
if LastBar = false and adm > 0 and flagLong and positionlong = false then

   // FILTRO SUGLI INGRESSI
   //   if (C>H[1] or B[1]) and W and  C > lastclose+ (0.382*adm) then
   if (C > lastclose + (0.5*adm)) then
   //   if C > C[1]+ (0.382*adm) then
     colorbar(green);
      // CancelExitLong("target 0.5");
     enterlong(nextBar,atopen);
     stopLossLong = 0.5 * adm;
     targetLong = adm * 0.5;
     flagLong = false;
    endif;

endif;

SECTION_EXITLONG:

  // STOPLOSS DINAMICO
  //exitlong(NextBar,positionvaluethisbar + targetLong , limit, 3 , "Target 0.5");

  // STOPLOSS STATICO
  //  if C < positionvaluethisbar - stopLossLong then

    //exitlong(nextbar,atopen);
  //endif;

  // USCITA A FINE GIORNATA
  //if t = 1700 then
  //  exitlong(bar,atclose);
  //endif; 

END_SECTION



//
// ************************ SHORT **********************************************
//
if LastBar = false and adm > 0 and flagShort < 1 and positionshort = false then

   // FILTRO SUGLI INGRESSI
    //   if (C < L[1] or W[1]) and B and C < lastclose - (0.382*adm) then
    if (C < lastclose - (0.5*adm)) then
    //if  C < C[1] - (0.382*adm) then
 
     colorbar(red);

      //CancelExitshort("Target 0.5");
     entershort(nextBar,atopen);

     stopLossShort = 0.5 * adm;
     targetShort = adm * 0.5;

     flagSHort=false;

   endif;

endif;

SECTION_EXITSHORT:

  //STOPLOSS DINAMICO
  // exitshort(NextBar, positionvaluethisbar - targetShort, limit, 3, "Target 0.5");

  //STOPLOSS STATICO
  //if C > positionvaluethisbar + stopLossShort then
    //exitshort(nextbar,atopen);
  //endif; 

  // USCITA A FINE GIORNATA
  //if t = 1700 then
  //  exitshort(bar,atclose);
  //endif; 

END_SECTION



//
// ************************ PLOTTING *******************************************
//

// DISEGNA  I VALORI DI INGRESSO SUL GRAFICO PRINCIPALE
PlotChart(lastclose + adm*0.5 , 0, lime, solid, 1);
PlotChart(lastclose - adm*0.5 , 0, red, solid, 1);

PlotChart(lastclose + adm*0.5 + adm*0.45 , 0, green, Dot, 1);
PlotChart(lastclose - adm*0.5 - adm*0.45 , 0, fuchsia, Dot, 1);

PlotChart(lastclose + adm*0.5 + adm*0.95 , 0, green, Dot, 1);
PlotChart(lastclose - adm*0.5 - adm*0.95 , 0, fuchsia, Dot, 1);

PlotChart(lastclose + adm*0.5 + adm*1.95 , 0, green, Dot, 1);
PlotChart(lastclose - adm*0.5 - adm*0.95 , 0, fuchsia, Dot, 1);

// CREA AREA DI PLOTTING
//zonaPlotting = CreateViewport(200, true, true);

// DISEGNA  I VALORI DI CALCOLO SULLA AREA DI PLOTTING (FACOLTATIVO)
//PlotChart(historyRange, zonaPlotting, blue, solid, 1);
//PlotChart(lastRange, zonaPlotting, red, solid, 1);

ADM by Strong. (Modificato da Webb Ellis Settembre 2015)


Codice:
{*************************************** ***************************************
* ADM by Strong. (Modificato da Webb Ellis Settembre 2015)
*
* Versione 1 fix 1 del 18/04/2014
*
* Filtro ingressi ATTIVO
*
**************************************** **************************************}

Var:
newDay(false), // CAMBIO GIORNO
numDay(0), numDay10(0), // STORICO GIORNI PER CALCOLO ADM
lastRange,lastClose,HistoryRange,History Close,historyrange10,historyclose10, // VALORI END OF DAY
num(0),num10(0),den(0),den10(0),adm(0),S TORICO_ADM(26), ADM10(10),DIF(0),
PRICEBREAK(0),pricebreak1(0), // ADM
targetLong(0),targetShort(0), // TARGET X USCITA
stopLossLong(0),stopLossShort(0), // STOPLOSS
flagLong(false),flagShort(false), // SINGOLA OPERAZIONE GIORNALIERA
buf, // TEMPORANEA
zonaPlotting;

//
// ************************ CALCOLO INDICATORE ADM *****************************
//
// AGGIUNGO CALCOLO PRICEBREAK


newDay=GetValues (days, 1, buf,buf,buf,buf);
if newDay then

// FLAG PER GESTIRE UNA OPERAZIONE LONG E SHORT AL GIORNO
flagLong=true;
flagShort=true;

lastRange=EOD.R[1];
lastClose=EOD.C[1];

num = num + lastRange*lastClose;
den = den + lastClose;

num10 = num10 + lastRange*lastClose;
den10 = den10 + lastClose;


// GESTIONE DEL NUMERO DI GIORNI PER IL CALCOLO DELL'INDICATORE
if numDay >= STORICO_ADM then

historyRange=EOD.R[STORICO_ADM]; //adm 26 gg
historyClose=EOD.C[STORICO_ADM];
num = num - historyRange*historyClose;
den = den - historyClose;

endif;

// CALCOLO ADM
adm = num/den;

inc(numDay);



// GESTIONE DEL NUMERO DI GIORNI PER IL CALCOLO DELL'INDICATORE da 10gg
if numDay10 >= adm10 then

historyRange10=EOD.R[adm10]; //adm 10gg
historyClose10=EOD.C[adm10];
num10 = num10 - historyRange10*historyClose10;
den10 = den10 - historyClose10;

endif;

// CALCOLO ADM
adm10 = num10/den10;

inc(numDay10);
Pricebreak = 0.266+(0.266*(adm10-adm)/adm); //per long
Pricebreak1 = 0.382+(0.382*(adm10-adm)/adm); // per short
endif;



//
// ************************ LONG **************************************** *******
//
if LastBar = false and adm > 0 and flagLong and positionlong = false then

// FILTRO SUGLI INGRESSI
// if (C>H[1] or B[1]) and W and C > lastclose+ (0.382*adm) then
//if (C > lastclose + (0.5*adm)) then
// if C > C[1]+ (0.382*adm) then
if (C > lastclose + (pricebreak*adm))
and (t>0959) // si entra dalle 10 in poi
// and (C<lastclose + adm*pricebreak + adm*0.45) //minore del TP1
and C>C[1] then //in crescendo
colorbar(green);
// CancelExitLong("target 0.5");
enterlong(nextBar,atopen);
stopLossLong = 0.5 * adm;
targetLong = adm * 0.5;
flagLong = false;
endif;

endif;

SECTION_EXITLONG:

// STOPLOSS DINAMICO
//exitlong(NextBar,positionvaluethisbar + targetLong , limit, 3 , "Target 0.5");

// STOPLOSS STATICO
// if C < positionvaluethisbar - stopLossLong then

//exitlong(nextbar,atopen);
//endif;

// USCITA A FINE GIORNATA
//if t = 1700 then
// exitlong(bar,atclose);
// endif;

// if C > (lastclose + adm*0.266 + adm*0.95) then //uscita al TP2
// exitlong(bar,atclose);
// endif;
END_SECTION



//
// ************************ SHORT **************************************** ******
//
if LastBar = false and adm > 0 and flagShort < 1 and positionshort = false then

// FILTRO SUGLI INGRESSI
// if (C < L[1] or W[1]) and B and C < lastclose - (0.382*adm) then
//if (C < lastclose - (0.5*adm)) then
//if C < C[1] - (0.382*adm) then
if (C < lastclose - (pricebreak1*adm))
and (t>0959) //oltre le 10
//and (C>(lastclose - adm*pricebreak1 - adm*0.45)) //maggiore del tp1
and C<C[1] then // in decrescita
colorbar(red);

//CancelExitshort("Target 0.5");
entershort(nextBar,atopen);

stopLossShort = 0.5 * adm;
targetShort = adm * 0.5;

flagSHort=false;

endif;

endif;

SECTION_EXITSHORT:

//STOPLOSS DINAMICO
// exitshort(NextBar, positionvaluethisbar - targetShort, limit, 3, "Target 0.5");

//STOPLOSS STATICO
//if C > positionvaluethisbar + stopLossShort then
//exitshort(nextbar,atopen);
//endif;

// USCITA A FINE GIORNATA
//if t = 1700 then
// exitshort(bar,atclose);
//endif;
// uscita per TP1
//if C < (lastclose - adm*0.266 - adm*0.95) then //uscita al TP2
// exitshort(bar,atclose);
// endif;

END_SECTION



//
// ************************ PLOTTING **************************************** ***
//

// DISEGNA I VALORI DI INGRESSO SUL GRAFICO PRINCIPALE
PlotChart(lastclose + adm*pricebreak, 0, lime, solid, 1);
PlotChart(lastclose - adm*pricebreak1, 0, red, solid, 1);

PlotChart(lastclose + adm*pricebreak + adm*0.45 , 0, green, Dot, 1);
PlotChart(lastclose - adm*pricebreak1 - adm*0.45 , 0, fuchsia, Dot, 1);

PlotChart(lastclose + adm*pricebreak + adm*0.95 , 0, green, Dot, 1);
PlotChart(lastclose - adm*pricebreak1 - adm*0.95 , 0, fuchsia, Dot, 1);

PlotChart(lastclose + adm*pricebreak + adm*1.95 , 0, green, Dot, 1);
PlotChart(lastclose - adm*pricebreak1 - adm*1.95 , 0, fuchsia, Dot, 1);

// CREA AREA DI PLOTTING
//zonaPlotting = CreateViewport(200, true, true);

// DISEGNA I VALORI DI CALCOLO SULLA AREA DI PLOTTING (FACOLTATIVO)
//PlotChart(historyRange, zonaPlotting, blue, solid, 1);
//PlotChart(lastRange, zonaPlotting, red, solid, 1);



ADM per ProrealTime by domedome61


Codice:
admn=((high[26]-low[26])+(high[25]-low[25])+(high[24]-low[24])+(high[23]-low[23])+(high[22]-low[22])+(high[21]-low[21])+(high[20]-low[20])+(high[19]-low[19])+(high[18]-low[18])+(high[17]-low[17])+(high[16]-low[16])+(high[15]-low[15])+(high[14]-low[14])+(high[13]-low[13])+(high[12]-low[12])+(high[11]-low[11])+(high[10]-low[10])+(high[9]-low[9])+(high[8]-low[8])+(high[7]-low[7])+(high[6]-low[6])+(high[5]-low[5])+(high[4]-low[4])+(high[3]-low[3])+(high[2]-low[2])+(high[1]-low[1]))/26
El=(close[1]+(0.266*admn))
es=(close[1]-(0.266*admn))
el1=((0.45*admn)+el)
el2=((0.95*admn)+el)
el3=((1.95*admn)+el)
es1=(es-(0.45*admn))
es2=(es-(0.95*admn))
es3=(es-(1.95*admn))


RETURN el ,es,el1,el2,el3,es1,es2,es3



ADM per ProrealTime - TimeFrame Orario - by domedome61


Codice:
AAA=(DHigh(1)-DLow(1))
admn=(AAA[26]+(AAA)[25]+(AAA)[24]+(AAA)[23]+(AAA)[22]+(AAA)[21]+(AAA)[20]+(AAA)[19]+(AAA)[18]+(AAA)[17]+(AAA)[16]+(AAA)[15]+(AAA)[14]+(AAA)[13]+(AAA)[12]+(AAA)[11]+(AAA)[10]+(AAA)[9]+(AAA)[8]+(AAA)[7]+(AAA)[6]+(AAA)[5]+(AAA)[4]+(AAA)[3]+(AAA)[2]+(AAA)[1])/26
AAB=(DCLOSE(1))
El=(AAB+(0.266*admn))
es=(AAB-(0.266*admn))
el1=((0.45*admn)+el)
el2=((0.95*admn)+el)
el3=((1.95*admn)+el)
es1=(es-(0.45*admn))
es2=(es-(0.95*admn))
es3=(es-(1.95*admn))


RETURN el,es,el1,el2,el3,es1,es2,es3

ADM per Tradingview by aldebaran74


Codice:
study("Adm", overlay=true)
gg = input(title="Giorni", type=integer, defval=26, minval=1)
bg = input(title="Barre al giorno", type=integer, defval=9, minval=1)
pb = input(title="Price break", type=float, defval=0.266, minval=0.1)

barre = gg*bg
newbar =  change(time("D")) != 0 ? 1 : 0
adm = (sum ((security(tickerid, "D", high[1])-security(tickerid, "D", low[1]))*newbar, barre)) / gg
//non ho ancora trovato un metodo migiore per far capire che serve un valore per ogni giorno
chiusuraieri = security(tickerid, "D", close[1])
compra = chiusuraieri + adm*pb
vendi = chiusuraieri - adm*pb
plot (compra, color=green, title="LONG", linewidth=2)
plot (vendi, color=red, title="SHORT", linewidth=2)
plot (compra+(0.45*adm), color=green, title='tg1')
plot (compra+(0.95*adm), color=green, title='tg2')
plot (compra+(1.95*adm), color=green, title='tg3')
plot (vendi-(0.45*adm), color=red, title='tg1')
plot (vendi-(0.95*adm), color=red, title='tg2')
plot (vendi-(1.95*adm), color=red, title='tg3')

ADM per T3 Webank by Swing64

Codice:
//periodo = 26

ranges = 0
for i = 1 to periodo
ranges = ranges + (dhigh(i)-dlow(i))
next
ADM=ranges/periodo

EntryShort = dclose(1) - ADM*0.266
TS1 = EntryShort-0.45*ADM
TS2 = EntryShort-0.95*ADM
TS3 = EntryShort-1.95*ADM

EntryLong = dclose(1) + ADM*0.266
TL1 = EntryLong+0.45*ADM
TL2 = EntryLong+0.95*ADM
TL3 = EntryLong+1.95*ADM

return TL3 AS "Long3", TL2 AS "Long2", TL1 AS "Long1",EntryLong AS "Entry Long",EntryShort AS "Entry Short",TS1 AS "Short1",TS2 AS "Short2",TS3 AS "Short3"
-----------------------------------------------------------------------------------

Il TS di medio-lungo periodo (X4)


il CMX o Complex Momentum Index

il CMX o Complex Momentum Index, è un indicatore proprietario che analizza le proprietà fisiche delle armoniche che compongono l’andamento dell’indice.
La formula al momento è segreta.
Rappresenta in un “certo modo” l’andamento ombra dell’indice..



quando CMX supera la linea dello 0 da sotto a sopra l’indice riceve un impulso long (freccia azzurra verso l’alto)

quando CMX supera la linea dello 0 da sopra a sotto l’indice riceve un impulso short (freccia fucsia verso il basso)

Per le inversioni si usa accoppiato all’ X+4 (Ciclo Ombra di medio-lungo periodo)




quando CMX supera verso l’alto X+4 del 15% inversione long di medio-lungo periodo (freccia verde verso l’alto)

tra -15% e + 15% è FLAT (cerchio o elisse color giallo chiaro)

quando CMX supera verso il basso X+4 del 15% inversione short di medio-lungo periodo (freccia rossa verso il basso)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------[/URL]
 
Ultima modifica:

xinian70

CROC Analista
Registrato
22 Agosto 2011
Messaggi
19.558
Località
Terra di Mezzo
FTSEMIB Index – ADX / ADM – TS V. 2.9.1 – Livelli Intraday per il 03/03/17


ADM – Average Daily Movement – Intraday Levels
entrata su close 1H (candela oraria)… se superato il livello indicato


 

xinian70

CROC Analista
Registrato
22 Agosto 2011
Messaggi
19.558
Località
Terra di Mezzo
asia deboole stamattina, fatto il tp1 short

americani che fanno l'entry short..

INDICI – ADM – Segnali Intraday – TF 1H – Aggiornamento – 03/03/2017 08:49:28

 

xinian70

CROC Analista
Registrato
22 Agosto 2011
Messaggi
19.558
Località
Terra di Mezzo
FTSEMIB Index – ADX / ADM – TS V. 2.9.1 – Livelli Intraday per il 06/03/2017


ADM – Average Daily Movement – Intraday Levels
entrata su close 1H (candela oraria)… se superato il livello indicato


 

Users Who Are Viewing This Discussione (Users: 0, Guests: 1)

Alto