Programmazione Prorealtime supertrend indicator (1 Viewer)

Salve a tutti.Ho il codice dell'utilissimo 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;

C'è qualche anima pia che riesca a tradurlo per prorealtime?
Grazie
 

tex65

Forumer storico
Salve a tutti.Ho il codice dell'utilissimo supertrend in easylanguage:
C'è qualche anima pia che riesca a tradurlo per prorealtime?
Grazie

ne ho sentito parlare molto bene da Enrico Malverti in uno dei suoi corsi gratuti, è uno di quelli che utilizza, pero' ha detto che va molto bene su time-frame >= 30 min., non inferiori, e funziona bene anche sul giornaliero. Se non chiedo troppo a a quelli piu' bravi, anche qualche traduzione in lingua italiana per poterlo riscrivere in excel, se possibile.
grazie
 
Ultima modifica:

ender85

Forumer attivo
C'è qualche anima pia che riesca a tradurlo per prorealtime?
Grazie

Prorealtime ha già al suo interno il supertrend codificato, non c'è bisogno di codificarlo a mano.

Codice:
mysupertrend = SuperTrend[3,100]

IF NOT LONGONMARKET THEN
    IF Close>mysupertrend THEN
        BUY 1 SHARES AT MARKET REALTIME
    ENDIF
ENDIF

IF NOT SHORTONMARKET THEN
    IF  Close<mysupertrend THEN
        SELLSHORT 1 SHARES AT MARKET REALTIME
    ENDIF
ENDIF
 

reef

...
Non conosco easylanguage, ma a prima vista mi pare ci siano delle incoerenze:
1. STrend è definita come input, ma poi nel codice è un output
2. ATRmult è definita come input, ma non compare nel codice

Comunque, se interessa, ho fatto una velocissima traduzione Amibroker, NON TESTATA. Da provare...

Codice:
hl = HHV(H, ATRLength) - LLV(L, ATRLength);
ATRi = AMA( hl, 2 / (ATRLength + 1 ) );
Avg = (AMA( H, 2 / (Strength + 1 ) ) + AMA( L, 2 / (Strength + 1 ) ) )/2;
up = Avg + ATRi; 
dn = Avg - ATRi; 

trend=IIf(C > Ref(up,-1) AND C > Ref(HHV(High, Strength),-1),1,IIf(C < Ref(dn, -1) AND C < Ref(LLV(Low, Strength),-1),-1,0));

flag = IIf (trend < 0 AND Ref(trend,-1) > 0, 1, 0); 
flagh= IIf (trend > 0 AND Ref(trend,-1) < 0, 1, 0); 

dn = IIf (trend > 0 AND dn < Ref(dn,-1), Ref(dn,-1), dn);
up = IIf (trend < 0 AND up > Ref(up,-1), Ref(up,-1), up);

up = IIf (flag == 1, Avg + ATRi, up); 
dn = IIf (flagh == 1, Avg - ATRi, dn); 

SuperTrend = IIf (trend == 1, dn, up);
//STrend = trend; 
STrend = ValueWhen(trend!=0, trend); 

Plot(C, "Close", colorBlue, styleLine);
Plot(SuperTrend, "SuperTrend", colorOrange, styleDashed);
Plot(STrend, "STrend", colorGreen, styleLine|styleOwnScale);
 

ender85

Forumer attivo
Ciao Ender, l'avevi già anche per Ami?
Si, però la versione pubblicata al primo post non è quella da cui sono partito io: http://www.investireoggi.it/forum/s...er-simile-prorealtime-vt42498.html#post918074

Eccoti il codice,
Codice:
moltiplicatore = 3;//Optimize("Moltiplicatore",2,1,3,1);
periodo =100;// Optimize("per",200,50,200,5);
SetBarsRequired(periodo);//Disabilito il QuickAFL
SetTradeDelays(1,1,1,1);
SetPositionSize(1,4);
//PositionSize=50000;
BuyPrice = ShortPrice = SellPrice = CoverPrice = Open;

prezzomediano = ( High + Low ) / 2;
volatilita = ATR(periodo); 
bandaup = prezzomediano + ( moltiplicatore * volatilita );
bandadn = prezzomediano - ( moltiplicatore * volatilita );
trend = 1;
sp=0;

for ( i = periodo+1; i < BarCount; i++ )
{
    trend[i]=trend[i-1];
    if ( trend[i] == 1 AND Close[i] < bandadn[i-1] )
    {
        trend = -1;
        bandaup[i] = prezzomediano[i] +( moltiplicatore[i] * volatilita[i] );
        sp[i] = bandaup[i];
    }



    if ( trend[i] == 1 AND Close[i] >= bandadn[i-1] AND bandadn[i] < bandadn[i-1] )
    {
        bandadn[i] = bandadn[i-1];
        sp[i] = bandadn[i];
    }


    if (trend[i]== 1 AND Close[i] >= bandadn[i-1] AND bandadn[i] >= bandadn[i-1])
    {
        sp[i] = bandadn[i];
    }



    if (trend[i] == -1 AND Close[i] > bandaup[i-1])
    {
        trend = 1;
        bandadn[i] = prezzomediano[i] - ( moltiplicatore[i] * volatilita[i] );
        sp[i] = bandadn[i];
    }


    if (trend[i]== -1 AND  Close[i] <= bandaup[i] AND bandaup[i] > bandaup[i-1])
    {
        bandaup[i] = bandaup[i-1];
        sp[i] = bandaup[i];
    }


    if (trend[i]== -1 AND  Close[i] <= bandaup[i] AND bandaup[i] <= bandaup[i-1])
    {
        sp[i] = bandaup[i];
    }
}

Buy=Cover = Cross(C,sp);
Short = Sell= Cross(sp,C);

Plot( sp, "Supertrend", colorRed );

Purtroppo è fatto con il ciclo for, se riuscissi a farlo senza sarebbe un ottima cosa ma all'epoca della codifica non avevo le stesse capacità di ora :D
 
Ultima modifica:
Reef,grazie per il tuo intervento
Non conosco il linguaggio amibroker,ma ho provato il tuo codice e mi dà diversi messaggi di errore che credo si riferiscano alla mancata specificazione delle variabili..
 

reef

...
Reef,grazie per il tuo intervento
Non conosco il linguaggio amibroker,ma ho provato il tuo codice e mi dà diversi messaggi di errore che credo si riferiscano alla mancata specificazione delle variabili..

Confermo che il codice che ho postato qui sopra su Amibroker gira.
Non so, però, se ho tradotto perfettamente da easylanguage.
 

Users who are viewing this thread

Alto