Visual Trader T.S. : Logica di base

a no, ho modificato il valore dell'rsi

RSI1=RSI(C,8,S);


RSI1=RSI(C,14,S);


se lo metto a 14 me le da gialle e rosse oltre alle nere, ma nn mi sembra le dia in base all'impostazione dell'rsi data da me.

però forse ho capito, è else che da il problema.

ho provato questo comando ma nn so come metterlo e se va bene.

if RSI1 WithIn(RSI1, 30, 70 ) then ColorBar(Black);

endif;

mi da il seguente errore:

Linea 24: Errore di sintassi: Mi aspetto i seguenti token: ( [ - ) * , / ; ] + < <= <> = > >= AND DIV MOD OR THEN
 
Ultima modifica:
Scritto da lele2
hahahaha fantastico, ora senza aver modificato nulla sul listato dell'rsi sul grafico mi mostra delle barre gialle :D


l'unica cosa ke ho fatto è aggiongere una mm nella sezione long

if MedMob1 > MedMob2 and MedMob2 > MedMob3 then

EnterLong(Nextbar,AtOpen); // COMPRA


ho aggiunto "and MedMob2 > MedMob3 "

e le barre di incanto diventano gialle.

mah.
il listato completo è:

Var:RSI1(0);

RSI1=RSI(C,8,S);

SECTION_ENTERLONG:
// Acquistiamo se la media mobile veloce sale oltre la media lenta
if MedMob1 > MedMob2 and MedMob2 > MedMob3 then

EnterLong(Nextbar,AtOpen); // COMPRA

if RSI1 <= 20 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
endif;
else ColorBar(Black);
endif;
END_SECTION
___________________________________________________

Lele secondo me questo listato non è corretto in quanto non hai definito le varie MedMob ed inoltre in fondo ha un endif di troppo.


Se vuoi colorare le barre prova questo e se ti va bene lo salvi come indicatore:

Var:RSI1(0);

RSI1=RSI(C,8,S);

if RSI1 <= 20 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
endif;

ciao
 
grazie, le mm le ho impostate ma nn le ho postate quà, quelle vanno.


ho provato come dici ma nn funziona.

anzi addirittura mi richiede due endif; e nn so il perchè.

if RSI1 <= 30 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
endif; ENDIF DI TROPPO SE LO TOLGO MI DA ERRORE
//if RSI1 WithIn(RSI1, 30, 70 ) then ColorBar(Black);
// endif;
//if RSI1 <70 then ColorBar(Black);
endif;

----

ho messo le // per nn cancellare il codice precendente
 
img, l'rsi ho provato a metterla a 4
 

Allegati

  • codice.png
    codice.png
    4,6 KB · Visite: 197
forse ho capito qualcosina, le // nn considerano testo se all'interno ci stanno dei codici script.

provo a toglierli.
 
capperoni:D

sembra funzionare ora.

ora vedo se ha altri problemi

però vorrei capire bene perchè nn posso mettere un sorgente come testo davanti a //.

grazie
 
i colori nn sono corretti rispetto all'rsi.

l'ho impostata a 4 , le linee nere sull'rsi sono i valori 70 e 30, ma come si nota ci sono solo due casi con barre gialle >70 mentre l'rsi è salita + volte sopra 70.

quindi penso ci siano degli errori un po si tutto il codice, pure per le barre rosse o nere.

uffa
 

Allegati

  • rsi e colori nn mi sembrano corretti.png
    rsi e colori nn mi sembrano corretti.png
    14,3 KB · Visite: 313
Ho tentato di fare un TS che gestisse il Pattern 25 in intraday ma sempre su verifica daily.
La sintassi è stata verificata tuttavia il TS non si attiva.Evidentemente avrò bisogno di chiarire l’utilizzo della funzione GETVALUES per cui vi chiedo di indicarmi la soluzione agli errori nel listato.

{******************************************************************************
Prova di gestione del TS 25EOD di E. Malverti, in intraday
******************************************************************************}
Input:Nbarre(25);// ipotesi di applicazione su barre a 20 minuti

Var: PAT25(false),Day1(False),Day2(false),Op1(O),C1(C),H1(H),L1(L),
Op2(O),C2(C),H2(H),L2(L),Ap(O),TG(0),Targhet(0),Ntrade(0),NB(0);

if IsFirstBarDay then
Ap = Open[0]; // Apertura odierna
Day1 = GetValues(days,1,Op1,L1,H1,C1);
Day2 = GetValues(days,2,Op2,L2,H2,C2);
TG = (H2-L2); // Targhet pari all'altezza della barra di 2 giorni prima
Ntrade =0; //Serve a limitare il numero di entrate
NB = 0; //Conterà il numero di barre dall'entrata
if Day1 = true and Day2 = true then
Pat25 = ((H1 > H2) and (C1 > C2) and ((H1 -L1) > (H2 - L2) and (AP < C1))); //Pattern
endif;

