Raccolta di T.S. per Visual Trader

ciao Macio :)

non sapevo che appartenevi alla categoria degli scienziati che sviluppano sti linguaggi e roba varie di cui non capisco una mazza :wall:

giusto te o magari qualche anima pia che mi spieghi una cosa anzi due

ma visual trader e' programmato in vb.net per caso ?
e fortunatamente lo fosse, e' difficile fare un programmino per automatizzare un sistemino casereccio che seguo sul bund ?

ti spiego:
ho una piatta americana per tradare il bund che e' fastbrokers con piatta pathfinder che mi ha detto il desk usa il linguaggio vb.net oc plast (se ho scritto bene )
ho visto che ha due ts che si possono fare in automatico ma non mi servono
vorrei insomma scriverne uno io e adoperarlo (magari prima in back test :D ) e poi collegarlo al book
insomma ..alla mattina schisco il bottone,alla sera incasso e vivo felice :D

scherzo..volevo sapere se si puo' fare..curiosita' prima di morire :p

ohh..se macio fosse assente gradirei anche ,e ringrazierei, chiunque mi da' queste delucidazioni
grazie mille
domenico


Ciao Domenico,
come va??

Il fatto che abbia chiesto delucidazioni a lelle dimostra che ci capisco anch'io poco a causa del poco tempo che ho per studiarmi V.T. che non ha niente a che fare con vb.net :rolleyes:
Di solito li prendo preconfezionati e poi li modifico a mio uso e consumo :rolleyes:

Sono sicuro che vivrai felice lo stesso :D...pero' spero che qualcuno preparato possa darti una mano ;)
 
è scritta nella zona dei grafici verso la fine del ts

plotchartNoZero(myeqopclosed, zona_s, black, solid, 3);

No,non funziona percche' una volta cancellati mi scrive:

Verifica Formula ... Errore
Errore di Sintassi in Riga n° 11: Errore durante il parse dell'espressione: GETREPORT(TOTNETPROFIT)
 
No,non funziona percche' una volta cancellati mi scrive:

Verifica Formula ... Errore
Errore di Sintassi in Riga n° 11: Errore durante il parse dell'espressione: GETREPORT(TOTNETPROFIT)

ecco ti ho tolto tutto quello che ha a che fare con l'equity

Codice:
var: media1,media2,media3,media4,media5,media6,media7,media8,parmedia(30),parmedia1(10),signtrix,trix,zona;
//--- per enter / exit
Var:  k_pos(7), colore, stato, ingresso;
var: zona_d,Line0;
//var: myequity, mediaeq, condLong, condShort, myeqopclosed,zona_s;

// linea dello zero, per plottarla devo fare un vettore con tutti zeri
Line0 = Constval(0);

