Citazione Originariamente Scritto da Apocalips Visualizza Messaggio
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;
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
# 
# 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