Programmazione Visual Trader Supertrend per Visual trader (simile a Prorealtime) (1 Viewer)

riccardo69

Forumer attivo
A grande richiesta ecco il codice del Supertrend!
Pensavo che la formula del Supertrend fosse segreta e non riuscivo a trovarla, poi mi hanno fatto vedere che Robom1 aveva già fatto tutto in Visual Trader.
Io ho solo dato un colpo di colore e rinominato un paio di variabili.
Ringraziate tutti Robom1!
Codice:
{******************************************************************************
* SUPERTREND by ender85
* Codice di Robom1 preso dal Fol e modificato in minima parte
* solo per renderlo simile alla versione di Prorealtime
* Ringraziamenti: Robom1, Damien e Ronzy
******************************************************************************}
Var: volatilita(0),
prezzomediano(0),
bandaup(0),
bandadn(0),
trend(0),
supertrend(0),
colore(0),
inizio(0);

input: Moltiplicatore(3),
Nm_periodi(100);
//******************************************************************************
//CALCOLO DELLA VOLATILITA'
//La volatilità è calcolata sull'ATR di 100 periodi

volatilita = ATR(C, Nm_periodi);

//******************************************************************************
//CALCOLO DEL PREZZO MEDIANO
//Il prezzo mediano è rappresentato da massimo + minimo diviso due

prezzomediano = (H + L) / 2;

//******************************************************************************
//CALCOLO DELLE BANDE
//la banda up è corrispondente al prezzomediano + moltiplicatore x atr
//la banda down è corrispondente al prezzo mediano - moltiplicatore x atr
//Nota il moltiplicatore standard è solitamente impostato a 3

bandaup = prezzomediano + (moltiplicatore * volatilita);
bandadn = prezzomediano - (moltiplicatore * volatilita);

//******************************************************************************
//INIZIALIZZAZIONE TREND A 1 CON ESAME PRIMA BARRA (non necessario se iniz. la var.

if inizio = 0 then trend = 1; inizio = 1; endif;

//******************************************************************************
//CASO 1
//Se il trend = 1 e il close è inferiore alla banda down allora il trend
//diventa negativo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda superiore in quanto il trend
//è diventato negativo.

if trend = 1 and
C < bandadn[1]
then
trend = -1;
bandaup = prezzomediano +
(moltiplicatore * volatilita);
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 2
//Se il trend = 1 e il close è maggiore o uguale della banda down e la bandadown
//è inferiore alla bandadown precedente, il trend rimane sempre positivo ma
//la bandadown rimane sempre allo stesso livello e non scende.
//Il concetto principale è che nel caso in cui il trend è positivo una volta
//determinata la prima volta la bandadown, quest'ultima puo' solo salire ad
//inseguimento (in una sorta di trailing stop).

if trend = 1 and
C >= bandadn[1] and
bandadn < bandadn[1]
then
bandadn = bandadn[1];
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 3
//Se il trend = 1 e il close è maggiore o uguale della banda down e la banddown
//è maggiore della bandadown precedente, il trend rimane sempre positivo ma
//la supertrend assume lo stesso livello della bandadown in maniera che il
//limite della banda inferiore si alza ad inseguimento
if trend = 1 and
C >= bandadn[1] and
bandadn >= bandadn[1]
then
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 4
//Se il trend è negativo e il close risulta maggiore della bandaup allora il
//trend diventa positivo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda inferiore in quanto il trend è
//diventato positivo

if trend =-1 and
close > bandaup[1]
then
trend = 1;
bandadn = prezzomediano -
(moltiplicatore * volatilita);
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 5
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta maggiore della bandaup precedente allora il trend rimane
//sempre negativo e la bandaup rimane sempre allo stesso livello.
//Il concetto è che se il trend è negativo la banda superiore, una volta fissata
//puo' solo scendere ad inseguimento come in una sorta di trailing stop.

if trend =-1 and
close <= bandaup and
bandaup > bandaup[1]
then
bandaup = bandaup[1];
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 6
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta inferiore della banda precedente allora la supertrend assume
//il nuovo valore della bandaup

