Swing di Gann - VT

robom1

Forumer storico
Ciao a tutti, in allegato vi scrivo il codice in Visual Trader per l'identificazione degli swing di minimo e di massimo di Gann.

Il codice non ha alcuna valenza operativa e deve essere considerato esclusivamente un explorer.

Il programma esclude le barre inside anche multiple che intercorrono tra le tre barre che identificano lo swing di minimo o di massimo, attraverso lo shift dei valori.

Codice:
{******************************************************************************
* Swing Gann - robom1
******************************************************************************}
Var:  opeA(0), opeB(0), opeC(0),
      higA(0), higB(0), higC(0),
      lowA(0), lowB(0), lowC(0),
      cloA(0), cloB(0), cloC(0),
      barrainside(0), confronto(0),
      swing(0), swingattivo(0),
      indzona1, indzona2;
indzona1=CreateViewport(200, true, True);
indzona2=CreateViewport(200, true, True);
//******************************************************************************
//VERIFICA DELLE BARRE INSIDE
//le barre inside non vengono considerate; il confronto viene effettuato su
//high e min dell'ultima barra validata (per barra validata vedi success.)
if H <= higC and L >= lowC then barrainside = 1; else barrainside = 0; endif;
//******************************************************************************
//SHIFT DEI VALORI E DETERMINAZIONE DEI VALORI DELLE TRE BARRE DI CONFRONTO
//Se la barra non è inside occorre verificare che, nelle fasi preliminari vi
//siano almeno tre valori positivi su cui effettuare il confronto.
//Si possono avere pertanto i seguenti casi:
if barrainside = 0 then
//Caso A
//Esistono già tutte le serie dei tre valori di confronto; allora in questo
//caso si procede allo shift dei valori precedenti e il valore della barra
//corrente diventa il valore della barra C; in questo caso quindi si è
//proceduto allo shift dei valori precedenti e si potrà procedere al confronto
//per la verifica/determinazione di eventuali swing
                 if
                 opeA <> 0 and opeB <> 0 and opeC <> 0
                 then
                 opeA = opeB; higA = higB; lowA = lowB; cloA = cloB;
                 opeB = opeC; higB = higC; lowB = lowC; cloB = cloC;
                 opeC =    C; higC =    H; lowC =    L; cloC =    C;
                 confronto = 1;
                 endif;

//Caso B
//Esistono due delle tre serie di valori e manca la barra C; si procede quindi
//al solo inserimento della barra C senza procedere allo shift ed inoltre si
//procederà al confronto per la verifica/determinazione di eventuali swing.
                 if
                 opeA <> 0 and opeB <> 0 and opeC = 0
                 then
                 opeC =    C; higC =    H; lowC =    L; cloC =    C;
                 confronto = 1;
                 endif;
                 
//Caso C
//Esiste solo la serie relativa alla barra A mentre ancora mancano quelli della
//barra B; la barra B assumerà pertanto i valori correnti e non si potrà
//procedere al confronto in quanto mancano ancora i valori della barra C.
                 if
                 opeA <> 0 and opeB = 0
                 then
                 opeB = C; higB = H; lowB = L; cloB = C;
                 confronto = 0;
                 endif;

//Caso D
//Manca ancora il valore della barra A (siamo alla prima barra); la barra A
//assumerà pertanto i valori correnti e non si potrà procedere al confronto
//in quanto mancano ancora i valori della barra B e C.
                 if
                 opeA = 0
                 then
                 opeA =    C; higA =    H; lowA =    L; cloA =    C;
                 confronto = 0;
                 endif;
                 
endif;

//******************************************************************************
//DETERMINAZIONE DEGLI SWING DI MAX E SWING DI MIN
//Se la barra non è inside e puo' essere effettuato il confronto viene
//verificato se si tratta di uno swing di max

//Prima di iniziare il ciclo pongo lo swing uguale a zero
swing = 0;
//Faccio il ciclo solo se la barra non è inside e posso effettuare il confronto
if barrainside = 0 and confronto = 1 then

