COSTRUZIONE INDICATORE PER ANALISI CICLICA CON VISUAL TRADER

Stesso problema . Non viene riconosciuta l'uscita in trailing e il TS rientra subito in posizione alla candela successiva dato che per lui è valida l'istruzione d'ingresso dello step precedente. Ho provato ad usare "barrasalvata", ma fà uguale.

ScreenHunter_02 Jan. 02 13.36.gif
 
Ciao a tutti

tempo fa ricordo di aver letto da qualche parte su Internet che Visual Trader con la nuova versione (immagino la beta) supportasse anche i cicli for nella programmazione dei TS ma che nel manuale non ci sarebbe stata traccia... Qualcuno di voi ne sa qualcosa?

Grazie:)
Ciao Misterx, purtroppo non posso aiutarti,mai sentiti.
 
Questo gestisce i buchi quando c'è la rilevazione del prezzo ed inoltre il trailing (ritorna con stesso segno a rottura). FATE DELLE PROVE ed anche la verifica del codice (da verificare 1. I livelli se sono quelli corretti e nel caso non li trovi il livello che ha messo... 2. il trailing
Ho visto che considerando a 1 minuto non viene fuori come l'ntick (comunque quest'ultimo doveva avere dei problemi prima quando non trovava i pivot visto che la rilevazione è puntuale).
Io mi devo assentare per un po di tempo perche devo fare per il mio lavoro e per altre cose con curioso questo qui è stato pesante perche ci sono anche delle anomalie a mio modo di vedere con VT.

Codice:
{******************************************************************************
* Nuovo trading-system. 
* Aggiungere in questo punto i Vostri commenti, che vi aiuteranno
* in seguito a ricordare le linee guida di trading che intendete
* automatizzare .
******************************************************************************}
Var: miavar(0), Miacondizione1,Miacondizione2,miacondizione3,Miacondizione4,Miacondizione5,Miacondizione6;
Var: Miacondizione7,Miacondizione8, Miacondizione9,Miacondizione10, Miacondizione11,Miacondizione12, Miacondizione13,Miacondizione14;
Var: Miacondizione15,Miacondizione16,Miacondizione17,miacondizione18,STOP;
Var: Semaforo0910(0), semaforo1010(0), semaforo1110(0), Semaforo1210(0), semaforo1310(0), semaforo1410(0),Semaforo1510(0), semaforo1610(0), semaforo1710(0);
Var: ultimaposizione(0), indzona1(0), valoreritracciamento(0), valore(0), ultimoprezzo(0), barra(0), ope1(0), min1(0), max1(0), clo1(0);
Var: miavel, mio10, vettorestop(0), pippo(0);
miavel = STOCHD (C, 3, 10, 14);

//****************************************************************************************************************
//Se nel T considerato non c'è non lo rileva come prezzo; quindi viene preso l'ultimo disponibile e messo al posto del livello
//Alla fine rilevazione dei prezzi pivot
if T>= 0900 and T < 0910 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione1  = clo1 + 30; Miacondizione2  = clo1 - 30; endif;
if T>= 0955 and T < 1010 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione3  = clo1 + 30; Miacondizione4  = clo1 - 30; endif;
if T>= 1055 and T < 1110 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione5  = clo1 + 30; Miacondizione6  = clo1 - 30; endif;
if T>= 1155 and T < 1210 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione7  = clo1 + 30; Miacondizione8  = clo1 - 30; endif;
if T>= 1255 and T < 1310 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione9  = clo1 + 30; Miacondizione10 = clo1 - 30; endif;
if T>= 1355 and T < 1410 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione11 = clo1 + 30; Miacondizione12 = clo1 - 30; endif;
if T>= 1455 and T < 1510 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione13 = clo1 + 30; Miacondizione14 = clo1 - 30; endif;
if T>= 1555 and T < 1610 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione15 = clo1 + 30; Miacondizione16 = clo1 - 30; endif;
if T>= 1655 and T < 1710 then getvalues(minutes, 15, ope1, min1, max1, clo1); Miacondizione17 = clo1 + 30; Miacondizione18 = clo1 - 30; endif;
//Livelli pivot
if T = 0910 then Miacondizione1 = C+30; Miacondizione2 = C-30; endif;
if T = 1010 then Miacondizione3 = C+30; Miacondizione4 = C-30; endif;
if T = 1110 then Miacondizione5 = C+30; Miacondizione6 = C-30; endif;
if T = 1210 then Miacondizione7 = C+30; Miacondizione8 = C-30; endif;
if T = 1310 then Miacondizione9 = C+30; Miacondizione10= C-30; endif;
if T = 1410 then Miacondizione11= C+30; Miacondizione12= C-30; endif;
if T = 1510 then Miacondizione13 =C+30; Miacondizione14= C-30; endif;
if T = 1610 then Miacondizione15 =C+30; Miacondizione16= C-30; endif;
if T = 1710 then Miacondizione17 =C+30; Miacondizione18= C-30; endif;
//*************************************************************************************************************************