if trend =-1 and
close <= bandaup and
bandaup <= bandaup[1]
then
supertrend = bandaup;
endif;

//******************************************************************************
//Colora il Supertrend a seconda che il trend sia positivo (1) o negativo (-1)

if trend = 1 then
colore= green;
else
colore= red;
endif;

//******************************************************************************
//Disegno il Supertrend
PlotChart(supertrend, 0, colore, solid, 3);


ciao ander, grazie del lavoro svolto

non so se è successo anche ad altri ma copiando questo codice e incollandolo sulla visual trader mi da un errore "Verifica Formula ... Errore
Errore di Sintassi in Riga n° 58: La Variabile "_F2" non è stata assegnata." mi puoi aiutare a risolverlo?
 

ender85

Forumer attivo
ciao ander, grazie del lavoro svolto

non so se è successo anche ad altri ma copiando questo codice e incollandolo sulla visual trader mi da un errore "Verifica Formula ... Errore
Errore di Sintassi in Riga n° 58: La Variabile "_F2" non è stata assegnata." mi puoi aiutare a risolverlo?
Non esiste la variabile _F2, per cui molto probabilmente è un errore del copia e incolla. Come ti dice il debugger il problema è alla riga 58 oppure poco più sù, controlla che non sia colpa di alcuni commenti che non sono ben commentati a causa di alcuni "a capo" che si sono generati nel trasporto.

Ciao,
ender non ander :D
 

riccardo69

Forumer attivo
Non esiste la variabile _F2, per cui molto probabilmente è un errore del copia e incolla. Come ti dice il debugger il problema è alla riga 58 oppure poco più sù, controlla che non sia colpa di alcuni commenti che non sono ben commentati a causa di alcuni "a capo" che si sono generati nel trasporto.

Ciao,
ender non ander :D

:wall: sono una capra :D pure i nomi storpio ( ti svelo un segreto, alle elementari ho litigato di brutto con la maestra e poi alle medie ho brucciato il libro di grammatica )

torno all'argomento, io ho tolto tutti i commenti e lasciato il codice ma il problema si ripresenta.. ti ricopio il codice e allego un'immagine

HTML:
Var: volatilita(0),
prezzomediano(0),
bandaup(0),
bandadn(0),
trend(0),
supertrend(0),
colore(0),
inizio(0);
input: Moltiplicatore(3), Nm_periodi(100);
volatilita = ATR(C, Nm_periodi);
prezzomediano = (H + L) / 2;
bandaup = prezzomediano + (moltiplicatore * volatilita);
bandadn = prezzomediano - (moltiplicatore * volatilita);
if inizio = 0 then trend = 1; inizio = 1; endif;
if trend = 1 and C < bandadn[1] then
trend = -1;
bandaup = prezzomediano +(moltiplicatore * volatilita);
supertrend = bandaup;
endif;
if trend = 1 and C >= bandadn[1] and bandadn < bandadn[1]then
bandadn = bandadn[1];
supertrend = bandadn;
endif;
if trend = 1 and C >= bandadn[1] and bandadn >= bandadn[1] then
supertrend = bandadn;
endif;
if trend =-1 and close > bandaup[1] then trend = 1;
bandadn = prezzomediano - (moltiplicatore * volatilita);
supertrend = bandadn;
endif;
if trend =-1 and close <= bandaup and bandaup > bandaup[1] then
bandaup = bandaup[1];
supertrend = bandaup;
endif;
if trend =-1 and close <= bandaup and bandaup <= bandaup[1] then
supertrend = bandaup;
endif;
if trend = 1 then
colore= green;
else
colore= red;
endif;
PlotChart(supertrend, 0, colore, solid, 3);
 

Allegati

  • Immagine.jpg
    Immagine.jpg
    117,5 KB · Visite: 2.450

ender85

Forumer attivo
:wall: sono una capra :D pure i nomi storpio ( ti svelo un segreto, alle elementari ho litigato di brutto con la maestra e poi alle medie ho brucciato il libro di grammatica )

torno all'argomento, io ho tolto tutti i commenti e lasciato il codice ma il problema si ripresenta.. ti ricopio il codice e allego un'immagine

