jueves, 20 de julio de 2017

questo è il codice
nelle stringhe long e short sono attive solo 4 condizioni
poi come uscite la solita collegata al 50% del giorno precedente ed altre due...una migliora pochissimo ma non da fastidio..l'altra più importante( fa rimanere meno a mercato  ed aumenta la resa ) che scatta solo in determinate situazioni ma dopo 34 candele col ts attivo

//__________________________________________Tecnica 50%________________________// 18 luglio 2017

Var: miomax5g,miomin5g,miomax11g,miomin11g,miomax22g,miomin22g,rangemensile5g,rangemensile11g,rangemensile22g;
Var: input1,input2;
Var: newday(false), mioopen(0), miomin(0), miomax(0), mioclose(0),dvmed;
Var: wmax,wmin,wmed,DMAX,DMIN,vp1;
Var: fflat,lg,sh,contalg,contash,contaflat,rapportosegnalepositivoup,contanuovimassimi,contanuoviminimi,rapportosegnalepositivodown;
Var: Pr_Ingr(0), Max_Gain(0), Max_Gain_perc(0), Gain(0),condizioneA,condizioneB,ivp;
Var: condizionenolong,condizionenoshort;
Var: contalongsi,contalongno,contashortsi,contashortno,vp2,vp3;

Var: miomax5g;
miomax5g = HHV (H, 187);

Var: miomin5g;
miomin5g = LLV (L, 187);

Var: miomax11g;
miomax11g = HHV (H, 374);

Var: miomin11g;
miomin11g = LLV (L, 374);

Var: miomax22g;
miomax22g = HHV (H, 748);

Var: miomin22g;
miomin22g = LLV (L, 748);

rangemensile5g=(((miomax5g-miomin5g)/miomin5g)*100);
rangemensile11g=(((miomax11g-miomin11g)/miomin11g)*100);
rangemensile22g=(((miomax22g-miomin22g)/miomin22g)*100);

if rangemensile5g<10 and miomax5g>miomax5g[136] and miomin5g=miomin5g[136] then condizionenoshort=1;else condizionenoshort=0;endif;
if rangemensile5g<10 and miomax5g=miomax5g[136] and miomin5g<miomin5g[136] then condizionenolong=1;else condizionenolong=0;endif;


if IsFirstBarDay then input1=H;endif;
if IsFirstBarDay then input2=L;endif;
plotchart(input1, ivp, green, solid, 2);
plotchart(input2, ivp, red, solid, 2);

newday=GetValues(days,1,mioopen,miomin,miomax,mioclose);

dvmed= miomin+(50*(miomax-miomin))/100;


if isfirstbarday then
   WMAX=H;
   WMIN=L;
   else
   WMAX=iif(H>=WMAX[1],H,WMAX[1]);
   WMIN=iif(L<=WMIN[1],L,WMIN[1]);
   WMED=wmax-(wmax-wmin)*0.5;
endif;

PlotChart(WMED,0, gray, dot, 1);
Plotchart(dvmed,0,blue,solid,1);
DrawText(NEWOGG,0 , D,wmed , "50% intraday",wmed , red, 12, 2+2,Alright);
DrawText(NEWOGG,0 , D,dvmed , "50% ieri",dvmed , white, 14, 3+2,Alleft);

//////////////////////___CONTA_Situazione___///////////////////////////////////////////////

if positiondir=0 then fflat=1;endif; if positiondir<>0 then fflat=0;contaflat=0;endif; if fflat=1 and fflat[1]=1 then contaflat=(contaflat[1]+1);endif;

if positiondir=1 then lg=1;endif; if positiondir<>1 then lg=0;contalg=0;endif; if lg=1 and lg[1]=1 then contalg=(contalg[1]+1);endif;

if positiondir=-1 then sh=1;endif; if positiondir<>-1 then sh=0;contash=0;endif; if sh=1 and sh[1]=1 then contash=(contash[1]+1);endif;

if positiondir=1 and wmax>wmax[1] then contanuovimassimi=contanuovimassimi+1;endif;
if positiondir=1 and wmin<wmin[1] then contanuoviminimi=contanuoviminimi+1;endif;
if positiondir=-1 and wmin<wmin[1] then contanuoviminimi=contanuoviminimi+1;endif;
if positiondir=-1 and wmax>wmax[1] then contanuovimassimi=contanuovimassimi+1;endif;
if isfirstbarday and positiondir=1 then contanuovimassimi=contanuovimassimi+1;endif;
if isfirstbarday and positiondir=1 then contanuoviminimi=contanuoviminimi+1;endif;
if isfirstbarday and positiondir=-1 then contanuovimassimi=contanuovimassimi+1;endif;
if isfirstbarday and positiondir=-1 then contanuoviminimi=contanuoviminimi+1;endif;
if positiondir=0 then contanuovimassimi=0;endif;
if positiondir=0 then contanuoviminimi=0;endif;
rapportosegnalepositivoup=op(contanuovimassimi,contanuoviminimi,divis);
rapportosegnalepositivodown=op(contanuoviminimi,contanuovimassimi,divis);

/////////////////////////////////// Gain /////////////////////////////////////////////////////
if Positionvalue<>0 then
   Pr_Ingr = positionValue;
   if Positiondir=1 then
      if (C>Max_Gain) or (Max_Gain=0) then
         Max_Gain = C;
