Visual Trader T.S. : Vetrina degli utilizzatori

complimenti per la bellissima iniziativa, utile sopratutto a chi come me alle prime armi ha bisogno di esempi per poter acquisire un minimo di dimestichezza del linguaggio.

la mia proposta, non riguarda tanto le modalita' di ingresso (una qualsiasi di tipo trend following va piu' che bene, tipo quelle descritte negli esempi di ts diponibili in vt), ma la gestione dell'uscita dalla posizione:

in linguaggio umano da tradurre in sorgente, uno stop dinamico dato dalla sottrazione di un multiplo (1,2) dell atr (5) all'ultima chiusura che non puo mai essere spostato indietro nei giorni successivi anche se il mercato dimostra di avere la forza per farlo scattare.

grazie e buon lavoro
Enrico
 
Scritto da ocirne64
....
in linguaggio umano da tradurre in sorgente, uno stop dinamico dato dalla sottrazione di un multiplo (1,2) dell atr (5) all'ultima chiusura che non puo mai essere spostato indietro nei giorni successivi anche se il mercato dimostra di avere la forza per farlo scattare.

Allego un TS di esempio, non pretendo sia esattamente quanto chiesto. Spero di aver ben interpretato la domanda.

cordialita'
Mauro Pratelli
TraderLink

// TS di esempio: apre la posizione se il titolo sale oltre la media
// chiude se raggiunge lo stop, calcolato con la sottrazione dal close
// precedente dell' ATR a 10 giorni moltiplicato per 1.2
// Lo stop si ricalcola ad ogni passaggio, in modo da salire solamente,
// seguendo il mercato
//
Var: media1(0),media2(0),            // Valore delle medie mobili
     val_atr_stop(0),
     valstop(0);                     // valore di stop-loss iniziale

// Calcolo di una media mobile
media1 = Mov(C, 10, S);  // Media piu' veloce

// Dal Close di ieri togliamo L'ATR a 10 periodi moltiplicato 1.2
val_atr_stop= C[1] - (ATR(C, 10) * 1.2);

SECTION_ENTERLONG:
   // Acquistiamo se il titolo supera la media
   if C > media1 then
EnterLong(NextBar, AtOpen); // COMPRA
      valstop= val_atr_stop;
   endif;

END_SECTION


SECTION_EXITLONG:
    if val_atr_stop > valstop then  // si e' alzato il valore di stop  ?
       valstop = val_atr_stop;      // Ok, accettiamo il nuovo livello di stop
    endif;

    if C < valstop then          // se il close scende sotto lo stop
      ExitLong(NextBar, AtOpen); // Liquida posizione long
 endif;
END_SECTION
 
Scritto da ocirne64
complimenti per la bellissima iniziativa, utile sopratutto a chi come me alle prime armi ha bisogno di esempi per poter acquisire un minimo di dimestichezza del linguaggio.

la mia proposta, non riguarda tanto le modalita' di ingresso (una qualsiasi di tipo trend following va piu' che bene, tipo quelle descritte negli esempi di ts diponibili in vt), ma la gestione dell'uscita dalla posizione:

in linguaggio umano da tradurre in sorgente, uno stop dinamico dato dalla sottrazione di un multiplo (1,2) dell atr (5) all'ultima chiusura che non puo mai essere spostato indietro nei giorni successivi anche se il mercato dimostra di avere la forza per farlo scattare.

grazie e buon lavoro
Enrico

Stavo per inviarti un listato ed ho visto che Mauro Pratelli ti aveva risposto con un listato simile, comunque lo invio ugualmente in quanto contiene alcune differenzE.
- Plotta del livello di stop;
- Esce al livello puntuale dello stop;
- Contempla il caso di apertura sotto il livello di stop.

{******************************************************************************
*** Esempio di formula di Trading System con Trailing Stop dinamico
*******************************************************************************}
Var: media1(0),media2(0), // Valore delle medie mobili
diffmedia(0), // Differenza tra le 2 medie
valstop(0), // valore di stop-loss iniziale
newstop(0), // Nuovo ipotetico valore di stop
MiotrS(0); // Definisco mio MioTRAILINGSTOP

// Calcolo delle due Media mobili
media1=Mov(C, 10, S); // Media piu' veloce
media2=Mov(C, 15, S); // Media piu' lenta
diffmedia = media2 - media1;