//Caso A. SWING DI MAX
//
//Confronto tra barra B e barra A:
// - la barra B deve avere un max maggiore di quello della barra A e un minimo
//   maggiore o uguale a quello della barra A
//
//Confronto tra la barra B e la barra C:
// - la barra B deve avere un massimo maggiore o uguale a quello della barra C
//   ed inoltre il minimo della barra C deve essere inferiore a quello della
//   barra B.
//La segnalazione dello swing di max viene effettuato sulla barra C
                 if
                 higB >  higA and
                 lowB >= lowA and
                 higB >= higC and
                 lowB >  lowC
                 then
                 swing = -1;
                 endif;
                 

//Caso B. SWING DI MIN
//
//Confronto tra barra B e barra A:
// - la barra B deve avere un massimo inferiore o uguale al massimo di A e
//   inoltre un minimo inferiore a quello di A.
//
//Confronto tra la barra B e la barra C:
// - la barra B deve avere un massimo inferiore al massimo di C ed inoltre
// un minimo inferiore o uguale al minimo di C
//La segnalazione dello swing di min viene effettuato sulla barra C
                 if
                 higB <= higA and
                 lowB <  lowA and
                 higB <  higC and
                 lowB <= lowC
                 then
                 swing = 1;
                 endif;
                 
endif;
//******************************************************************************
//COLORO LE INSIDE DI GIALLO
if barrainside = 1 then colorbar(yellow); endif;

//******************************************************************************
//DETERMINAZIONE DELLO SWING ATTIVO IN OGNI BARRA
//Se lo swing è diverso da zero chiaramente lo swing attivo sarà quello rilevato
//altrimenti sarà lo swing precedentemente determinato
if swing <> 0 then swingattivo = swing; else swingattivo = swingattivo[1]; endif;
PlotChart(swingattivo, indzona1, blue, istogramma, 3);
PlotChart(swing, indzona2, blue, solid, 3);
 
Ciao a tutti, in allegato vi scrivo il codice in Visual Trader per l'identificazione degli swing di minimo e di massimo di Gann.

Il codice non ha alcuna valenza operativa e deve essere considerato esclusivamente un explorer.

Il programma esclude le barre inside anche multiple che intercorrono tra le tre barre che identificano lo swing di minimo o di massimo, attraverso lo shift dei valori.

Codice:
{******************************************************************************
* Swing Gann - robom1
******************************************************************************}
Var:  opeA(0), opeB(0), opeC(0),
      higA(0), higB(0), higC(0),
      lowA(0), lowB(0), lowC(0),
      cloA(0), cloB(0), cloC(0),
      barrainside(0), confronto(0),
      swing(0), swingattivo(0),
      indzona1, indzona2;
indzona1=CreateViewport(200, true, True);
indzona2=CreateViewport(200, true, True);
//******************************************************************************
//VERIFICA DELLE BARRE INSIDE
//le barre inside non vengono considerate; il confronto viene effettuato su
//high e min dell'ultima barra validata (per barra validata vedi success.)
if H <= higC and L >= lowC then barrainside = 1; else barrainside = 0; endif;
//******************************************************************************
//SHIFT DEI VALORI E DETERMINAZIONE DEI VALORI DELLE TRE BARRE DI CONFRONTO
//Se la barra non è inside occorre verificare che, nelle fasi preliminari vi
//siano almeno tre valori positivi su cui effettuare il confronto.
//Si possono avere pertanto i seguenti casi:
if barrainside = 0 then
//Caso A
//Esistono già tutte le serie dei tre valori di confronto; allora in questo
//caso si procede allo shift dei valori precedenti e il valore della barra
//corrente diventa il valore della barra C; in questo caso quindi si è
//proceduto allo shift dei valori precedenti e si potrà procedere al confronto
//per la verifica/determinazione di eventuali swing
                 if
                 opeA <> 0 and opeB <> 0 and opeC <> 0
                 then
                 opeA = opeB; higA = higB; lowA = lowB; cloA = cloB;
                 opeB = opeC; higB = higC; lowB = lowC; cloB = cloC;
                 opeC =    C; higC =    H; lowC =    L; cloC =    C;
                 confronto = 1;
                 endif;