HTML:
Var: volatilita(0),
prezzomediano(0),
bandaup(0),
bandadn(0),
trend(0),
supertrend(0),
colore(0),
inizio(0);
input: Moltiplicatore(3), Nm_periodi(100);
volatilita = ATR(C, Nm_periodi);
prezzomediano = (H + L) / 2;
bandaup = prezzomediano + (moltiplicatore * volatilita);
bandadn = prezzomediano - (moltiplicatore * volatilita);
if inizio = 0 then trend = 1; inizio = 1; endif;
if trend = 1 and C < bandadn[1] then
trend = -1;
bandaup = prezzomediano +(moltiplicatore * volatilita);
supertrend = bandaup;
endif;
if trend = 1 and C >= bandadn[1] and bandadn < bandadn[1]then
bandadn = bandadn[1];
supertrend = bandadn;
endif;
if trend = 1 and C >= bandadn[1] and bandadn >= bandadn[1] then
supertrend = bandadn;
endif;
if trend =-1 and close > bandaup[1] then trend = 1;
bandadn = prezzomediano - (moltiplicatore * volatilita);
supertrend = bandadn;
endif;
if trend =-1 and close <= bandaup and bandaup > bandaup[1] then
bandaup = bandaup[1];
supertrend = bandaup;
endif;
if trend =-1 and close <= bandaup and bandaup <= bandaup[1] then
supertrend = bandaup;
endif;
if trend = 1 then
colore= green;
else
colore= red;
endif;
PlotChart(supertrend, 0, colore, solid, 3);

