COSTRUZIONE INDICATORE PER ANALISI CICLICA CON VISUAL TRADER

Ciao Seo, quanto hai messo come slippage? Perche dici che diventava ingestibile il numero di operazioni con tradestation .. nel senso oltre allo slippage cosa c'era? Volevo inoltre sapere se le operazioni vengono chiuse o meno durante la giornata.

splippage =0

se volete vi posto il grafico con appena 25 euro di slippage a transazione (cioè ogni 2 eseguiti) , ma è meglio di no senno vi spavantate per quant'è brutto :(

Già avere 3-4 operazioni al giorno inizia ad essere difficoltoso nel seguire il ts alla lettera, vedi volatilità e tick persi

le operazioni non vanno in over se è questo quello che volevi sapere

o cmq durante la giornata sono sempre in reverse
 
Ciao Seo e Auguri , dato che hai lo storico, fammi la cortesia di provarlo togliendo la funzione STOP. Io lo stò usando senza STOP e a 10 giorni mi dà 100 punti in piu'. Vorrei sapere se anche nel lungo toglie punti invece di conquistarne.


intendi la variabile stop? cioè la condizione c><stop?
 
Ho risolto il problema della chiusura alle 17,32, ma rimane quello che entra lo stesso anche dopo l'uscita in trailing.
Codice:
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);


    if T = 0910 then
    Miacondizione1 = C+30;endif;
    if T = 0910 then
    Miacondizione2 = C-30; endif;
    if T = 1010 then
    Miacondizione3 = C+30;endif;
    if T = 1010 then
    Miacondizione4 = C-30; endif;
    if T = 1110 then
    Miacondizione5 = C+30;endif;
    if T = 1110 then
    Miacondizione6 = C-30; endif;
     if T =1210 then
    Miacondizione7 = C+30;endif;
    if T = 1210 then
    Miacondizione8 = C-30; endif;
    if T = 1310 then
    Miacondizione9 = C+30;endif;
    if T = 1310 then
    Miacondizione10 = C-30; endif;
    if T = 1410 then
    Miacondizione11 = C+30;endif;
    if T = 1410 then
    Miacondizione12 = C-30; endif;
     if T =1510 then
    Miacondizione13 = C+30;endif;
    if T = 1510 then
    Miacondizione14 = C-30; endif;
    if T = 1610 then
    Miacondizione15 = C+30;endif;
    if T = 1610 then
    Miacondizione16 = C-30; endif;
    if T = 1710 then
    Miacondizione17 = C+30;endif;
    if T = 1710 then
    Miacondizione18 = C-30; endif;

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