//Caso B
//Esistono due delle tre serie di valori e manca la barra C; si procede quindi
//al solo inserimento della barra C senza procedere allo shift ed inoltre si
//procederà al confronto per la verifica/determinazione di eventuali swing.
                 if
                 opeA <> 0 and opeB <> 0 and opeC = 0
                 then
                 opeC =    C; higC =    H; lowC =    L; cloC =    C;
                 confronto = 1;
                 endif;
                 
//Caso C
//Esiste solo la serie relativa alla barra A mentre ancora mancano quelli della
//barra B; la barra B assumerà pertanto i valori correnti e non si potrà
//procedere al confronto in quanto mancano ancora i valori della barra C.
                 if
                 opeA <> 0 and opeB = 0
                 then
                 opeB = C; higB = H; lowB = L; cloB = C;
                 confronto = 0;
                 endif;

//Caso D
//Manca ancora il valore della barra A (siamo alla prima barra); la barra A
//assumerà pertanto i valori correnti e non si potrà procedere al confronto
//in quanto mancano ancora i valori della barra B e C.
                 if
                 opeA = 0
                 then
                 opeA =    C; higA =    H; lowA =    L; cloA =    C;
                 confronto = 0;
                 endif;
                 
endif;

//******************************************************************************
//DETERMINAZIONE DEGLI SWING DI MAX E SWING DI MIN
//Se la barra non è inside e puo' essere effettuato il confronto viene
//verificato se si tratta di uno swing di max

//Prima di iniziare il ciclo pongo lo swing uguale a zero
swing = 0;
//Faccio il ciclo solo se la barra non è inside e posso effettuare il confronto
if barrainside = 0 and confronto = 1 then

//Caso A. SWING DI MAX
//
//Confronto tra barra B e barra A:
// - la barra B deve avere un max maggiore di quello della barra A e un minimo
//   maggiore o uguale a quello della barra A
//
//Confronto tra la barra B e la barra C:
// - la barra B deve avere un massimo maggiore o uguale a quello della barra C
//   ed inoltre il minimo della barra C deve essere inferiore a quello della
//   barra B.
//La segnalazione dello swing di max viene effettuato sulla barra C
                 if
                 higB >  higA and
                 lowB >= lowA and
                 higB >= higC and
                 lowB >  lowC
                 then
                 swing = -1;
                 endif;
                 

//Caso B. SWING DI MIN
//
//Confronto tra barra B e barra A:
// - la barra B deve avere un massimo inferiore o uguale al massimo di A e
//   inoltre un minimo inferiore a quello di A.
//
//Confronto tra la barra B e la barra C:
// - la barra B deve avere un massimo inferiore al massimo di C ed inoltre
// un minimo inferiore o uguale al minimo di C
//La segnalazione dello swing di min viene effettuato sulla barra C
                 if
                 higB <= higA and
                 lowB <  lowA and
                 higB <  higC and
                 lowB <= lowC
                 then
                 swing = 1;
                 endif;
                 
endif;
//******************************************************************************
//COLORO LE INSIDE DI GIALLO
if barrainside = 1 then colorbar(yellow); endif;

//******************************************************************************
//DETERMINAZIONE DELLO SWING ATTIVO IN OGNI BARRA
//Se lo swing è diverso da zero chiaramente lo swing attivo sarà quello rilevato
//altrimenti sarà lo swing precedentemente determinato
if swing <> 0 then swingattivo = swing; else swingattivo = swingattivo[1]; endif;
PlotChart(swingattivo, indzona1, blue, istogramma, 3);
PlotChart(swing, indzona2, blue, solid, 3);


è sempre un piacere e uno stimolo leggere i tuoi lavori, Robom :) :up:
 
Ciao a tutti, in allegato vi scrivo il codice in Visual Trader per l'identificazione degli swing di minimo e di massimo di Gann.

Il codice non ha alcuna valenza operativa e deve essere considerato esclusivamente un explorer.

Il programma esclude le barre inside anche multiple che intercorrono tra le tre barre che identificano lo swing di minimo o di massimo, attraverso lo shift dei valori.

Codice:

Grazie del programmino.
Sto testando operativamente la cosa e vedendo se in pratica può avere delle applicazioni. Se qualcuno ha già fatto dei test e magari pubblicare le sue osservazioni è gradito.
 

Users who are viewing this thread

Back
Alto