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

f4f

翠鸟科
{************************************************* *****************************
* 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);

//************************************************** ****************************
//************************************************** ****************************
//************************************************** ****************************
//************************************************** ****************************
//FINE INDICATORE INIZIO TS
//************************************************** ****************************

SECTION_ENTERLONG:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
enterlong(NextBar,AtOpen);
endif;
END_SECTION

SECTION_EXITLONG:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
exitlong(NextBar,AtOpen);
endif;
END_SECTION


SECTION_ENTERSHORT:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
entershort(NextBar,AtOpen);
endif;

END_SECTION


SECTION_EXITSHORT:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
exitshort(NextBar,AtOpen);
endif;
END_SECTION
 

andgui

Forumer storico
entrambe le versioni sono implementate, con due macro separate :)

Uso VT, ma non so programmare i TS. Ho provato a inserire il listato di cui sopra per avere sul grafico l'immediata visione della situazione.
Provato a guardare per curiosità su diversi TF i report e vedo che mi calcola solo le operazioni short.
Dov'è l'inghippo?

andgui.
 

f4f

翠鸟科
Uso VT, ma non so programmare i TS. Ho provato a inserire il listato di cui sopra per avere sul grafico l'immediata visione della situazione.
Provato a guardare per curiosità su diversi TF i report e vedo che mi calcola solo le operazioni short.
Dov'è l'inghippo?

andgui.


forse un bug
dopo guardo :)
 

GekkoCorp

Forumer storico
Buonasera a tutti, una domandina.
A parità di parametri (moltiplicatore, nm periodi, sottostante e timeframe), SuperTrend viene tracciato su ProRealTime in modo decisamente differente rispetto all'omonimo oscillatore integrato in VT da Paolo Arena. Ho provato a far girare l'ultimo codice VT postato in questo 3d, ma a parte il problema del "long only" già segnalato da andgui, l'oscillatore viene plottato sul grafico allo stesso modo del SuperTrend "ufficiale" insito in VT. Ovvero agli stessi valori. Avevo provato ad utilizzarlo dopo aver letto nei remarks "Codice di Robom1 preso dal Fol e modificato in minima parte solo per renderlo simile alla versione di Prorealtime" ma per l'appunto mi sembra non cambi nulla...
In sintesi: se io ho un TS basato sul SuperTrend e scritto in VT, portandolo in PRT ... i risultati sono completamente diversi a causa del Supertrend... indi mi chiedevo se qualcuno si fosse già confrontato con questo problema. Grazie :)
 

Users who are viewing this thread

Alto