////////////////////////////////////////////////////////////////////////////////
  if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then
  if C > Miacondizione1  and semaforo0910 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo0910 = 1;
  endif; endif;

 if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then
 if C < Miacondizione2 and semaforo0910 <> - 1 then
    EnterShort(NextBar, AtOpen); semaforo0910 = -1;
  endif;endif;

   if (CompareTime(10, 10, 0) > 0) and(CompareTime(11,09, 0) < 0) then
  if C > Miacondizione3  and semaforo1010 <> 1 then
    EnterLong(NextBar, AtOpen); semaforo1010 = 1;
  endif; endif;

 if (CompareTime(10, 10, 0) > 0) and (CompareTime(11, 09, 0) < 0) then
 if C < Miacondizione4 and semaforo1010 <> - 1 then
    EnterShort(NextBar, AtOpen); semaforo1010 = -1;
  endif;endif;

  if (CompareTime(11, 10, 0) > 0) and (CompareTime(12,09, 0) < 0) then
  if (C > Miacondizione5) and semaforo1110 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo1110 = 1;
  endif; endif;

 if (CompareTime(11, 10, 0) > 0) and (CompareTime(12, 09, 0) < 0) then
 if  (C < Miacondizione6) and semaforo1110 <> - 1 then
      EnterShort(NextBar, AtOpen); semaforo1110 = -1;
  endif;endif;

    if (CompareTime(12, 10, 0) > 0) and (CompareTime(13,09, 0) < 0) then
  if (C > Miacondizione7)  and semaforo1210 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo1210 = 1;
  endif; endif;

 if (CompareTime(12, 10, 0) > 0) and (CompareTime(13, 09, 0) < 0) then
 if  (C < Miacondizione8) and semaforo1210 <> - 1 then
      EnterShort(NextBar, AtOpen); semaforo1210 = -1;
  endif;endif;
     if (CompareTime(13, 10, 0) > 0) and (CompareTime(14,09, 0) < 0) then
  if (C > Miacondizione9) and semaforo1310 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo1310 = 1;
  endif; endif;

 if (CompareTime(13, 10, 0) > 0) and (CompareTime(14, 09, 0) < 0) then
 if  (C < Miacondizione10)  and semaforo1310 <> - 1 then
      EnterShort(NextBar, AtOpen); semaforo1310 = -1;
  endif;endif;

    if (CompareTime(14, 10, 0) > 0) and (CompareTime(15,09, 0) < 0) then
  if (C > Miacondizione11)  and semaforo1410 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo1410 = 1;
  endif; endif;

 if (CompareTime(14, 10, 0) > 0) and (CompareTime(15, 09, 0) < 0) then
 if  (C < Miacondizione12)  and semaforo1410 <> - 1 then
      EnterShort(NextBar, AtOpen);semaforo1410 = -1;
  endif;endif;
    if (CompareTime(15, 10, 0) > 0) and (CompareTime(16,09, 0) < 0) then
  if (C > Miacondizione13) and semaforo1510 <> 1 then
    EnterLong(NextBar, AtOpen); semaforo1510 = 1;
  endif; endif;

 if (CompareTime(15, 10, 0) > 0) and (CompareTime(16, 09, 0) < 0) then
 if  (C < Miacondizione14) and semaforo1510 <> - 1 then
      EnterShort(NextBar, AtOpen);semaforo1510 = -1;
  endif;endif;
     if (CompareTime(16, 10, 0) > 0) and (CompareTime(17,09, 0) < 0) then
  if (C > Miacondizione15) and semaforo1610 <> 1 then
    EnterLong(NextBar, AtOpen); semaforo1610 = 1;
  endif; endif;

 if (CompareTime(16, 10, 0) > 0) and (CompareTime(17, 09, 0) < 0) then
 if  (C < Miacondizione16)  and semaforo1610 <> - 1 then
      EnterShort(NextBar, AtOpen); semaforo1610 = -1;
  endif;endif;

    if (CompareTime(17, 10, 0) > 0) and (CompareTime(17,30, 0) < 0) then
  if (C > Miacondizione17) and semaforo1710 <> 1 then
    EnterLong(NextBar, AtOpen);semaforo1710 = 1;
  endif; endif;

 if (CompareTime(17, 10, 0) > 0) and (CompareTime(17, 30, 0) < 0) then
 if  (C < Miacondizione18) and semaforo1710 <> - 1 then
      EnterShort(NextBar, AtOpen); semaforo1710 = -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;/CODE]
 
Ho fatto la verifica e dovrebbe dipendere da questo:

il giorno 23.12. alle ore 17.08 il sistema entra short ed esce dallo short alle 17.27.

quando entra viene attivato semaforo1610 e questa attivazione servirà esclusivamente per due minuti (17.08 e 17.09 sul semaforo1610).
Poiche l'operazione è short ma passa ad altro orario il semaforo1710 viene attivato solamente nell'operazione successiva

dalle 17.28 alle 17.32 ora in cui esce dal sistema

quindi in sostanza la spiegazione sarebbe che se un'operazione short rimane short all'interno della stessa ora tutto ok e non ne verrà riproposta un'altra di stesso segno all'interno di quell'ora.

Invece in questo caso si è verificato di un'operazione short che appunto si propaga nell'ora successiva.

Il concetto a questo punto occorrerebbe spostarlo e dire:
1. entro ad esempio alle 9.10

2. il sistema rimane long anche dopo la fine della prima ora (dalle 09.10 alle 10.10) ma prosegue long fino alle 10.30.

3.quando entra in ingresso la seconda ora gli dobbiamo dire che se il sistema è in positiondir = 1 lui non puo' fare entrare un'altra operazione long ma solo short anche su un altro orario quindi in questo caso quando positiondir = 1 allora semaforo1010 = 1 prima delle altre istruzioni dell'ora.
 
splippage =0

se volete vi posto il grafico con appena 25 euro di slippage a transazione (cioè ogni 2 eseguiti) , ma è meglio di no senno vi spavantate per quant'è brutto :(

Già avere 3-4 operazioni al giorno inizia ad essere difficoltoso nel seguire il ts alla lettera, vedi volatilità e tick persi

le operazioni non vanno in over se è questo quello che volevi sapere

o cmq durante la giornata sono sempre in reverse


secondo me nella simulazione occorrerebbe mettere almeno 30 euro a trade (2 operazioni considerando slippage e costi).
Facendo in questo modo viene ancora fuori maggioramente la differenza tra il livello a 30 e quello a 75 mi è sembrato di avere capito.
 
Mi pare così ci sia un rendimento più alto.

//////////////////////////////////

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: miavel, mio10;

miavel = STOCHD (C, 3, 10, 14);