//Non si riesce a capire perche ma se metto il controllo in T = non lo prende, probabilmente perche delle barre potrebbero mancare
//in assenza di contrattazione
if T >=0910 and T <= 1009 then if positiondir =  1 then semaforo0910 = 1; endif; if positiondir = - 1 then semaforo0910 = - 1; endif; endif;
if T >=1010 and T <= 1109 then if positiondir =  1 then semaforo1010 = 1; endif; if positiondir = - 1 then semaforo1010 = - 1; endif; endif;
if T >=1110 and T <= 1209 then if positiondir =  1 then semaforo1110 = 1; endif; if positiondir = - 1 then semaforo1110 = - 1; endif; endif;
if T >=1210 and T <= 1309 then if positiondir =  1 then semaforo1210 = 1; endif; if positiondir = - 1 then semaforo1210 = - 1; endif; endif;
if T >=1310 and T <= 1409 then if positiondir =  1 then semaforo1310 = 1; endif; if positiondir = - 1 then semaforo1310 = - 1; endif; endif;
if T >=1410 and T <= 1509 then if positiondir =  1 then semaforo1410 = 1; endif; if positiondir = - 1 then semaforo1410 = - 1; endif; endif;
if T >=1510 and T <= 1609 then if positiondir =  1 then semaforo1510 = 1; endif; if positiondir = - 1 then semaforo1510 = - 1; endif; endif;
if T >=1610 and T <= 1709 then if positiondir =  1 then semaforo1610 = 1; endif; if positiondir = - 1 then semaforo1610 = - 1; endif; endif;
if T >=1710 and T <= 1730 then if positiondir =  1 then semaforo1710 = 1; endif; if positiondir = - 1 then semaforo1710 = - 1; endif; endif;
//Identifica il livello del ritracciamento
if lastopisstop = false then vettorestop = 0; colorbar(lime); endif;
if lastopisstop = true  then vettorestop = 1; colorbar(red); endif;
if vettorestop[1] <> vettorestop and vettorestop = 1 then
    if ultimaposizione = 1 then valoreritracciamento = H[1];
       if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then Miacondizione1 = H[1] + 30; semaforo0910 = 0; endif;
       if (CompareTime(10, 10, 0) > 0) and (CompareTime(11,09, 0) < 0) then Miacondizione3 = H[1] + 30; semaforo1010 = 0; endif;
       if (CompareTime(11, 10, 0) > 0) and (CompareTime(12,09, 0) < 0) then Miacondizione5 = H[1] + 30; semaforo1110 = 0; endif;
       if (CompareTime(12, 10, 0) > 0) and (CompareTime(13,09, 0) < 0) then Miacondizione7 = H[1] + 30; semaforo1210 = 0; endif;
       if (CompareTime(13, 10, 0) > 0) and (CompareTime(14,09, 0) < 0) then Miacondizione9 = H[1] + 30; semaforo1310 = 0; endif;
       if (CompareTime(14, 10, 0) > 0) and (CompareTime(15,09, 0) < 0) then Miacondizione11= H[1] + 30; semaforo1410 = 0; endif;
       if (CompareTime(15, 10, 0) > 0) and (CompareTime(16,09, 0) < 0) then Miacondizione13= H[1] + 30; semaforo1510 = 0; endif;
       if (CompareTime(16, 10, 0) > 0) and (CompareTime(17,09, 0) < 0) then Miacondizione15= H[1] + 30; semaforo1610 = 0; endif;
       if (CompareTime(17, 10, 0) > 0) and (CompareTime(17,30, 0) < 0) then Miacondizione17= H[1] + 30; semaforo1710 = 0; endif;
    endif;
    if ultimaposizione = -1 then valoreritracciamento = L[1];
       if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then Miacondizione2 = L[1] - 30; semaforo0910 = 0; endif;
       if (CompareTime(10, 10, 0) > 0) and (CompareTime(11,09, 0) < 0) then Miacondizione4 = L[1] - 30; semaforo1010 = 0; endif;
       if (CompareTime(11, 10, 0) > 0) and (CompareTime(12,09, 0) < 0) then Miacondizione6 = L[1] - 30; semaforo1110 = 0; endif;
       if (CompareTime(12, 10, 0) > 0) and (CompareTime(13,09, 0) < 0) then Miacondizione8 = L[1] - 30; semaforo1210 = 0; endif;
       if (CompareTime(13, 10, 0) > 0) and (CompareTime(14,09, 0) < 0) then Miacondizione10= L[1] - 30; semaforo1310 = 0; endif;
       if (CompareTime(14, 10, 0) > 0) and (CompareTime(15,09, 0) < 0) then Miacondizione12= L[1] - 30; semaforo1410 = 0; endif;
       if (CompareTime(15, 10, 0) > 0) and (CompareTime(16,09, 0) < 0) then Miacondizione14= L[1] - 30; semaforo1510 = 0; endif;
       if (CompareTime(16, 10, 0) > 0) and (CompareTime(17,09, 0) < 0) then Miacondizione16= L[1] - 30; semaforo1610 = 0; endif;
       if (CompareTime(17, 10, 0) > 0) and (CompareTime(17,30, 0) < 0) then Miacondizione18= L[1] - 30; semaforo1710 = 0; endif;
    endif;