endif;

SECTION_ENTERLONG:
if RangeDate(19980818, 21001231) Then
if Pat25 = True and Ntrade = 0 then
EnterLong(nextBar, AtOpen); // Compro al valore di apertura della seconda barra
NB= 1; // conta il numero di barre dall'apertura della posizione
Targhet = PositionValue + TG; // Imposta il livello del targhet
Ntrade = 1; //Questo valore impedisce il rientro Long del TS nel corso della giornata
endif;
endif;

END_SECTION

if NB > 0 then
NB = NB+1; // aggiorna il contatore delle barre
endif;

SECTION_EXITLONG:
if NB < Nbarre then
ExitLong(NextBar, Targhet); //Uscita a targhet
endif;
if NB = Nbarre then
ExitLong(NextBar, AtOpen); //Uscita dopo Nbarre
endif;

END_SECTION
 
Catene IF...THEN...ELSEIF...ELSE...ENDIF

Scritto da lele2
Var:RSI1(0);

RSI1=RSI(C,8,S);

SECTION_ENTERLONG:
// Acquistiamo se la media mobile veloce sale oltre la media lenta
if MedMob1 > MedMob2 and MedMob2 > MedMob3 then

EnterLong(Nextbar,AtOpen); // COMPRA

if RSI1 <= 20 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
endif;
else ColorBar(Black);
endif;
END_SECTION [/B]


1) C'e' un errore nella catena "if .... else".
Aprendo il manuale dei TS di VT, sezione "Sintassi del Linguaggio", dove parla di "if .... endif" si legge:

"Notare che un'Istruzione termina sempre con endif seguito dal punto e virgola ".

Piu' sotto poi e' riportato un esempio corretto di "if... else":
-------------------
if x = 5 then
  x = x * 20;
else
  x = x / 20;
endif;
-------------------

Come si vede quindi ogni gruppo "IF" finisce COMUNQUE con "ENDIF", anche se in mezzo si mette un "ELSE".

Nel codice postato da lele2 si legge:

if RSI1 <= 20 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
endif;
else ColorBar(Black);
endif;

Quindi l'ultimo "else" e' "orfano", in quanto la parte "IF" e' gia' chiusa dall' "ENDIF" precedente.
E' un errore, ma la verifica di sintassi non lo segnala.

Credo che lele2 volesse scrivere:

if RSI1 <= 20 then ColorBar(Red);
endif;
if RSI1 >= 70 then ColorBar(Yellow);
else ColorBar(Black);
endif;

... ma non funzionerebbe comunque.
Questa sintassi infatti dice "se RS1 e' maggiore o uguale a 70 colora di giallo, altrimenti di nero".
E di rosso, con RSI inferiore o uguale a 20? La prima riga, che potrebbe colorare di rosso la barra, NON VALE, in quanto il secondo IF e'

"assoluto", comprende cioe' TUTTI i casi possibili (da 70 in su o "tutto il resto").

Il codice corretto e' il seguente:


if RSI1 <= 20 then
  ColorBar(Red);
elseif RSI1 >= 70 then
  ColorBar(Yellow);
else
  ColorBar(black);
endif;

Il codice si legge "Da 20 in giu' colora di rosso, ALTRIMENTI colora giallo da 70 in su oppure di nero".

Ultima cosa: e' particolare che il codice di colorazione delle barre sia stato inserito dentro la sezione "CASE_ENTERLONG":
in questo modo infatti si esegue la colorazione solo quando abbiamo aperto la posizione, mentre nel resto delle volte il grafico rimane al colore "naturale".

NOTA BENE:
Per non incorrere in errori di questo tipo, consigliamo SEMPRE di identare le clausole IF...ENDIF.
Cioè usate i tab (o gli spazi), dopo then, else....
vedi esempio sopra.
In questo modo si vede subito dov'è il problema.


Cordiali Saluti
Staff Traderlink
 
Avviso (ZIGZAG)

Attenzione allo "ZIGZAG"
==================

Tra i tanti indicatori, utilizzati nell'analisi tecnica, lo "ZigZag" e' forse quello che va utilizzato con maggiore "cautela", quando si scrive un TS.

