Programmazione Prorealtime Troviamo dei validi TREND FOLLOWER su vari tf (1 Viewer)

ender85

Forumer attivo
Diffidate sempre dalle persone (compreso me) che pubblicano equity line mirabolanti senza pubblicare "report" e soprattutto "controllo posizioni" di Prorealtime. Senza report l'equity line vale poco, senza controllo posizioni il report vale anche meno. Quindi occhio a prendere sul serio gente che pubblica risultati di fantomatici ts senza mettere a disposizione il codice.
Prorealtime ha un bassissimo storico, basta usare la ottimizzazione automatica e una cosa banale diventa portentosa.

Prendiamo questo semplice codice:
//Media SUPER
REM Variabili:
ST= SuperTrend[a,b]
MEDIA = Average[c](close)

REM Acquisto
IF CLOSE>MEDIA AND CLOSE>ST THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF

REM Vendita allo scoperto
IF CLOSE<MEDIA AND CLOSE<ST THEN
SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
a, b e c usatele tramite l'ottimizzazione variabili e vedrete che anche voi potrete pubblicare una fantastica equity line:winner:

Da tutta questa premessa, mi piacerebbe creare una sorta di gara a chi trova il miglior trend follower su diversi timeframe(i tf saranno una sorta di categoria di gara come in MotoGP).
Ogni modifica e ottimizzazione dell codice è ben accetta, l'unica regola da rispettare è:
VIETATO L'USO DI INDICATORI E OSCILLATORI.
Essi non servono a niente, l'unica cosa importante sono high, low, open, close, volumi, medie mobili e il Supertrend (il filtro del laterale).
Dai ragazzi fatevi sotto, pubblicate il codice ottimizzato e il timeframe che adoperate e faremo una sorta di classifica così da aiutarci tutti a costruire il miglior trend follower del mondo!!!:eeh:
 

ale73a

break even trader
credo che tu sia tra i pochi che possano correggermi questo ts...
adesso lo posto
il criterio è questo:
siamo short...
si va long al superamento in chiusura del più vecchio tra:
a) il max a 10 gg
b) il min + 5% del minimo raggiunto da quando siamo short

entra il long...
andiamo short quando c < al più vecchio tra
c) il min a 10 gg
d) il max raggiunto da quando siamo long (sempre -5%)
 

ale73a

break even trader
Codice:
VAR: MAX10,MINS,MINSPERC,CZ,CY,DD,MIN10,Y,MAXL,MAXLPERC,CW,CJ,QQ,INDZONA0,MAX10IERI,MINSIERI,MIN10IERI,MAXLIERI;
MAX10=HHV(H,10);
MAX10IERI=REF(MAX10,1); //MASSIMO DEI 10 GG TRASCORSI
X=BARSINCE(POSITIONDIR=-1);  //DA QUANTI GG SIAMO SHORT
MINS=LLV(L,X);
MINSIERI=REF(MINS,1);    //MINIMO ASSOLUTO DA QUANDO SIAMO SHORT
MINSPERC=MINSIERI*1.05;  //AGGIUNGO IL 5% AL MINIMO
CZ=BARSINCE(MAX10);  //CONTA I GG TRASCORSI DAL MAX DEI 10 GG A OGGI
CY=BARSINCE(MINS); //CONTA I GG TRASCORSI DAL MIN RAGGIUNTO IN POSIZIONE SHORT A OGGI
DD=IIF(CZ > CY , MAX10IERI , MINSPERC);   //CONSIDERO IL PIù VECCHIO TRA I DUE
IF POSITIONDIR=-1 THEN IF C > DD THEN ENTERLONG(nextbar,atopen);// ENTRO LONG AL SUPERAMENTO DEL PIù VECCHIO DEI DUE
ENDIF;
ENDIF;
MIN10=LLV(L,10);
MIN10IERI=REF(MIN10,1);
Y=BARSINCE(POSITIONDIR=1);
MAXL=HHV(H,Y);
MAXLIERI=REF(MAXL,1);
MAXLPERC=MAXLIERI*0.95;
CW=BARSINCE(MIN10);
CJ=BARSINCE(MAXL);
QQ=IIF(CW > CJ , MIN10IERI , MAXLPERC);
IF POSITIONDIR=1 THEN IF C < QQ THEN ENTERSHORT(NEXTBAR,ATOPEN);
ENDIF;
ENDIF;
IF POSITIONDIR=0 THEN ENTERLONG(NEXTBAR,ATOPEN);
ENDIF;
 

ender85

Forumer attivo
Codice:
VAR: MAX10,MINS,MINSPERC,CZ,CY,DD,MIN10,Y,MAXL,MAXLPERC,CW,CJ,QQ,INDZONA0,MAX10IERI,MINSIERI,MIN10IERI,MAXLIERI;
MAX10=HHV(H,10);
MAX10IERI=REF(MAX10,1); //MASSIMO DEI 10 GG TRASCORSI
X=BARSINCE(POSITIONDIR=-1);  //DA QUANTI GG SIAMO SHORT
MINS=LLV(L,X);
MINSIERI=REF(MINS,1);    //MINIMO ASSOLUTO DA QUANDO SIAMO SHORT
MINSPERC=MINSIERI*1.05;  //AGGIUNGO IL 5% AL MINIMO
CZ=BARSINCE(MAX10);  //CONTA I GG TRASCORSI DAL MAX DEI 10 GG A OGGI
CY=BARSINCE(MINS); //CONTA I GG TRASCORSI DAL MIN RAGGIUNTO IN POSIZIONE SHORT A OGGI
DD=IIF(CZ > CY , MAX10IERI , MINSPERC);   //CONSIDERO IL PIù VECCHIO TRA I DUE
IF POSITIONDIR=-1 THEN IF C > DD THEN ENTERLONG(nextbar,atopen);// ENTRO LONG AL SUPERAMENTO DEL PIù VECCHIO DEI DUE
ENDIF;
ENDIF;
MIN10=LLV(L,10);
MIN10IERI=REF(MIN10,1);
Y=BARSINCE(POSITIONDIR=1);
MAXL=HHV(H,Y);
MAXLIERI=REF(MAXL,1);
MAXLPERC=MAXLIERI*0.95;
CW=BARSINCE(MIN10);
CJ=BARSINCE(MAXL);
QQ=IIF(CW > CJ , MIN10IERI , MAXLPERC);
IF POSITIONDIR=1 THEN IF C < QQ THEN ENTERSHORT(NEXTBAR,ATOPEN);
ENDIF;
ENDIF;
IF POSITIONDIR=0 THEN ENTERLONG(NEXTBAR,ATOPEN);
ENDIF;

é sbagliata tutta la gestione del barsice, di solito si usa insieme alla istruzione if:
es if barsince (Close > Close[1]) = 2 then
cioè se la close attuale è maggiore della precedente e la precedente anch'essa rispetto alla sua precedente then...

Una soluzione sarebbe:

max10=hhv(h,10);
if h< max10 then
x= x+1
else
x=1
endif

x conta i giorni passati dal massimo.
Scusami ma devo scappare, appena riesco te lo sistemo se non riesci a farlo da solo. La partita del Cuore mi attende.
Buonaserata
 

Users who are viewing this thread

Alto