endif;
    

if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then
       if C > Miacondizione1  and semaforo0910 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo0910 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione2  and semaforo0910 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo0910 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(10, 10, 0) > 0) and(CompareTime(11,09, 0) < 0) then
       if C > Miacondizione3  and semaforo1010 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1010 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione4  and semaforo1010 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1010 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(11, 10, 0) > 0) and (CompareTime(12,09, 0) < 0) then
       if C > Miacondizione5  and semaforo1110 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1110 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione6  and semaforo1110 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1110 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(12, 10, 0) > 0) and (CompareTime(13,09, 0) < 0) then
       if C > Miacondizione7  and semaforo1210 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1210 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione8  and semaforo1210 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1210 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(13, 10, 0) > 0) and (CompareTime(14,09, 0) < 0) then
       if C > Miacondizione9  and semaforo1310 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1310 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione10 and semaforo1310 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1310 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(14, 10, 0) > 0) and (CompareTime(15,09, 0) < 0) then
       if C > Miacondizione11 and semaforo1410 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1410 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione12 and semaforo1410 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1410 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(15, 10, 0) > 0) and (CompareTime(16,09, 0) < 0) then
       if C > Miacondizione13 and semaforo1510 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1510 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione14 and semaforo1510 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1510 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(16, 10, 0) > 0) and (CompareTime(17,09, 0) < 0) then
       if C > Miacondizione15 and semaforo1610 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1610 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione16 and semaforo1610 <> -1 and miavel < 60 then EnterShort(NextBar,AtOpen); semaforo1610 = -1; ultimaposizione = -1; endif;
endif;
if (CompareTime(17, 10, 0) > 0) and (CompareTime(17,30, 0) < 0) then
       if C > Miacondizione17 and semaforo1710 <>  1 and miavel > 30 then EnterLong(NextBar, AtOpen); semaforo1710 =  1; ultimaposizione =  1; endif;
       if C < Miacondizione18 and semaforo1710 <> -1 and miavel < 60 then EnterShort(NextBar, AtOpen);semaforo1710 = -1; ultimaposizione = -1; endif;
endif;
 