MiotrS = C-(ATR(C, 10)*1.2); // Valorizzo mio MioTRAILINGSTOP (ho usato 1.2% dell'atr)


SECTION_ENTERLONG:
// Acquistiamo se la media veloce sale oltre la media breve
if media1 > media2 then
EnterLong(NextBar, AtOpen); // COMPRA
valstop = Miotrs; // Livello di uscita
endif;

END_SECTION


SECTION_EXITLONG:
// Ricalcolo quello che potrebbe essere il nuovo valore di stop-loss,
// per inseguire l'eventuale trend ascendente, accettando un ristorno
// chiusura del 1.2% dell' ATR a 10 giorni.
//
newstop = C-(ATR(C, 10)*1.2);

// Il nuovo livello di stop ricalcolato e' maggiore di quello attuale ?
// In questo caso significa che il titolo sta salendo....
//
if newstop > valstop then
valstop = newstop; // Ok, accettiamo il nuovo livello di stop
endif;


if valstop < C then
ExitLong(NextBar, valstop); // chiudo la posizione al livello valstop
endif;

if O <= valstop then
ExitLong(Bar, AtOpen); // Se l'apertura è in GapDown ed è sotto il livello
endif; // valstop esco in apertura

END_SECTION

if valstop > 0 then
PlotChart(valstop, 0, red, solid,2);
endif;
 
Scritto da Biagi
Stavo per inviarti un listato ed ho visto che Mauro Pratelli ti aveva risposto con un listato simile, comunque lo invio ugualmente in quanto contiene alcune differenzE.
- Plotta del livello di stop;
- Esce al livello puntuale dello stop;
- Contempla il caso di apertura sotto il livello di stop.
..........
Ottimo ! complimenti per il bel lavoro..

Mauro Pratelli
 
Grazie per gli esempi e per la disponibilità,
in entrabi i casi avete soddisfatto alla mia richiesta.

saluti e buon lavoro
Enrico
 
ts

purtroppo dopo aver provato il ts che mi ha sviluppato (Minimi su massimi con media mobile), mi sono accorto che non corrisponde a quello che avrei pensato, confrontando i segnali con quelli del ts che utilizzo su VT versione4.4.4 . I segnali sono inparagonabili non può essere lo stesso ts.
per questo e per spiegarmi meglio le mando una immagine del ts che sto utilizzando nella versione di VT 4.4.4 , spero non sia abolita questa versione.
grazie ancora
 

Allegati

  • min max ts.jpg
    min max ts.jpg
    78,3 KB · Visite: 954
M'interessava un TS che vada long quando l'rsi passa da <30 a >30 e vende quando passa a >70 e che vada short quando da >70 passa a < 70 e chiude quando passa a <30,come posso fare.....grazie.:rolleyes: :rolleyes:
 
Re: ts

Scritto da dodo2002
purtroppo dopo aver provato il ts che mi ha sviluppato (Minimi su massimi con media mobile), mi sono accorto che non corrisponde a quello che avrei pensato, confrontando i segnali con quelli del ts che utilizzo su VT versione4.4.4 . I segnali sono inparagonabili non può essere lo stesso ts.
per questo e per spiegarmi meglio le mando una immagine del ts che sto utilizzando nella versione di VT 4.4.4 , spero non sia abolita questa versione.
grazie ancora

Con il vecchio sistema di TS:

Per poter convertire esattamente il suo TS, ci occorre (1) il modello del grafico, (2) il relativo TS:
Questi 2 files sono contenuti nella cartella VTRADER\MODELLI:

1° file con l'estensione .MOD
2° file con l'estensione .TSI

I 2 files ce li può inviare alla nostra assistenza:
assistenza@traderlink.it

In questo modo lo convertiremo nel nuovo sistema TS.

Cordiali Saluti
Staff Traderlink
 
Scritto da Aioo
M'interessava un TS che vada long quando l'rsi passa da <30 a >30 e vende quando passa a >70 e che vada short quando da >70 passa a < 70 e chiude quando passa a <30,come posso fare.....grazie.:rolleyes: :rolleyes:

Di seguito le incolliamo un banale esempio di TS con le caratteristiche da lei richieste.
Non esiti a porre altre domande o ad esprimerci i suoi dubbi se non dovesse esserle chiaro qualcosa.

Cordiali Saluti
Staff Traderlink