Provate da VT ad applicare lo ZigZag ad un titolo EndOfDay, con ad esempio il 5% come valore di inversione, (si consulti il manuale d iVT per la spiegazione completa dello ZigZag) ed osservate il risultato:
Apparentemente l'indicatore e' "fantastico", nel segnalare con precisione i punti di inversione del titolo. In realta' l'indicatore ZigZag funziona solo "a posteriori", e l'ultimo punto disegnato NON E' VALIDO, in quanto cambia continuamente (con tutta l'ultima linea retta) in base alle nuove quotazioni che arrivano (realtime o endofday, non cambia nulla), fino a quando non si verifica l'inversione del titolo per la quantita' percentuale impostata (5% in questo caso).

Solo in quel momento il valore dell'indicatore diventa "stabile", ed inizia una nuova retta (instabile) con nuova pendenza.

Viene quindi a meno il pre-requisito fondamentale: l'ultimo valore di un indicatore deve essere "fisso" ed utilizzabile per "predire" il comportamento del titolo di "domani". Se l'ultimo punto non e' valido, tutto l'indicatore non puo' essere usato in questo senso.

Pero' lo ZigZag ha una serie di utilizzi molto utili, sia a livello "visivo" che ad esempio quando si tratta di cercare "a posteriori" i punti di inversione di un titolo ed analizzare cosa e' successo in quei punti (ad esempio: ricerca di pattern di prezzo nuovi ?). E' sicuramente un indicatore che puo', in mani esperte, aprire le porte ad analisi retroattive molto potenti: ma non utilizzatelo in maniera "diretta", come si potrebbe fare ad esempio con una media mobile o altri indicatori.

cordialita'

Mauro Pratelli
TraderLink
Rimini
 
Scritto da Biagi
Ho tentato di fare un TS che gestisse il Pattern 25 in intraday ma sempre su verifica daily.
La sintassi è stata verificata tuttavia il TS non si attiva.Evidentemente avrò bisogno di chiarire l’utilizzo della funzione GETVALUES per cui vi chiedo di indicarmi la soluzione agli errori nel listato.


<CUT>

Premettiamo innanzitutto che nel TS allegato c'è una inesattezza nella dichiarazione delle variabili.
Infatti, visto che tale inizializzazione viene effettuata solo quando il TS viene caricato in memoria per essere eseguito dal calcolatore, non è possibile assegnare ad una variabile un valore non costante come "O", "C", "H" o "L".

Detto questo, il problema del TS è da ricercare nel fatto che la funzione GetValues non ritorna i valori della barra (o giorno, o quant'altro) indicata ma i massimi di tali valori nel periodo che va da tale barra a quella attuale.
Quindi il TS non funziona perchè utilizzando GetValues su un periodo di due giorni si richiama implicitamente anche il GetValues sul periodo di un giorno solo, e per questo le condizioni "minore" o "maggiore" risultano sempre false.

In effetti, con questa funzione così com'è, non è possibile fare quello che Biagi desidera e pertanto stiamo valutando l'inserimento di una nuova funzione quanto prima.
 
Re: ZIGZAG

Credo che per superare il problema delle errate inversioni, l'oscillatore ZigZag deve invertirsi solo quando si è superata la soglia limite prefissata, e non come ora che crea falsi segnali in base alle nuove quotazioni.

A presto Leo Susca
 
Re: Re: ZIGZAG

Scritto da leosusca
Credo che per superare il problema delle errate inversioni, l'oscillatore ZigZag deve invertirsi solo quando si è superata la soglia limite prefissata, e non come ora che crea falsi segnali in base alle nuove quotazioni.

A presto Leo Susca
Gisto, ma in questo caso non sarebbe piu' lo "ZigZag".

Ogni oscillatore ha un metodo di costruzione canonico: ZigZag serve per TRACCIARE linee sul grafico, sempre arrivando fino all'ultimo punto. Il fatto che ad un certo momento l'ultima retta si inverta e' caratteristico di questo oscillatore. Lo si puo' riscrivere in mille modi diversi, purche' non lo si chiami ZigZag.

Cordialita'
Mauro Pratelli
TraderLink
Rimini
 
sto provando uno dei TS che trovo dentro VT, "media mobile.TTS", che applica una media mobile a 30 "periodi" al titolo e lavora se il titolo sale o scende sotto la media mobile.
Ho notato che il valore "30 periodi" non e' sempre ottimale, dipende molto dal titolo che scelgo...
I risultati vanno da un fantastico (teorico....) 402% su Telecom a un tragico -80% su Eni.
come faccio a modificare il parametro ogni volta, invece che lasciarlo fisso a 30 periodi ?

vorrei provare per ogni titolo il numero migliore...
 
Input

Scritto da rinaldo.s
sto provando uno dei TS che trovo dentro VT, "media mobile.TTS", che applica una media mobile a 30 "periodi" al titolo e lavora se il titolo sale o scende sotto la media mobile.
Ho notato che il valore "30 periodi" non e' sempre ottimale, dipende molto dal titolo che scelgo...
I risultati vanno da un fantastico (teorico....) 402% su Telecom a un tragico -80% su Eni.
come faccio a modificare il parametro ogni volta, invece che lasciarlo fisso a 30 periodi ?

vorrei provare per ogni titolo il numero migliore...

Anziche dichiararle con "Var", utilizza "Input".

Esempio:

Anziche:
-----------
Var: m1,m2, parmedia1(7), parmedia2(14);

..............

Con l'Input:
----------------
Input: parmedia1(7);
Var: m1,m2, parmedia2(14);

..............


In questo modo ti chiede il valore ogni volta che lo riesegui (premi 'M') con la tastiera, oppure scorri una graduatoria (è più veloce).

Ciao
 
SCUSATE LA DOMANDA.....

se c'è qlcno più esperto, mi saprebbe dire come posso creare un TS ke mi dia dei precisi segnali di acq./vend. sulla base delle oscillazioni dello stocastico opp. dall'incrocio dei 2 oscillatori?

Grazie x le risposte...

Gian
 
terra terra......

salute a tutti,

avevo (avrei ancora ;) ) l'intenzione di generare segnali di acquisto al breakout di volatilità .......... dopo un po' di tentativi andati a vuoto, ho progressivamente ridotto le pretese, fino ad arrivare, come condizione di ingresso, ad una banale candela bianca.

Per farlo, ho ripreso uno dei TS esistenti, ed ho solo cambiato la variabile di ingresso:


******************************************************************************


Trading System Pattern Candela Bianca (poi aggiungerò,
se funziona, il breakout di volatilità)

1. Oggi è una giornata rialzista: chiusura almeno del 4% > dell'apertura;
3. La chiusura di oggi è superiore a
quella di ieri;
4. Il massimo di oggi è superiore al
massimo di ieri.

Acquisto in apertura sulla barra
successiva al pattern

*******************************************************************************}