if t>=1732 then
if positiondir=1 then
exitlong(bar,atclose);
endif;
if positiondir=-1 then
exitshort(bar,atclose);
endif;
endif;
if lastbar = true then
Semaforo0910 = 0;
Semaforo1010 = 0;
semaforo1110 = 0;
Semaforo1210 = 0;
semaforo1310 = 0;
semaforo1410 = 0;
Semaforo1510 = 0;
semaforo1610 = 0;
semaforo1710 = 0;
endif;
indzona1=CreateViewport(200, true, True);     //zona cicloI
//PlotChart(segnale, indzona1, blue, solid, 3);
//PlotChart(pippo, indzona1, red, istogramma, 3);
//PlotChart(clo1, indzona1, red, istogramma, 3);

installtrailingprofit (inperc,1.4,0.1,trailing);
//installstoploss(intick,50) ;
//installtakeprofit(inperc,2);
 
Ciao a tutti

tempo fa ricordo di aver letto da qualche parte su Internet che Visual Trader con la nuova versione (immagino la beta) supportasse anche i cicli for nella programmazione dei TS ma che nel manuale non ci sarebbe stata traccia... Qualcuno di voi ne sa qualcosa?

Grazie:)


La sintassi dovrebbe essere cosi pero' informati con loro:

Var: idx(0),numiniz(1),numfine(20),lin1,lin2,lin3;

beginfor(idx,numiniz,numfine);
if idx = 7 then
lin1 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], purple, 3, 0);
endif;
if idx = 14 then
lin2 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], red, 3, 0);
endif;
if idx = 20 then
lin3 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], green, 3, 0);
endif;
endfor;
 
La sintassi dovrebbe essere cosi pero' informati con loro:

Var: idx(0),numiniz(1),numfine(20),lin1,lin2,lin3;

beginfor(idx,numiniz,numfine);
if idx = 7 then
lin1 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], purple, 3, 0);
endif;
if idx = 14 then
lin2 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], red, 3, 0);
endif;
if idx = 20 then
lin3 = DrawLine(NEWOGG, 0, D[0], H[0], D[idx], H[idx], green, 3, 0);
endif;
endfor;


Grazie mille Robom

ci provo e ti faccio sapere:up:
 
Questo gestisce i buchi quando c'è la rilevazione del prezzo ed inoltre il trailing (ritorna con stesso segno a rottura). FATE DELLE PROVE ed anche la verifica del codice (da verificare 1. I livelli se sono quelli corretti e nel caso non li trovi il livello che ha messo... 2. il trailing
Ho visto che considerando a 1 minuto non viene fuori come l'ntick (comunque quest'ultimo doveva avere dei problemi prima quando non trovava i pivot visto che la rilevazione è puntuale).
Io mi devo assentare per un po di tempo perche devo fare per il mio lavoro e per altre cose con curioso questo qui è stato pesante perche ci sono anche delle anomalie a mio modo di vedere con VT.

Hai fatto un lavoro notevole. Purtroppo pur risolvendo il problema delle entrate dopo il trailing , usandolo con ntick non và bene. Gira meglio con frame 1 minuto. Io ho provato tutto il pomeriggio con le nuove funzioni della versione beta, ma niente da fare. Rientra subito nella barra successiva. Allora ho preso un'altra strada che mi sembra anche migliore. Ho introdotto un semplice controllo (C > C[1]) riducendo il trailing a 0.8 e devo dire che il risultato è incoraggiante. Se esce in trailing , ma continua al rialzo perchè dobbiamo perdere il treno? Rientriamo immediatamente. Se invece è proprio un ritracciamento lo lasciamo correggere ed alla prima candela con C > C[1] si rientra in posizione ad un livello piu' basso. con questo piccolo accorgimento si guadagnano 700 punti in 10 giorni e la percentuale di operazioni positive si porta oltre il 70%. Il report è quello sopra. L'unico dubbio che mi rimane usando l'ntick è che spesso le candele chiudono saltando lo step. Magari chiude alle 10,14 e allora il valore dove lo prende?
 
Ultima modifica:
Buonjour a toute le monde!!