Codice:
VAR: vRSI(0);

// Innanzitutto calcoliamo il valore dell'RSI salvandolo in una variabili
// dichiarata appositamente.
vRSI = RSI(C, 14, S);

SECTION_ENTERLONG:
   // Se il valore dell'RSI di "ieri" era minore di 30 e quello di "oggi" e'
   // invece maggiore entriamo sul mercato.
   if (vRSI[1] < 30) and (vRSI >= 30) then
      EnterLong(NextBar, AtOpen);
   endif;
END_SECTION

SECTION_EXITLONG:
   // Chiudiamo la nostra posizione long non appena il valore dell'RSI
   // supera 70.
   if (vRSI > 70) then
      ExitLong(NextBar, AtOpen);
   endif;
END_SECTION


SECTION_ENTERSHORT:
   // Analogamente al caso long entriamo short quando abbiamo che il valore
   // dell'RSI "ieri" era maggiore di 70 e quello di "oggi" e' minore.
   if (vRSI[1] > 70) and (vRSI <= 70) then
      EnterShort(NextBar, AtOpen);
   endif;
END_SECTION

SECTION_EXITSHORT:
   // Ed usciamo non appena scende sotto a 30.
   if (vRSI < 30) then
      ExitShort(NextBar, AtOpen);
   endif;
END_SECTION
 
Salve
E' la mia prima partecipazione a questo interessantissimo Forum.

Vorrei proporre un percorso diverso da quello di TraderLink.
Il risultato è assolutamente lo stesso.
Ho aggiunto la possibilità di cambiare il periodo di calcolo e il grafico dell'RSI.

Saluti




******************************************************************************
* rsi 30 - 70
******************************************************************************}
Var: mio_RSI(0),zona(0), Linea30(30),linea70(70),linea50(50), periodi(0);


input:periodi; //inserisci i periodi di calcolo dell'RSI
//--------------------------
mio_RSI=rsi(c,periodi,s);

zona=createviewport(20,true,true);// creo una zona per plottare RSI
plotchart(mio_rsi,zona,blue,solid,2); //plotta RSI
plotchart(linea30,zona,red,solid,1); //plotta la linea del valore 30
plotchart(linea70,zona,red,solid,1); //plotta la linea del valore 70
plotchart(linea50,zona,black,solid,1);//plotta la linea del valore 50



SECTION_ENTERLONG:
//se il valore RSI supera 30 entriamo LONG
if crossover(mio_rsi,linea30) then //passa a >30
enterlong(nextbar,atopen);
endif;


END_SECTION


SECTION_EXITLONG:
//se il valore RSI SUPERA 70 CHIUDIAMO la posizione LONG
if crossover(mio_rsi,linea70) then //passa a >70
exitlong(nextbar,atopen);
endif;


END_SECTION


SECTION_ENTERSHORT:
//SE il valore RSI scende sotto 70 APRIAMO posizione SHORT
if crossunder(mio_rsi,linea70) then //passa <70
entershort(nextbar,atopen);
endif;

END_SECTION


SECTION_EXITSHORT:
//SE il valore RSI scende sotto 30 CHIUDIAMO la posizione SHORT
if crossunder(mio_rsi,linea30) then //passa <30
exitshort(nextbar,atopen);
endif;

END_SECTION
 
Scusate la faccina. Non so come ho fatto. Errore di digitazione o clik!!!
 
Chiedo scusa.
Manca il calcolo delle varialbili linea70 e linea30.
Basta aggiungere

linea70=70;
linea30=30;

saluti
 
Scritto da habesh
Salve
E' la mia prima partecipazione a questo interessantissimo Forum.

Vorrei proporre un percorso diverso da quello di TraderLink.
Il risultato è assolutamente lo stesso.
Ho aggiunto la possibilità di cambiare il periodo di calcolo e il grafico dell'RSI.

Saluti

.......

Ringrazio vivamente Habesh e tutti gli altri per i vari post di aiuto: e' proprio questo lo spirito del forum! Dato che gli argomenti trattati sono spesso difficili, non c'e' niente di meglio che darsi una mano a vicenda.

Inizialmente gli argomenti saranno ovviamente piu' semplici, ma a mano a mano che aumenta la cultura generale sull'argomento ci si potra' spingere verso obiettivi piu' ambiziosi, entrando piu' nel merito dell'efficienza dei sistemi proposti.