Var: Candelabianca(0); // Variabile che identifica il pattern

Candelabianca = C > O ;


// altre condizioni da aggiungere progressivamente:
// +O*3/100 and C > C[1] and H > H[1]

// Formula del TS originale: C[1] < C[2] and C[2] < C[3] and C[3] < C[4] and C > O and H > H[1];


SECTION_ENTERLONG:
If Candelabianca = true Then
EnterLong(NextBar, Open); // Compro in apertura al verificarsi del pattern
Endif;
END_SECTION


SECTION_EXITLONG:
ExitLong(Bar, AtClose);
END_SECTION

**********************************************

La domanda è: perchè non genera segnali di ingresso con le candele bianche più rilevanti, come ad esempio l'8^ e la 9^ sull'immagine?

Grazie

Stefano
 

Allegati

  • alleanza.gif
    18,7 KB · Visite: 196
Re: SCUSATE LA DOMANDA.....

Scritto da giumi69
se c'è qlcno più esperto, mi saprebbe dire come posso creare un TS ke mi dia dei precisi segnali di acq./vend. sulla base delle oscillazioni dello stocastico opp. dall'incrocio dei 2 oscillatori?

Grazie x le risposte...

Gian

Ciao giumi,
provo a postarti un ts, che ti ho fatto molto velocemente.

Te lo metto anche in allegato.

Comunque, per farla breve:

-----------

miostochK = STOCHK (C, parK, parKS);
miostochD_sign = STOCHD (C, parK, parKS, parDL);


........
// condizione di entrata
if CrossOver(miostochK, miostochD_sign) then
 EnterLong(quando, chevalore);
endif;

........

-----------

Per completezza guarda qui sotto:

--------------------------------------

{******************************************************************************
* Incrocio Stocastico
******************************************************************************}
//Input: parKS(3); // mi serve quando voglio cambiare un valore al volo

Var: miostochD_sign, miostochK, Indzona1,
  colEnterLong, colExitLong, colEnterShort, colExitShort, // variabili per i colori
  quando, chevalore, // variabili per quando e a che valore entrare/uscire

  // Variabili da cambiare
  parK(3), parKS(5), parDL(3), // parametri dello stocastico
  tradeoggi(true), // compro in chiusura (true) o in apertura del giorno dopo (false)?
  mostralinee(false) // (true) mostra delle linee verticali quando viene verificata la condizione
;

// Inizializzo i colori
colEnterLong = green;
colExitLong = red;
colEnterShort = fuchsia;
colExitShort = blue;