il trailing e il rientro funziona, non ho capito qual'è il problema del trailing con l'ntick se devo dire la verità.
La routine è stata fatta cosi per due motivi.
1. Lui rientra long al max + i punti che io ho definito (o short) in maniera tale che io vado a rottura del max / min e quello lo considero come valore di ritracciamento, proprio per il fatto che sto utilizzando un entrata in breakout (se noti nella figura rientri ad un livello superiore non solo del min ma anche superiore all'uscita in trailing).
2. Il problema inoltre principale per cui è stato fatto tutto quel ghirigoro è che la funziona lastopisstop da l'ultima operazione conclusa e non in corso per cui potrebbe succedere che mi salta l'operazione successiva se è di segno contrario.
3.l'altro discorso riguarda i buchi dove c'è la routine ad hoc e penso che possa essere utilizzata anche per l'ntick.

A mio avviso l'ntick è piu' adatta per chi fa trading visuale, per quanto riguarda la tua domanda è chiaro che c'è un algoritmo che riduce tutto alla variazione e compressione solo che un ts che si basa estremamente sulle date non saprei cosa dire.
 
Buonjour a toute le monde!!

il trailing e il rientro funziona, non ho capito qual'è il problema del trailing con l'ntick se devo dire la verità.
La routine è stata fatta cosi per due motivi.
1. Lui rientra long al max + i punti che io ho definito (o short) in maniera tale che io vado a rottura del max / min e quello lo considero come valore di ritracciamento, proprio per il fatto che sto utilizzando un entrata in breakout (se noti nella figura rientri ad un livello superiore non solo del min ma anche superiore all'uscita in trailing).
2. Il problema inoltre principale per cui è stato fatto tutto quel ghirigoro è che la funziona lastopisstop da l'ultima operazione conclusa e non in corso per cui potrebbe succedere che mi salta l'operazione successiva se è di segno contrario.
3.l'altro discorso riguarda i buchi dove c'è la routine ad hoc e penso che possa essere utilizzata anche per l'ntick.

A mio avviso l'ntick è piu' adatta per chi fa trading visuale, per quanto riguarda la tua domanda è chiaro che c'è un algoritmo che riduce tutto alla variazione e compressione solo che un ts che si basa estremamente sulle date non saprei cosa dire.

Funziona correttamente per come è stato pensato , quello che voglio dire è che probabilmente da qualche parte c'è qualche distorsione perchè nel report ci sono solo 31 punti guadagnati. Tornando al n.tick mi riferivo non all'uscita in trailing, ma all'entrata normale con il pivot delle 10,10 e chiusura candela magari delle 10,12. Se la chiusura candela è alle 10,12 ed il TS prende a riferimento il prezzo delle 10,10 quale prezzo prende? Stò parlando in generale non dell'ultimo listato che hai postato.
 
Ultima modifica:
Buonjour a toute le monde!!

il trailing e il rientro funziona, non ho capito qual'è il problema del trailing con l'ntick se devo dire la verità.
La routine è stata fatta cosi per due motivi.
1. Lui rientra long al max + i punti che io ho definito (o short) in maniera tale che io vado a rottura del max / min e quello lo considero come valore di ritracciamento, proprio per il fatto che sto utilizzando un entrata in breakout (se noti nella figura rientri ad un livello superiore non solo del min ma anche superiore all'uscita in trailing).
2. Il problema inoltre principale per cui è stato fatto tutto quel ghirigoro è che la funziona lastopisstop da l'ultima operazione conclusa e non in corso per cui potrebbe succedere che mi salta l'operazione successiva se è di segno contrario.
3.l'altro discorso riguarda i buchi dove c'è la routine ad hoc e penso che possa essere utilizzata anche per l'ntick.

A mio avviso l'ntick è piu' adatta per chi fa trading visuale, per quanto riguarda la tua domanda è chiaro che c'è un algoritmo che riduce tutto alla variazione e compressione solo che un ts che si basa estremamente sulle date non saprei cosa dire.

Il problema di distorsione di cui ti parlavo prima è nella prima parte del listato.
Non mettendo un orario preciso, ma un intervallo di tempo entro cui pescare, VT non sà piu' che pesci prendere. Togliendo questa parte di listato funziona egregiamente con 2450 punti di resa in 10 gg e oltre il 70% di operazioni positive. L'entrata dopo il trailing però , a volte, togliendo questa parte del listato non si comporta come dovrebbe.

ScreenHunter_17 Jan. 02 19.55.gif
 

Users who are viewing this thread

Back
Alto