-
01-11-13, 11:51 #1
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
PERIODO VARIABILE DINAMICO: vogliamo collaborare per crearcelo assieme ?
Buongiorno a tutti,
questo post è aperto alle idee di tutti gli utenti, programmatori e non !!!
-
Volete suggerire un'idea solo a parole, ma non sapete programmarla.
L'importante è che riusciate a descriverla non in modo astratto, ma in modo concreto.
Poi se ci riusciamo proveremo a tradurre in linee di codice la vostra idea
(compatibilmente con il poco tempo libero a disposizione e le limitate capacità di programmazione !!!).
-
Il TS basato su breakout dinamico proposto da Thalos mi ha dato lo spunto per questa idea.
Il sogno penso di ogni trader è l'aver a disposizione degli indicatori in grado di adeguarsi alla volatilità
del mercato, in modo da accelerare e quindi ridurre il ritardo quando il mercato è veloce,
e al contrario di rallentare nelle fasi laterali per ridurre i falsi segnali.
-
Chiaramente sto scoprendo l'acqua calda, infatti sono decenni che analisti e ricercatori con i controc...
ci stanno lavorando fornendoci tutta quella lunga lista di indicatori che trovate in beeTrader.
Volando molto più basso, senza pretendere di essere i Wilder della situazione,
qui ognuno potrà esprimere la propria idea o apportare il proprio bagaglio tecnico,
anche riportato da riviste o libri. Qui vale copiare ,modificare e migliorare.
L'importante è ottenere qualcosa potenzialmente utile per il nostro trading !!!
E senza primi della classe !!!
-
Tanto per cominciare ho allegato una funzione, come detto, ispirata da Thalos e leggermente modificata.
Questa permette di calcolare un periodo che varia tra un minimo ed un massimo, in base alla deviazione
standard di close n-periodi. Ho invertito il segno (1-DeltaHistVol) per fare in modo che il periodo si accorciasse
con il crescere della volatilità, e viceversa si allungasse nelle fasi più laterali.
-
Seguono il plot del periodo come indicatore tanto per visualizzare graficamente, ed un esempio di utilizzo in una EMA.
Purtroppo fino alla prossima release non sarà funzionante, perché EMA non può ricevere come vettore un'altra funzione.
-
Saluti
Massimo
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465# PERIODO_DINAMICO Funzione
#
# Ritorna un valore di periodo variabile compreso tra un valore minimo e massimo.
# E' calcolato in base alla deviazione standard Close n-periodi
INPUTS
:
@MaxPeriodo(60), @MinPeriodo(5), @PeriodoVolatilita(30)
SET
HistVol =
SDV
(
CLOSE
,
@PeriodoVolatilita , 1, SIMPLE)
SET
YestHistVol =
REF
(HistVol,
1
)
SET
DeltaHistVol1 = (HistVol -
REF
(HistVol,
1
)) / HistVol
SET
DeltaHistVol =
MINOF
(DeltaHistVol1,
0.1
)
SET
vPeriodoDinamico = BARLOOP (
20
,
1
,
MULTIPLY
, (
1
- DeltaHistVol),
@MinPeriodo, @MaxPeriodo)
SET
PERIODO_DINAMICO = FLOOR(vPeriodoDinamico)
#
# Indicatore che plotta il valore restituito dalla funzione PERIODO_DINAMICO
#
INPUTS
:
@MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
#
SET
PLOT1
= PERIODO_DINAMICO(
@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
#
# Indicatore che in futuro potrà plottare una EMA con periodo variabile dinamico.
# Fino alla prossima release non funzionante, perché EMA non può ricevere vettore A come parametro !!!
INPUTS
:
@MaxPeriodo(60), @MinPeriodo(20), @PeriodoVolatilita(30)
#
SET
A = PERIODO_DINAMICO(
@MaxPeriodo, @MinPeriodo, @PeriodoVolatilita)
SET
B =
EMA
(
CLOSE
, A)
PRINT
(A)
SET
PLOT1
= B
Ultima modifica di maxmax68; 01-11-13 alle 12:07
-
02-11-13, 19:45 #2
- Data Registrazione
- Apr 2010
- Messaggi
- 800
Il BreakOut dinamico e' la frontiera da superare a cui tutti vorremmo ambire, vorrebbe dire riuscire ad avere una percentuale altissima di Trade vincenti, perché sarebbe l' unico vero filtro alle fasi laterali che danno al Trading la percentuale di perdita che purtroppo ad ora e' inevitabile..
L' idea e' quella di riuscire a chiudere in un Canale virtuale riconoscibile dal TS la fase laterale...
Io ci ho tentato anche modulando insieme piu' oscillatori, e per ora l' unico che mi ha dato dei risultati appena appena convincenti e' la combinazione di due Supertrend con diverso settaggio...
Mi spiego meglio, il supertrend da solo e' un indicatore Trend Follower, ma se ne mettiamo due sovrapposti con settaggi diversi creano un canale dove all' interrno dovrebbero restare ed esserci i falsi segnali...
La combinazione del BreakOut Dinamico con i due Supertrend potrebbe portare a una piacevole sorpresa...
In settimana lo Studio meglio e provo a metterlo in esecuzione...
Da provare..Ultima modifica di Thalos; 02-11-13 alle 19:47
--- Trend my Friend ---
-
02-11-13, 20:09 #3
-
02-11-13, 21:35 #4
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao Thalos,
quella dei supertrend è un'idea interessante.
Forse sarebbe ancora più interessante riuscire in qualche modo a
personalizzare l'indicatore supertrend in modo da renderlo dinamico.
Non è che qualcuno potrebbe postare il codice dell'indicatore supertrend,
in modo da riscrivercelo a modo nostro ???
Saluti
Massimo
PS Grazie a te Tiziano.
-
02-11-13, 21:53 #51234567891011121314151617181920212223242526272829303132333435363738394041
codice
supertrend
in easylanguage:
inputs
:
ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), STrend(NumericRef);
vars:
ATR
(
0
),
avg
(
0
),
dn(
0
),
up
(
0
),
trend
(
1
),
flag(
0
),
flagh(
0
),
ST
(
0
),
hl(
0
);
hl = Highest(
High
, ATRLength) - Lowest(
Low
, ATRLength);
ATR
= XAverage(hl, ATRLength);
avg
= (XAverage(
high
, Strength) + XAverage(
low
, Strength))/
2
;
up
=
avg
+
ATR
;
dn =
avg
-
ATR
;
if
c >
up
[
1
]
and
c > Highest(
High
, Strength)[
1
] then
trend
=
1
else
if
c < dn[
1
]
and
c < Lowest(
Low
, Strength)[
1
] then
trend
= -
1
;
if
trend
<
0
and
trend
[
1
] >
0
then flag
=
1
else flag
=
0
;
if
trend
>
0
and
trend
[
1
] <
0
then flagh =
1
else flagh =
0
;
if
trend
>
0
and
dn < dn[
1
] then dn
=
dn[
1
];
if
trend
<
0
and
up
>
up
[
1
] then
up
=
up
[
1
];
if
flag =
1
then
up
=
avg
+
ATR
;
if
flagh =
1
then dn =
avg
-
ATR
;
if
trend
=
1
then
ST
= dn else
ST
=
up
;
SuperTrend
=
ST
;
STrend =
trend
;
....non si desidera ciò che è facile ottenere (Ovidio)....
-
02-11-13, 23:13 #6
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Grazie Apo,
provo a tradurlo in EasyScript, se ci riesco.
Saluti
Massimo
-
03-11-13, 10:19 #7
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Poche semplici righe di EasyLanguage e EasyScript finisce al tappeto.
-
Per il momento non sono ancora riuscito a completare la traduzione del codice,
e credo che dovremo aspettare che vengano aggiunte le nuove funzionalità di BARLOOP.
Infatti quello che manca è la possibilità di scrivere:
vUP = MINOF(vUP , REF(vUP ,1)) e
vDN = MAXOF(vDN , REF(vDN ,1))
per ottenere la parte orizzontale del SuperTrend.
-
Ho comunque cominciato a tradurre parzialmente il codice, e come pensavo,
anche qui abbiamo a che fare con dei parametri che potrebbero essere ottimizzati in modo dinamico.
In particolar modo vATRmult che è il numero di ATR che viene sommato o sottratto alla nostra media
vAVG, determinando la distanza dell'indicatore SuperTrend dai prezzi,
ma anche vStrength, che è il periodo della media vAVG.
-
Segue indicatore che li plotta per visualizzare graficamente.
Saluti
Massimo
123456789101112131415161718#
# Parte iniziale del codice SuperTrend,
# in attesa delle nuove funzioni BARLOOP di EasyScript
#
#
INPUTS
:
@ATRlenght(14), @ATRmult(1.5), @Strength(10)
#
SET
H =
MAX
(
HIGH
,
@ATRlenght)
SET
L =
MIN
(
LOW
,
@ATRlenght)
SET
HL = H - L
SET
vATR =
EMA
(HL ,
@ATRlenght)
SET
vAVG = (
EMA
(
HIGH
,
@Strength) + EMA(LOW, @Strength))/2
SET
vUP = vAVG + (
@ATRmult * vATR)
SET
vDN = vAVG - (
@ATRmult * vATR)
#
SET
PLOT1
= vUP
SET
PLOT2
= vDN
SET
PLOT3
= vAVG
-
03-11-13, 11:06 #8
- Data Registrazione
- Jan 2011
- Località
- Genova
- Messaggi
- 1,306
non conosco easylanguage, quando si scrive
if trend < 0 and trend[1] > 0 then flag=1 else flag=0;
si intende che si cicla per ogni barra riferendosi al valore della barra precedente identicata con [1] ?
Detta in un altro modo: supertrend si calcola in modo vettoriale o no?
-
03-11-13, 11:58 #9
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
-
03-11-13, 13:35 #10
- Data Registrazione
- Jan 2011
- Località
- Genova
- Messaggi
- 1,306
immaginavo, bravi, buon caso di studio per far implementare nuove funzioni. Credo che con il barloop attuale non se ne possa uscire, sono curioso di vedere se riuscite a scriverlo senza IF-THEN-ELSE
Io ho due codici del supertrend ma nessuno dei due è scritto in maniera elegante tale da essere istruttivo o di aiuto per uscire dalla difficoltà del momento
Ottima sceltaUltima modifica di BMM; 03-11-13 alle 13:39