Max_Gain_perc = ((Max_Gain-Pr_ingr)*100)/Pr_Ingr;
      endif;
      Gain = ((C-Pr_ingr)*100)/Pr_Ingr;
   else
     if (C<Max_Gain) or (Max_Gain=0) then
Max_Gain = C;
Max_Gain_perc = ((Pr_ingr-Max_Gain)*100)/Pr_Ingr;
       endif;
       Gain = ((Pr_ingr-C)*100)/Pr_Ingr;
   endif;
else
    Pr_ingr = 0;
Max_Gain = 0;
Gain = 0;
endif;


/////////////////////////////////////////////////////////////////////////////
if (LastTradeClosedPerc > 3.00) and contaflat<90  and lastopclosed=1 then condizioneA=1;else condizioneA=0;endif;
if (LastTradeClosedPerc > 3.00) and contaflat<90  and lastopclosed=3 then condizioneB=1;else condizioneB=0;endif;
////////////////////////////////////////////////////////////////////////////////////////////////
if positiondir=1 and gain>0 then contalongsi=contalongsi+1;endif;
if positiondir=1 and gain<0 then contalongno=contalongno+1;endif;
if positiondir=-1 and gain>0 then contashortsi=contashortsi+1;endif;
if positiondir=-1 and gain<0 then contashortno=contashortno+1;endif;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
installstoploss(inperc,3.00,"SL", STARTNEXTBAR);
plotchartNoZero(getstoploss, 0, red, solid, 2);
DrawText(NEWOGG,0 , D,getstoploss , "sl",getstoploss , red, 25, 1+4,Alright);
//////////////////////////////////////////____________LONG___________________/////////////////////////////////////////////////////////
if  c>highd(1)
and GetNumOpEnterLongToday=0
and c>input1 //migliora un 100% a 14 anni
and condizioneB=0 // migliora un 25% a 14 anni
//and rangemensile22g>8 //ininfluente a 14 anni
//and condizionenolong=0 //migliora un 18% a 14 anni
then enterlong( nextbar,atopen);endif;

if positiondir=1 and c<dvmed then exitlong(nextbar,atopen);endif;
if positiondir=1 and contalg>34 and rapportosegnalepositivoup<8 then exitlong(nextbar,atopen);endif; // migliora un 80% a 14 anni...meno tempo a mercato
if positiondir=1 and gain>2 and rangemensile22g<12 then exitlong(nextbar,atopen);endif;// non da fastidio

//////////////////////////////////////////____________SHORT___________________/////////////////////////////////////////////////////////
if   c<lowd(1)
and GetNumOpEntershortToday=0
and c<input2 // migliora un 100% a 14 anni
and condizioneA=0 // migliora un 25% a 14 anni
//and rangemensile22g>8 // ininfluente a 14 anni
//and condizionenoshort=0 //migliora un 18% a 14 anni
then entershort( nextbar,atopen);endif;

if positiondir=-1 and c>dvmed then exitshort(nextbar,atopen);endif;
if positiondir=-1 and contash>34 and rapportosegnalepositivodown<8 then exitshort(nextbar,atopen);endif;  // migliora un 80% a 14 anni...meno tempo a mercato
if positiondir=-1 and gain>2 and rangemensile22g<12 then exitshort(nextbar,atopen);endif;//non da fastidio

vp1 = Createviewport(250);
Plotchart(Max_Gain_perc,vp1,red,solid,2);
Plotchart(Gain,vp1,green,solid,2);

vp2 = Createviewport(250);
Plotchart(contalongno,vp2,red,solid,2);
Plotchart(contalongsi,vp2,green,solid,2);

vp3 = Createviewport(250);
Plotchart(contashortno,vp3,red,solid,2);
Plotchart(contashortsi,vp3,green,solid,2);

7 comentarios:

  1. dopo lo vedo meglio...
    tra oggi e l'altroieri belle sberle stiamo prendendo

    ResponderEliminar
  2. ok ma perché le hai commentate fuori le due condizioni rangemensile22g e condizionenolong ?
    una ok ininfluente, l'altra migliora un 18% a 14 anni

    ResponderEliminar
  3. ah altra domanda, va bene se aggiungo and t<1730 anziché 1715 ? perché magari alle 17.15 puó ancora entrare, visto che alle 17 é ancora una candela utile

    ResponderEliminar
  4. mi pare di ricordare che se metti 1730 non va bene perchè praticamente per come lavora VT i dati confermati della candela delle 1715 li ha solo in apertura il giorno dopo..tipo il long scattato oggi alle 0900

    ResponderEliminar
  5. Ma con <1715 non entrerebbe con la candela della 1715 no?
    Posso mettere una cosa intermedia tipo 1720? :D

    ResponderEliminar
  6. mi sembra che se usi il frame 15 minuti dopo <1715 non funziona..controlla bene perchè altrimenti ti sbaglia tutto il backtest

    ResponderEliminar
  7. ho la versione free, quindi ho solo due mesi di storico.

    per il resto, l'altra sera il ts é uscito in after e mi ha eseguito (mi é pure andata bene), a sto punto quello che posso fare é di staccare il trading automatico dopo la chiusura e riaccenderlo al mattino...

    per il backtest mi fido dei tuoi, anche perché se backtesto gli ultimi due mesi col 50% non é molto entusiasmante :D

    ResponderEliminar

 era dal 26 marzo che i sistemi non si posizionavano long...oggi lo han fatto...area 21.90 posizionano il 1º take profit