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;