if T = 0910 then
Miacondizione1 = C+30;endif;
if T = 0910 then
Miacondizione2 = C-30; endif;
if T = 1010 then
Miacondizione3 = C+30;endif;
if T = 1010 then
Miacondizione4 = C-30; endif;
if T = 1110 then
Miacondizione5 = C+30;endif;
if T = 1110 then
Miacondizione6 = C-30; endif;
if T =1210 then
Miacondizione7 = C+30;endif;
if T = 1210 then
Miacondizione8 = C-30; endif;
if T = 1310 then
Miacondizione9 = C+30;endif;
if T = 1310 then
Miacondizione10 = C-30; endif;
if T = 1410 then
Miacondizione11 = C+30;endif;
if T = 1410 then
Miacondizione12 = C-30; endif;
if T =1510 then
Miacondizione13 = C+30;endif;
if T = 1510 then
Miacondizione14 = C-30; endif;
if T = 1610 then
Miacondizione15 = C+30;endif;
if T = 1610 then
Miacondizione16 = C-30; endif;
if T = 1710 then
Miacondizione17 = C+30;endif;
if T = 1710 then
Miacondizione18 = C-30; endif;

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

////////////////////////////////////////////////////////////////////////////////
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;
endif; endif;

if (CompareTime(09, 10, 0) > 0) and (CompareTime(10,09, 0) < 0) then
if C < Miacondizione2 and semaforo0910 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo0910 = -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;
endif; endif;

if (CompareTime(10, 10, 0) > 0) and (CompareTime(11, 09, 0) < 0) then
if C < Miacondizione4 and semaforo1010 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1010 = -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;
endif; endif;

if (CompareTime(11, 10, 0) > 0) and (CompareTime(12, 09, 0) < 0) then
if (C < Miacondizione6) and semaforo1110 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1110 = -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;
endif; endif;

if (CompareTime(12, 10, 0) > 0) and (CompareTime(13, 09, 0) < 0) then
if (C < Miacondizione8) and semaforo1210 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1210 = -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;
endif; endif;

if (CompareTime(13, 10, 0) > 0) and (CompareTime(14, 09, 0) < 0) then
if (C < Miacondizione10) and semaforo1310 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1310 = -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;
endif; endif;

if (CompareTime(14, 10, 0) > 0) and (CompareTime(15, 09, 0) < 0) then
if (C < Miacondizione12) and semaforo1410 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen);semaforo1410 = -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;
endif; endif;

if (CompareTime(15, 10, 0) > 0) and (CompareTime(16, 09, 0) < 0) then
if (C < Miacondizione14) and semaforo1510 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen);semaforo1510 = -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;
endif; endif;

if (CompareTime(16, 10, 0) > 0) and (CompareTime(17, 09, 0) < 0) then
if (C < Miacondizione16) and semaforo1610 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1610 = -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;
endif; endif;

if (CompareTime(17, 10, 0) > 0) and (CompareTime(17, 30, 0) < 0) then
if (C < Miacondizione18) and semaforo1710 <> - 1 and miavel < 60 then
EnterShort(NextBar, AtOpen); semaforo1710 = -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;
 
Ho fatto la verifica e dovrebbe dipendere da questo:

il giorno 23.12. alle ore 17.08 il sistema entra short ed esce dallo short alle 17.27.

quando entra viene attivato semaforo1610 e questa attivazione servirà esclusivamente per due minuti (17.08 e 17.09 sul semaforo1610).
Poiche l'operazione è short ma passa ad altro orario il semaforo1710 viene attivato solamente nell'operazione successiva

dalle 17.28 alle 17.32 ora in cui esce dal sistema

quindi in sostanza la spiegazione sarebbe che se un'operazione short rimane short all'interno della stessa ora tutto ok e non ne verrà riproposta un'altra di stesso segno all'interno di quell'ora.

Invece in questo caso si è verificato di un'operazione short che appunto si propaga nell'ora successiva.

Il concetto a questo punto occorrerebbe spostarlo e dire:
1. entro ad esempio alle 9.10

2. il sistema rimane long anche dopo la fine della prima ora (dalle 09.10 alle 10.10) ma prosegue long fino alle 10.30.

3.quando entra in ingresso la seconda ora gli dobbiamo dire che se il sistema è in positiondir = 1 lui non puo' fare entrare un'altra operazione long ma solo short anche su un altro orario quindi in questo caso quando positiondir = 1 allora semaforo1010 = 1 prima delle altre istruzioni dell'ora.

Non sarebbe piu' semplice resettare il semaforo alla fine di ogni ora, invece di farlo a fine giornata? O dipende esclusivamente dall'ora in cui entra in posizione ? Mi spiego: se entra short alle 9,20 prende gli ordini dal semaforo delle 9,10. Lo short prosegue anche nella seconda ora. Alle 10,10 noi resettiamo il semaforo delle 9,10. A questo punto non dovrebbe prendere ordini dal semaforo delle 10,10?
 

Users who are viewing this thread

Back
Alto