Ho capito (dall'immagine), non è colpa di nessuno, ora ti spiego:
Da quando abbiamo richiesto in molti il supertrend al mitico Paolo Arena, lui l'ha integrato in VT, per cui la stringa "supertrend" è diventata una funzione (vedi che si colora di blu).
Il codice qui presente invece è stato pubblicato molto prima e si crea da solo la funzione di supertrend. Per cui per utilizzare il codice da me postato bisogna cambiare tutte le parole "supertrend" (con la funzione sostituisci) in un qualunque altro nome, in questa maniera non si va a richiamare la funzione integrata in VT.
Oppure puoi smettere di usare questo codice e leggiti come usare la funzione del supertrend già integrata in VT nell' help della sintassi.
La funziona integrata è sicuramente più veloce nell'elaborazione, questo codice però ti permette di avere una base per creare tuoi indicatori personalizzati sulla base del supertrend, io l'ho sto molto utilizzando appunto per questi usi.

Buon WE
 

riccardo69

Forumer attivo
Ho capito (dall'immagine), non è colpa di nessuno, ora ti spiego:
Da quando abbiamo richiesto in molti il supertrend al mitico Paolo Arena, lui l'ha integrato in VT, per cui la stringa "supertrend" è diventata una funzione (vedi che si colora di blu).
Il codice qui presente invece è stato pubblicato molto prima e si crea da solo la funzione di supertrend. Per cui per utilizzare il codice da me postato bisogna cambiare tutte le parole "supertrend" (con la funzione sostituisci) in un qualunque altro nome, in questa maniera non si va a richiamare la funzione integrata in VT.
Oppure puoi smettere di usare questo codice e leggiti come usare la funzione del supertrend già integrata in VT nell' help della sintassi.
La funziona integrata è sicuramente più veloce nell'elaborazione, questo codice però ti permette di avere una base per creare tuoi indicatori personalizzati sulla base del supertrend, io l'ho sto molto utilizzando appunto per questi usi.

Buon WE

Ok risolto, cambiando il nome tutto funziona,
In ogni caso ho seguito il tuo consiglio usando i valori del codice ho settato la funzione super trand di visual trader, vedrò di usarlo come uno dei filtri per la direzionalità del mercato.

griazie anche del consiglio di lettura del manuale, ( già fatto, letto, ma non serve solo leggere, alcune volte un sugerimento da un guru è più profiquo).

Ma quanto mi piace sto forum, si impara più che a scuola hihi
 
Partendo da quanto indicato da ender85 ho adattato il listato in probuilder....magari era già stato postato, ma nel dubbio...

volatilita = AverageTrueRange[Periodo](close)
prezzomediano = MedianPrice
bandaup = prezzomediano + (moltiplicatore * volatilita)
bandadn = prezzomediano - (moltiplicatore * volatilita)
Once trend = 1
IF trend = 1 AND Close < bandadn[1] THEN
trend = -1
supertrendM = bandaup
ENDIF
IF trend = 1 AND Close >= bandadn[1] AND bandadn < bandadn[1] THEN
bandadn = bandadn[1]
supertrendM = bandadn
ENDIF
IF trend = 1 AND Close >= bandadn[1] AND bandadn >= bandadn[1] THEN
supertrendM = bandadn
ENDIF
IF trend = -1 AND Close > bandaup[1] THEN
trend = 1

supertrendM = bandadn
ENDIF
IF trend = -1 AND Close <= bandaup and bandaup > bandaup[1] THEN
bandaup = bandaup[1]
supertrendM = bandaup
ENDIF
IF trend = -1 AND Close <= bandaup AND bandaup <= bandaup[1] THEN
supertrendM = bandaup
ENDIF


RETURN supertrendM

Il grafico coincide pari pari alla funzione già presente in default, quindi presumo che funzichi
:ciao:
 

ender85

Forumer attivo
Partendo da quanto indicato da ender85 ho adattato il listato in probuilder....magari era già stato postato, ma nel dubbio...

Il grafico coincide pari pari alla funzione già presente in default, quindi presumo che funzichi

Non avevo mai fatto questo test, grazie.

Cmq dopo oltre un anno posso dire traquillamente che il supertrend è un ottimo trailing delle posizioni aperte.
Usarlo come indicatore di trend è una fesseria :D
All'inizio del mio approccio ai ts avevo il problema che non riuscivo a trovare un buon punto di uscita.
Il concetto che sta dietro al supertrend è: un trailing profit adattivo alla volatilità.
Il supertrend indica il miglior punto di uscita dal punto di vista concettuale.
 

f4f

翠鸟科
Non avevo mai fatto questo test, grazie.

Cmq dopo oltre un anno posso dire traquillamente che il supertrend è un ottimo trailing delle posizioni aperte.
Usarlo come indicatore di trend è una fesseria :D
All'inizio del mio approccio ai ts avevo il problema che non riuscivo a trovare un buon punto di uscita.
Il concetto che sta dietro al supertrend è: un trailing profit adattivo alla volatilità.
Il supertrend indica il miglior punto di uscita dal punto di vista concettuale.


grazie Enders del listato .... e ancor più del suggerimento d'utilizzo ;);)

supertrend in VB finito e credo funzionante, problemi di collegamento al mio main PC mi han bloccato dal postarlo
ma oggi lo invio :):):)
ancora una beta, in due versioni :wall::wall::wall:
il TS allegato è ancora non-operativo :rolleyes::rolleyes:
 

f4f

翠鸟科
mi scuso, ma sono di corsa
allego il file, senza spiegazioni :help::help::help:
ogni domanda è gradita e risponderò appena possibile :)


due macro, una col codice di Enders e una col codice di Robom
i risultati sono identici ( ho verificato puntualmente) tranne in alcuni casi
temo che ci sia un bug nella macro supertrendEnders, dovuto al passaggio al codice con gli array

in rosso, le colonne con una bozza MOLLLTO PRIMITIVA del ts relativo :help:

grazie per ogni aiuto :):)
 

Allegati

  • SUPERTREND ENDERS 4 atr=100.xls
    831 KB · Visite: 657

Eomund

Forumer attivo
Premesso che sono piuttosto un caprone con excel e vba e che ti faccio i miei più vivi complimenti, avrei una domandina. Ho provato a cambiare i dati con quelli di fiat, così per vedere l'effetto che faceva: pare che la supertrend del foglio dia solo numeri interi come risultato, rendendolo piuttosto inutilizzabile con azioni. Ma anche, per esempio, col sep. E' voluta la cosa? Sono io che sbaglio qualcosa? Grazie ed ancora complimenti :)
 

Users who are viewing this thread

Alto