{myeqopclosed = getReport(EQOPCLOSED);
myequity = getReport(TOTNETPROFIT); // Estraggo il valore di equity attuale
mediaeq = MOV(myequity, 30, S);  // Faccio la media dell'equity}


media1 = mov(C,parmedia,s);
media2 = mov (media1,parmedia,s);
media3 = mov (media2,parmedia,s);
media4 = mov (media3,parmedia,s);
trix = (media4[0] - media4[1]) / media4[1];
media5 = mov(C,parmedia1,e);
media6 = mov (media5,parmedia1,e);
media7 = mov (media6,parmedia1,e);
media8 = mov (media7,parmedia1,e);
signtrix = (media8[0] - media8[1]) / media8[1];


if positiondir <> 1 then
if signtrix > 0 and crossover (signtrix, trix) then
enterlong (nextbar,atopen);
colore = green; ingresso = C;
   DrawVLine(NEWOGG, 0, GetDate, green, 1, 0);
   DrawText(NEWOGG, 0, D, addtick(ingresso, - k_pos), "  Ln",  ingresso, colore, 11, 1+4, 1);
   endif; endif;

If positiondir <> -1  then
if  signtrix < 0 and crossunder (signtrix, trix) then
entershort (nextbar,atopen);
colore = red; ingresso = C;
   DrawText(NEWOGG, 0, D, addtick(ingresso, k_pos), "  Sh",  ingresso, colore, 11, 1+4, 1);
   DrawVLine(NEWOGG, 0, GetDate, red, 1, 0);
   endif; endif;

colorbar(colore);

zona = CreateViewport(200, 0, true);
plotchart(trix, zona, red, solid, 3);
plotchart(signtrix, zona, green, solid, 3);

//plotchart(media1, 0, red, solid, 3);
DrawHLine (NEWOGG, zona, Line0, fuchsia, 2, 0); // linea dello zero

{// disegno l'equity e la sua media
zona_s = CreateViewport(200, 0, true);
plotchartNoZero(myequity, zona_s, green, solid, 2);
plotchartNoZero(mediaeq, zona_s, red, solid, 2);
plotchartNoZero(myeqopclosed, zona_s, black, solid, 3);}

zona_d = CreateViewport(100, 0, true);
if positiondir = 1 then
  // DrawVLine(NEWOGG, 0, GetDate, green, 1, 0);
   PlotChart( 1, zona_d, green, istogramma, 2) ;
   endif;
if positiondir = -1 then
  // DrawVLine(NEWOGG, 0, GetDate, red, 1, 0);
   PlotChart( -1, zona_d, red, istogramma, 2) ;
   endif;
 
ecco ti ho tolto tutto quello che ha a che fare con l'equity

Codice:
var: media1,media2,media3,media4,media5,media6,media7,media8,parmedia(30),parmedia1(10),signtrix,trix,zona;
//--- per enter / exit
Var:  k_pos(7), colore, stato, ingresso;
var: zona_d,Line0;
//var: myequity, mediaeq, condLong, condShort, myeqopclosed,zona_s;

// linea dello zero, per plottarla devo fare un vettore con tutti zeri
Line0 = Constval(0);

{myeqopclosed = getReport(EQOPCLOSED);
myequity = getReport(TOTNETPROFIT); // Estraggo il valore di equity attuale
mediaeq = MOV(myequity, 30, S);  // Faccio la media dell'equity}


media1 = mov(C,parmedia,s);
media2 = mov (media1,parmedia,s);
media3 = mov (media2,parmedia,s);
media4 = mov (media3,parmedia,s);
trix = (media4[0] - media4[1]) / media4[1];
media5 = mov(C,parmedia1,e);
media6 = mov (media5,parmedia1,e);
media7 = mov (media6,parmedia1,e);
media8 = mov (media7,parmedia1,e);
signtrix = (media8[0] - media8[1]) / media8[1];


if positiondir <> 1 then
if signtrix > 0 and crossover (signtrix, trix) then
enterlong (nextbar,atopen);
colore = green; ingresso = C;
   DrawVLine(NEWOGG, 0, GetDate, green, 1, 0);
   DrawText(NEWOGG, 0, D, addtick(ingresso, - k_pos), "  Ln",  ingresso, colore, 11, 1+4, 1);
   endif; endif;

If positiondir <> -1  then
if  signtrix < 0 and crossunder (signtrix, trix) then
entershort (nextbar,atopen);
colore = red; ingresso = C;
   DrawText(NEWOGG, 0, D, addtick(ingresso, k_pos), "  Sh",  ingresso, colore, 11, 1+4, 1);
   DrawVLine(NEWOGG, 0, GetDate, red, 1, 0);
   endif; endif;

colorbar(colore);

zona = CreateViewport(200, 0, true);
plotchart(trix, zona, red, solid, 3);
plotchart(signtrix, zona, green, solid, 3);

//plotchart(media1, 0, red, solid, 3);
DrawHLine (NEWOGG, zona, Line0, fuchsia, 2, 0); // linea dello zero

{// disegno l'equity e la sua media
zona_s = CreateViewport(200, 0, true);
plotchartNoZero(myequity, zona_s, green, solid, 2);
plotchartNoZero(mediaeq, zona_s, red, solid, 2);
plotchartNoZero(myeqopclosed, zona_s, black, solid, 3);}

zona_d = CreateViewport(100, 0, true);
if positiondir = 1 then
  // DrawVLine(NEWOGG, 0, GetDate, green, 1, 0);
   PlotChart( 1, zona_d, green, istogramma, 2) ;
   endif;
if positiondir = -1 then
  // DrawVLine(NEWOGG, 0, GetDate, red, 1, 0);
   PlotChart( -1, zona_d, red, istogramma, 2) ;
   endif;


Grazie,ora provo ad ottimizzarlo...se ci riesco :D ;)
 
TS sommavolumi intraday

//________________TS Sommavolumi intraday__________________//
Codice:
Var: sommavol,indzona1;

if IsFirstBarDay then
  SommaVol = 0;
endif;

SommaVol = SommaVol + V;

indzona1 = Createviewport(300);
PlotChart(sommavol,indzona1,red,solid,2);
DrawText(NEWOGG,indzona1 , D,sommavol , "s.v.",sommavol, black, 25, 1+4,Alright);

Salve a tutti,
premetto che non ne capisco molto di queste programmazioni, ma volevo chiedere

in riferimento al TS sommavolumi intraday

se era possibile far apparire questo contatore numerico dei volumi direttamente nel grafico, magari in alto a dx, senza il diagramma della parte bassa.

mi riferisco solo al numero che si incrementa con i volumi giornalieri.

se si puo' fare, potreste postare il codice ???


grazie per aver aperto questa discussione,
molto ben fatta.
 
a regola no a causa del conflitto di differenza lettura scale di misurazione

Grazie tante per la risposta ... ..

solo una precisazione,
sto notando che il contatore si incrementa solo a candela ultimata,
ad es. dopo 5min,

non si puo' fare in realtime ???
(magari e' soggetto allo stesso problema)

comunque ottimo lavoro
rinnovo i complimenti per i ts postati e l'ottima chiarezza nel'esporli.
 
Grazie tante per la risposta ... ..

solo una precisazione,
sto notando che il contatore si incrementa solo a candela ultimata,
ad es. dopo 5min,

non si puo' fare in realtime ???
(magari e' soggetto allo stesso problema)

comunque ottimo lavoro
rinnovo i complimenti per i ts postati e l'ottima chiarezza nel'esporli.

per come lavora Visual Trader il consiglio è usare dati con nextbar,atopen ( effettua l'operazione in apertura della barra successiva alla condizione ) per evitare differenze di valori tra Back testing e Realtime
 
ciao xavi, piccolo contributo......


Var: TSV(0), VPOS(0), VNEG(0), VPOSS(0), VNEGG(0), ZONA1;
INPUT: PERIODI(14);

//* TSV - TIME SEGMENTED VOLUME
//* REGOLE:

//* ANALISI BREVE TERMINE INPUT DA 9 A 12
//* ANALISI DI MEDIO TERMINE INPUT DA 18 A 25
//* ANALISI DI LUNGO TERMINE INPUT DA 35 A 45

//TSV = Sum ((IIF(C > Ref(C,1),V*(C-Ref(C,1)),0), IIF (C < Ref(C,1),-V*(C-Ref(C,1)),0),18);

IF C > C[1] THEN
VPOS = V * (C - Ref(C,1));
ELSE
VPOS = 0;
ENDIF;

IF C < C[1] THEN
VNEG = -V * (C - Ref(C,1));
ELSE
VNEG = 0;
ENDIF;

VPOSS=SUM(VPOS,PERIODI);
VNEGG=SUM(VNEG,PERIODI);

zona1=CreateViewport(400,true,true);
PlotChart(VPOSS,zona1,LIME,solid,2);
PlotChart(VNEGG,zona1,red,solid,2);
 
Scusate l'ardire :rolleyes:

Non avreste un TS tf1minuto da smanopolare...non certo il
vostro preferito con cui gainate quotidianamente:D...
...ma qualcosa che avete li',in soffitta,oppure un brutto anatroccolo che puo' diventare un cigno...poi vi riferirei i risultati :bow::bow::bow:
 
per come lavora Visual Trader il consiglio è usare dati con nextbar,atopen ( effettua l'operazione in apertura della barra successiva alla condizione ) per evitare differenze di valori tra Back testing e Realtime


Avevo super ottimizzato questo con ottimi risultati,ma senza nextbar,atopen
poi sul campo... :rolleyes:


Var: ALFA,KK,KKA,OMEGA,DIN,DON;

ALFA = R[1]+R[2];
kka = iif (ALFA > 50,ALFA,0);
KK = KKA/4;
OMEGA= C[1];

DIN = OMEGA + KK;
DON = OMEGA - KK;

Installtrailingprofit (INTICK,25);

if KKA > 0 AND W and H > DIN then enterlong (bar,DIN,stop,1);
endif;

if KKA > 0 AND B and L < DON then entershort (bar,DON,stop,1);
endif;

DrawHline (NEWOGG,0,DIN,LIME,2,0);
DrawHline (NEWOGG,0,DON,FUCHSIA,2,0);
 
ALPHATRACK

Codice:
Var: value1,value2,value3,lambda(0),alpha(0),zona1;

Value1 = 0.2*(c - c[1]) + 0.8*Value1[1];
Value2 = 0.1*(H - L) + 0.8*Value2[1];
if Value2<>0 then lambda = Abs(Value1 / Value2);endif;
alpha = ( -1 * lambda*lambda + Sqrt(lambda*lambda*lambda*lambda + 16*lambda*lambda)) /8;
Value3 = alpha*C + (1-alpha)*Value3[1];

if Value3[1]<Value3 and a>Value3 then EnterLong(NextBar, atopen);endif;
if Value3[1]>Value3 and a<Value3 then EnterShort(NextBar, atopen);endif;

ZONA1 = Createviewport (200, true, true);
Plotchart(value3, 0, colupdownval ,solid, 2);
 
VFI

Codice:
Input: Coef(0.2), VCoef(2.5), Period(128), EmaBB(3), MavBB(50);

Var: TP(0), Inter(0), VInter(0), CutOff(0), VAve(0), VMax(0), VC(0), MF(0), VFI(0),
DirectionalVolume(0), DVNeg, oVFI(0), EmaVFI(0), MavVFI(0), MyVolume(0), Indzona1, Line0,
NCutOff, NVC, ColoreVfi, MiaSum, IdOgg1(NEWOGG);

// linea dello zero, per plottarla devo fare un vettore con tutti zeri
Line0 = Constval(0);

// typical price = (C + H + L) /3
TP = OP(OP(OP(C, L, Add), H, Add), constval(3),divis);
MF = OP(TP, Ref(TP,1), sub);
VAve = REF(mov(V, Period, S), 1);


Inter = OP(OSC_LOG(TP,10),OSC_LOG(ref(TP,1),10),sub);
VInter = StdDev(Inter, 30, 0);

CutOff = OP(OP(constval(Coef), VInter, Mul), C, Mul);
NCutOff = OP(CutOff, constval(-1),Mul);

VMax = OP(VAve, Constval(VCoef), Mul);
VC = OSC_CompareValues(V, VMax, L, V, VMax); // if V < VMax -> V, altrimenti VMax
NVC = OP(VC, constval(-1), Mul);

DVNeg = OSC_CompareValues(MF, NCutOff, L, NVC, constval(0));

DirectionalVolume = OSC_CompareValues(MF, CutOff, G, VC, DVNeg); // if V < VMax -> V, altrimenti VMax

MiaSum = SUM(DirectionalVolume, Period);

VFI = OP(MiaSum, VAve, Divis);

EmaVFI = MOV(VFI, EmaBB, E);
MavVFI = MOV(VFI, MavBB, S);

if VFI > 0 then
ColoreVfi = Green;
else
ColoreVfi = Red;
endif;

If crossover(VFI, Line0) then
IdOgg1 = DrawText(IdOgg1, 0, D, H, "Vfi Crossover 0", 0, green, 8, 1+4, 1);
enterlong(nextbar, atopen);
endif;
if crossunder(VFI, Line0) then
IdOgg1 = DrawText(IdOgg1, 0, D, H, "Vfi Crossunder 0", 0, red, 8, 1+4, 1);
entershort(nextbar, atopen);
endif;

if positiondir=1 and EmaVFI<MavVFI and MavVFI[1]<MavVFI then exitlong (nextbar, atopen);
endif;
if positiondir=-1 and EmaVFI>MavVFI and MavVFI[1]>MavVFI then exitshort (nextbar, atopen);
endif;

// creo una nuova zona e plotto tutte le linee
Indzona1 = CreateViewport(500, true, true);
PlotChart(VFI, Indzona1, ColoreVfi, solid, 2);
PlotChart(EmaVFI, Indzona1, green, solid, 2);
PlotChart(MavVFI, Indzona1, blue, solid, 2);
DrawHLine (NEWOGG, indzona1, Line0, fuchsia, 2, 0); // linea dello zero
 
questa l'ho inventata io ....(quindi abbiate pazienza se non serve a nulla:D)

SUPERMEDIA

Codice:
//VARIABILE SUPERMEDIA//
Var: LL0(0), LL1(0), LL2(0), Filt(0), gamma(0.9);
Var: STARCMA, STARCBandaSuperiore, STARCBandaInferiore;
Var:Hlv, SUPERMEDIA, Hld, tmpHLD, mediaH, mediaL,colore;
Input: p(15);

//INDICATORE SUPERMEDIA//
LL0=(1-gamma)*c+gamma*LL0[1];
LL1=-gamma*LL0+LL0[1]+gamma*LL1[1];
LL2=-gamma*LL1+LL1[1]+gamma*LL2[1];
FIlt=(LL0+2*LL1+LL2)/4;
STARCBandaSuperiore = Filt + stddev(c, p) - ATR(c, p);
STARCBandaInferiore = Filt - stddev(c, p) + ATR(c, p);

mediaH = STARCBandaSuperiore;
mediaL = STARCBandaInferiore;
if C > mediaH[1] then
    hld = 1;
    HLv = hld;
elseif C < mediaL[1] then
    hld = -1;
    HLv = hld;
else
    hld = 0;
    hlv = hlv[1];
endif;

if hlv = -1 then
    SUPERMEDIA = mediaH;
else
    SUPERMEDIA = mediaL;
endif;

if c>SUPERMEDIA then colore = green;else colore =red;endif;

plotchartnozero(SUPERMEDIA,0,colore,solid,2);
 
ALPHATRACK

Codice:
Var: value1,value2,value3,lambda(0),alpha(0),zona1;

Value1 = 0.2*(c - c[1]) + 0.8*Value1[1];
Value2 = 0.1*(H - L) + 0.8*Value2[1];
if Value2<>0 then lambda = Abs(Value1 / Value2);endif;
alpha = ( -1 * lambda*lambda + Sqrt(lambda*lambda*lambda*lambda + 16*lambda*lambda)) /8;
Value3 = alpha*C + (1-alpha)*Value3[1];

if Value3[1]<Value3 and a>Value3 then EnterLong(NextBar, atopen);endif;
if Value3[1]>Value3 and a<Value3 then EnterShort(NextBar, atopen);endif;

ZONA1 = Createviewport (200, true, true);
Plotchart(value3, 0, colupdownval ,solid, 2);



C'e' un errore in colupdonwval :rolleyes:
 
C'e' un errore in colupdonwval :rolleyes:

colupdownval è una nuova funzione della versione beta di vt. Se non hai appunto la beta il ts va in errore.
Ti mando lo stesso ts senza questa nuova funzione, con i colori inseriti in un altro modo.
Codice:
Var: value1,value2,value3,lambda(0),alpha(0),zona1;
var: colore;

Value1 = 0.2*(c - c[1]) + 0.8*Value1[1];
Value2 = 0.1*(H - L) + 0.8*Value2[1];
if Value2<>0 then lambda = Abs(Value1 / Value2);endif;
alpha = ( -1 * lambda*lambda + Sqrt(lambda*lambda*lambda*lambda + 16*lambda*lambda)) /8;
Value3 = alpha*C + (1-alpha)*Value3[1];

if Value3[1]<Value3 and a>Value3 then EnterLong(NextBar, atopen);colore = green;endif;
if Value3[1]>Value3 and a<Value3 then EnterShort(NextBar, atopen);colore = red;endif;

colorbar(colore);


ZONA1 = Createviewport (200, true, true);
Plotchart(value3, 0, colore ,solid, 2);
 
colupdownval è una nuova funzione della versione beta di vt. Se non hai appunto la beta il ts va in errore.
Ti mando lo stesso ts senza questa nuova funzione, con i colori inseriti in un altro modo.
Codice:
Var: value1,value2,value3,lambda(0),alpha(0),zona1;
var: colore;

Value1 = 0.2*(c - c[1]) + 0.8*Value1[1];
Value2 = 0.1*(H - L) + 0.8*Value2[1];
if Value2<>0 then lambda = Abs(Value1 / Value2);endif;
alpha = ( -1 * lambda*lambda + Sqrt(lambda*lambda*lambda*lambda + 16*lambda*lambda)) /8;
Value3 = alpha*C + (1-alpha)*Value3[1];

if Value3[1]<Value3 and a>Value3 then EnterLong(NextBar, atopen);colore = green;endif;
if Value3[1]>Value3 and a<Value3 then EnterShort(NextBar, atopen);colore = red;endif;

colorbar(colore);


ZONA1 = Createviewport (200, true, true);
Plotchart(value3, 0, colore ,solid, 2);



Lelle,se non esistessi bisognerebbe inventarti!!! :D ;)
 
ciao arrizzo...lo hanno insegnato anche a me..se vuoi postare un codice metti all' inizio
Codice:
 ed alla fine
;)


ciao xavi....si infatti grazie...ho qualche dubbio vediamo se ho capito :mmmm:

codice:

input: Vola1 (3), Vola2(21);
Var: HClose(-99999), LClose(99999), Var1(0), Var2, TRAILINGSTOP;

Var1 = Op(constval(Vola1), stddev(C, Vola2), Mul);
HClose = IIF(C > HClose, C, HClose);
LClose = IIF(C < LClose, C, LClose);

If (Var2 = 0) and (CurrentBar <= 1) then
Var2 = HClose - Var1;
endif;

If (C < Var2) then
Var2 = LClose + Var1;
HClose = C;
Endif;

If (C > Var2) then
Var2 = HClose - Var1;
LClose = C;
Endif;

If (CurrentBar > 1) Then
TRAILINGSTOP = Var2[1];
endif;

PlotChart(TRAILINGSTOP, 0, dash, solid, 2);
 
ciao xavi....si infatti grazie...ho qualche dubbio vediamo se ho capito :mmmm:

codice:

input: Vola1 (3), Vola2(21);
Var: HClose(-99999), LClose(99999), Var1(0), Var2, TRAILINGSTOP;

Var1 = Op(constval(Vola1), stddev(C, Vola2), Mul);
HClose = IIF(C > HClose, C, HClose);
LClose = IIF(C < LClose, C, LClose);

If (Var2 = 0) and (CurrentBar <= 1) then
Var2 = HClose - Var1;
endif;

If (C < Var2) then
Var2 = LClose + Var1;
HClose = C;
Endif;

If (C > Var2) then
Var2 = HClose - Var1;
LClose = C;
Endif;

If (CurrentBar > 1) Then
TRAILINGSTOP = Var2[1];
endif;

PlotChart(TRAILINGSTOP, 0, dash, solid, 2);

azz mi sa che non ho capito :wall:
 
TS conteggio massimi e minimi intraday
Codice:
var: wmax1,wmin1,contaDmax1,contaDmin1,indzona1;


if isfirstbarday then
   WMAX1=H;
   WMIN1=L;
   else
   WMAX1=iif(H>=WMAX1[1],H,WMAX1[1]);
   WMIN1=iif(L<=WMIN1[1],L,WMIN1[1]);
endif;
PlotChart(WMAX1,0,green, solid, 1);
PlotChart(WMIN1,0, red, solid, 1);


//////////////////////////////////////////////////////////////////////////////
if  wmax1>wmax1[1] then contaDmax1=contaDmax1+1;endif;
if  wmin1<wmin1[1] then contaDmin1=contaDmin1+1;endif;
if isfirstbarday then contaDmax1=1;endif;
if isfirstbarday then contaDmin1=1;endif;


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

Indzona1=CreateViewport(250,0,true);
PlotChart(contaDmax1,indzona1,green,solid,2);
PlotChart(contaDmin1,indzona1,red,solid,2);
DrawText(NEWOGG,indzona1 , D,contaDmax1 , " Maxintra ",contaDmax1 , black, 12, 1+4,Alright);
DrawText(NEWOGG,indzona1 , D,contaDmin1 , " Minintra ",contaDmin1 , black, 12, 1+4,Alright);
 

Allegati

  • ScreenShot030.png
    ScreenShot030.png
    55,7 KB · Visite: 173
postare un ts senza dire che time frame usare, ha poco senso
 
Indietro