if tradeoggi then
  quando = bar;
  chevalore = AtClose;
else
  quando = nextbar;
  chevalore = AtOpen;
endif;

miostochK = STOCHK (C, parK, parKS);
miostochD_sign = STOCHD (C, parK, parKS, parDL);

SECTION_ENTERLONG:
  if CrossOver(miostochK, miostochD_sign) then
   EnterLong(quando, chevalore);
   // Disegna
   if tradeoggi then Colorbar(colEnterLong); else ColorNextbar(colEnterLong); endif;
   if mostralinee then DrawVLine (NEWOGG, 0, GetDate, colEnterLong, 1, 0); endif;
  endif;
END_SECTION

SECTION_ENTERSHORT:
  if CrossUnder(miostochK, miostochD_sign) then
   EnterShort(quando, chevalore);
   // Disegna
   if tradeoggi then Colorbar(colEnterShort); else Colornextbar(colEnterShort); endif;
   if mostralinee then DrawVLine (NEWOGG, 0, GetDate, colEnterShort, 1, 0); endif;
  endif;

END_SECTION


SECTION_EXITLONG:
  if CrossUnder(miostochK, miostochD_sign) then
   ExitLong(quando, chevalore);
   EnterShort(quando, chevalore);
   // Disegna
   if tradeoggi then Colorbar(colEnterShort); else ColorNextbar(colEnterShort);endif;
  if mostralinee then DrawVLine (NEWOGG, 0, GetDate, colEnterShort, 1, 0); endif;
  endif;

END_SECTION

SECTION_EXITSHORT:
  if CrossOver(miostochK, miostochD_sign) then
   ExitShort(quando, chevalore);
   EnterLong(quando, chevalore);
   // Disegna
   if tradeoggi then Colorbar(colEnterLong); else ColorNextbar(colEnterLong);endif;
   if mostralinee then DrawVLine (NEWOGG, 0, GetDate, colEnterLong, 1, 0); endif;
  endif;

END_SECTION


Indzona1 = CreateViewport(100, true, true);
// Plotto gli oscillatori
PlotChart(miostochK, Indzona1, red, solid, 2);
PlotChart(miostochD_sign, Indzona1, green, solid, 2);


----------------------------------------

Ciao
 

Allegati

  • stocastico2.tts
    4 KB · Visite: 65
Mostro la parte principale del trading system,

sempre lo "Stocastico2.tts":

Ciao
 

Allegati

  • stocastico2.gif
    stocastico2.gif
    27,2 KB · Visite: 207
Re: terra terra......

Scritto da stevesteve
salute a tutti,

avevo (avrei ancora ;) ) l'intenzione di generare segnali di acquisto al breakout di volatilità .......... dopo un po' di tentativi andati a vuoto, ho progressivamente ridotto le pretese, fino ad arrivare, come condizione di ingresso, ad una banale candela bianca.

Per farlo, ho ripreso uno dei TS esistenti, ed ho solo cambiato la variabile di ingresso:


******************************************************************************


Trading System Pattern Candela Bianca (poi aggiungerò,
se funziona, il breakout di volatilità)

1. Oggi è una giornata rialzista: chiusura almeno del 4% > dell'apertura;
3. La chiusura di oggi è superiore a
quella di ieri;
4. Il massimo di oggi è superiore al
massimo di ieri.

Acquisto in apertura sulla barra
successiva al pattern

*******************************************************************************}

Var: Candelabianca(0); // Variabile che identifica il pattern

Candelabianca = C > O ;


// altre condizioni da aggiungere progressivamente:
// +O*3/100 and C > C[1] and H > H[1]

// Formula del TS originale: C[1] < C[2] and C[2] < C[3] and C[3] < C[4] and C > O and H > H[1];


SECTION_ENTERLONG:
If Candelabianca = true Then
EnterLong(NextBar, Open); // Compro in apertura al verificarsi del pattern
Endif;
END_SECTION


SECTION_EXITLONG:
ExitLong(Bar, AtClose);
END_SECTION

**********************************************

La domanda è: perchè non genera segnali di ingresso con le candele bianche più rilevanti, come ad esempio l'8^ e la 9^ sull'immagine?

Grazie

Stefano


Ci Provo:

1 - c'è un errore nel TS:
---------------------------

EnterLong(NextBar, Open); // errata

EnterLong(NextBar, AtOpen); // Giusta

Altrimenti cercherebbe di comprarti domani al valore dell'apertura di oggi. (Open).

---------------------------

2 - Puoi anche scriverla utilizzando la funzione "IsWhite":

If IsWhite = true Then
.........


Ciao
 
Indietro