Grazie di nuovo a tutti

Mauro Pratelli
TraderLink
Rimini
 
Scritto da TRADERLINK
Di seguito le incolliamo un banale esempio di TS con le caratteristiche da lei richieste.
Non esiti a porre altre domande o ad esprimerci i suoi dubbi se non dovesse esserle chiaro qualcosa.

Cordiali Saluti
Staff Traderlink

Codice:
VAR: vRSI(0);

// Innanzitutto calcoliamo il valore dell'RSI salvandolo in una variabili
// dichiarata appositamente.
vRSI = RSI(C, 14, S);

SECTION_ENTERLONG:
   // Se il valore dell'RSI di "ieri" era minore di 30 e quello di "oggi" e'
   // invece maggiore entriamo sul mercato.
   if (vRSI[1] < 30) and (vRSI >= 30) then
      EnterLong(NextBar, AtOpen);
   endif;
END_SECTION

SECTION_EXITLONG:
   // Chiudiamo la nostra posizione long non appena il valore dell'RSI
   // supera 70.
   if (vRSI > 70) then
      ExitLong(NextBar, AtOpen);
   endif;
END_SECTION


SECTION_ENTERSHORT:
   // Analogamente al caso long entriamo short quando abbiamo che il valore
   // dell'RSI "ieri" era maggiore di 70 e quello di "oggi" e' minore.
   if (vRSI[1] > 70) and (vRSI <= 70) then
      EnterShort(NextBar, AtOpen);
   endif;
END_SECTION

SECTION_EXITSHORT:
   // Ed usciamo non appena scende sotto a 30.
   if (vRSI < 30) then
      ExitShort(NextBar, AtOpen);
   endif;
END_SECTION



Grazie.OK!
 
periodo di setup iniziale

Attenzione, importante !

C'e' un argomento che va spiegato bene, che e' emerso dall'analisi del TS che lele2 ci ha inviato, segnalando la possibile presenza di un bug. Chiamiamo l'argomento "periodo di setup iniziale".

Prendiamo ad esempio in TS che utilizzi due medie mobili:

Codice:
var: media_lenta(0),
       media_veloce(0);

       media_lenta = Mov(C, 50, S);     // Calcolo la media a 50 periodi
       media_veloce = Mov(C, 10, S);  // Calcolo la media a 10 periodi

Quando il motore dei TS di VT vede questo sorgente rileva l'oscillatore che ha bisogno di piu' "barre" e determina quindi che '50' e' il periodo di giorni (barre) minimo per far funzionare tutto il TS, ed inizia ad applicare tutto il ts dopo che sono trascorse le 50 barre del "periodo di setup iniziale".
Questo ci sembra corretto: se il TS iniziasse a lavorare prima avremmo che la variabile "media_lenta" contiene un valore che non e' calcolato effettivamente sulle 50 barre richieste, per cui tutti gli eventuali calcoli fatti sarebbero falsati.

Nota bene: non importa se la variabile in questione viene o meno usata per operazioni di trading (EnterLong... etc.)
VT non entra nel merito di queste analisi, sarebbero troppo complesse.

Ad esempio:

Codice:
   altravariabile = media_lenta * 1.5:
   miavariabile = altravariabile / media_veloce;

SECTION_ENTERLONG:
     if miavariabile > 100 then  
          enterlong.... etc. etc.

Si tratta di un sorgente inventato, senza senso, per far capire che anche se media_lenta non viene usata direttamente nella sezione "ENTERLONG" per il trading puo' comunque essere usata per influenzare altre variabili che poi infine determinano l'apertura di posizioni.

Quindi, aumentando il numero di barre minime da usare per il calcolo di un oscillatore si allunga il tempo di setup iniziale, durante il quale il TS non puo' operare, perche' non potrebbe calcolarlo correttamente. Quindi il report finale del TS riportera' dei valori diversi, anche se l'oscillatore non veniva usato per l'apertura di posizione, semplicemente perche' si e' accorciato il periodo storico su cui simulare le operazioni.

Abbiamo pensato di:
1) (facoltativamente) colorare in modo leggero lo sfondo del grafico, nel periodo iniziale di setup, per rendere piu' evidente questa zona di "non operativita' "
2) Aggiungere nel report numerico il numero di giorni ( barre) iniziali non utili per il TS

Come sotto-prodotto si potrebbe colorare, sempre facoltativamente, lo sfondo del grafico in modo diverso quando l'operazione passa in gain o quando scende in perdita. Per cui tra le due freccette enter-long ed exit-long si potranno trovare zone verdi o rosse, che fanno saltare all'occhio quanto l'operazione e' "filata liscia" o se invece ci si e' trovati spesso in perdita, anche se magari alla fine l'operazione e' stata positiva.

Che ne pensate ?

Nota bene: data l'importanza di questa informazione posto il messaggio su tutti i tre thread di VT

cordialita'
Mauro Pratelli
TraderLink
Rimini
 
Re: periodo di setup iniziale

Scritto da mauro.pratelli
Attenzione, importante !

Che ne pensate ?


Potrebbe andar bene ma penso che l'ideale sarebbe poter disporre di "almeno" 90 gg di dati intrady al posto dei 30gg attuali.

Questo permetterebbe di testare con più sicurezza i ts ed evitare parti mancanti dei report.

Grazie e complimenti per l'iniziativa.
C.B.
 
Re: Re: periodo di setup iniziale

Scritto da Aldusit
Scritto da mauro.pratelli
Attenzione, importante !

Che ne pensate ?


Potrebbe andar bene ma penso che l'ideale sarebbe poter disporre di "almeno" 90 gg di dati intrady al posto dei 30gg attuali.

Questo permetterebbe di testare con più sicurezza i ts ed evitare parti mancanti dei report.

Grazie e complimenti per l'iniziativa.
C.B.

a parte il fatto ke ci vorrebbe un monitor da 1mt di largezza per vedere 90gg in 60 min ma penso ke il problema ci sarebbe cmq,infatti penso si riferiscano al periodo iniziale del grafico ke nn ha una mm completa nn vendo barre per calcolarla.


se invece si vuole parlare di 30gg almeno per avere una statistica di un ts allora potrebbero dare almeno 40gg e scartare i primi 5 o 10 sul calcolo del report in base alla mm ke si usa.

se ti vuoi fare una statistica personale più ampia ci dovrebbe essere la possibilità di esportare il report su excell con tutte le operazioni fatte.
 
Re: Re: periodo di setup iniziale

Scritto da Aldusit
Scritto da mauro.pratelli

........

Potrebbe andar bene ma penso che l'ideale sarebbe poter disporre di "almeno" 90 gg di dati intrady al posto dei 30gg attuali.

Questo permetterebbe di testare con più sicurezza i ts ed evitare parti mancanti dei report.

Grazie e complimenti per l'iniziativa.
C.B.
Stiamo lavorando sull'erogazione di serie storiche molto piu' lunghe. Non e' banale, dato che ci si scontra con diversi limiti di memoria, tecnica di erogazione, stoccaggio locale degli archivi per velocizzare ulteriori operazioni di scanning....

cordialita'
Mauro Pratelli
 
Re: Re: Re: periodo di setup iniziale

Scritto da lele2
.......

se ti vuoi fare una statistica personale più ampia ci dovrebbe essere la possibilità di esportare il report su excell con tutte le operazioni fatte.

Esatto.Nel pannello di scelta del TS premere il bottone "Martello" per configurare il report. Attivare il checkbox "Esporta Report ed Equity Line".

In questo modo, ogno volta che si applica un TS con REPORT, vengono creati due files nella cartella di Visual Trader:

xlsRepTS.txt : si tratta dell'elenco dei movimenti effettuati, data ingresso, uscita, resa, etc. etc.

xlsEquity.txt: punto per punto tutti i valori della equity line.

I due files sono in formato facilmente leggibile da Excel.

cordialita'
Mauro Pratelli
 
Re: Re: Re: Re: periodo di setup iniziale

Scritto da mauro.pratelli
Esatto.Nel pannello di scelta del TS premere il bottone "Martello" per configurare il report. Attivare il checkbox "Esporta Report ed Equity Line".

In questo modo, ogno volta che si applica un TS con REPORT, vengono creati due files nella cartella di Visual Trader:

xlsRepTS.txt : si tratta dell'elenco dei movimenti effettuati, data ingresso, uscita, resa, etc. etc.

xlsEquity.txt: punto per punto tutti i valori della equity line.

I due files sono in formato facilmente leggibile da Excel.

cordialita'
Mauro Pratelli

T.Y.
 
Indietro