Pagina 1 di 3 123 Ultima
  1. #1

    Data Registrazione
    Apr 2010
    Messaggi
    800

    TS: BreakOut Dinamico in Easy Language

    Ciao
    Sto' tentando di portare su BeeTrader questo codice da Easy Language a Easy Script, del TS BreakOut Dinamico, ma non ci riesco nella traduzione, in quanto i parametri sono diversi e mi da' continuamente errori:

    Il Ts si basa su questo concetto:
    Esso si basa sulla stima della Volatilita' calcolata attraverso la deviazione standard a 30 periodi (Modificabile) dal cui valore viene ricavato un Delta successivamente aggiunto o sottratto al valore di un canale dinamico che misura la distanza tra massimi e minimi degli ultimi 20 periodi (EntryLB).
    Il segnale di acquisto Long scatta quando i prezzi superano il massimo piu' alto degli ultimi EntryLB periodi, dove EntryLB e' il massimo valore tra 20 e l' eventuale allungamento del canale derivante dall' incremento della volatilita'.
    Il Segnale di vandita Short scatta invece quando i prezzi scendono al di sottodel minimo piu' basso degli ultimi EntryLB periodi.
    Il "Canale" per le uscite e' invece piu' stretto con la variabile EntryLB che viene dimezzata.
    Poi c'e' il solito Filtro di Tempo.


    Codice EasyLanguage:

    Inputs: MaxLB(60), MinLB(20);

    Vars: HistVol(0), YestHistVol(0), DeltaHistVol(0),
    EntryLB(0),
    ExitLB(0), YestEntryLB(0);

    YestHistVol = HistVol;
    HistVol = StdDev(C, 30);
    DeltaHistVol = (HistVol - YestHistVol) / Histvol;

    if CurrentBar = 1 Then

    EntryLB = 20;
    YestEntryLB = EntryLB;
    EntryLB = YestEntryLB * (1 + DeltaHistVol);
    EntryLB = MaxList(EntryLB, MinLB);
    EntryLB = MinList(EntryLB, MaxLB);
    ExitLB = EntryLB * 0.5;

    If time > 1000 and Time < 1700 Then begin

    Buy Tomorrow at Highest(High, EntryLB) Stop;
    Sell Tomorrow at Lowest(Low, EntryLB) Stop;
    End;

    Ovviamente a questo listato possiamo aggiungere il Trailing Stop
    e lo Stop Loss per il nostro Money Management

    Vi ringrazio se potete darmi una mano nella traduzione in Easy Script semplificato, ci sto' sbattendo la testa inutilmente...

    Poi sicuramente fara' un figurone nei TS da prendere ad esempio di Bee, su Traderstation da' dei buonissimi risultati..
    Ultima modifica di Thalos; 20-10-13 alle 18:34
    --- Trend my Friend ---

  2. #2

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Ciao Thalos,
    il codice che hai allegato non mi sembra corretto,
    oppure mancante di qualche parte.
    Potresti allegare la versione completa, che ci proviamo.
    Saluti
    Massimo

  3. #3

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Ciao Thalos,
    il codice che hai allegato non mi sembra corretto,
    oppure mancante di qualche parte.
    Potresti allegare la versione completa, che ci proviamo.
    Saluti
    Massimo
    Nel trascriverlo avevo dimenticato della punteggiatura, ora e' corretto...
    Se lo porti su un programma che legge EasyLanguage funziona alla grande..

    Riscriverlo in EasyScript non ci sono riuscito, ora ci ritento anche io ...
    --- Trend my Friend ---

  4. #4
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    10,051
    Volevo darvi una dritta:
    quando scrivete una riga di codice, potete copiarla direttamente in una delle 8 custom line che trovate negli indicatori e plottare l'indicatore.

    Nell'esempio che vi illustro si vede graficamente quando la condizione è vera.
    Immagini Allegate Immagini Allegate
    • Tipo File: png 1.png‎ (68.8 KB, 61 visualizzazioni)
    • Tipo File: png 2.png‎ (127.2 KB, 71 visualizzazioni)
    • Tipo File: png 3.png‎ (174.7 KB, 57 visualizzazioni)
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

  5. #5

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Citazione Originariamente Scritto da Thalos Visualizza Messaggio
    Nel trascriverlo avevo dimenticato della punteggiatura, ora e' corretto...
    Se lo porti su un programma che legge EasyLanguage funziona alla grande..

    Riscriverlo in EasyScript non ci sono riuscito, ora ci ritento anche io ...
    Ciao Thalos,
    scusa il ritardo.
    -
    Si il codice EasyLanguage è corretto e funziona.
    -
    Ho tentato di tradurlo in EasyScript, ma non ci sono ancora riuscito.
    Il problema è purtroppo sempre lo stesso.
    -
    Ovvero in EasyLanguage si ragiona barra per barra, mentre beeTrader è vettoriale.
    -
    // Alla prima barra viene caricato in EntryLB un valore iniziale di 20
    -
    if CurrentBar = 1 Then EntryLB = 20;
    -
    // Quindi si carica in YestEntryLB il valore di EntryLB precedente, che verrà poi modificato
    // nelle istruzioni successive. Ed è questo il grande limite di beeTrader di cui parlavo.
    // beeTrader questo attualmente non lo può fare, o almeno io non ho ancora trovato il modo.
    -
    YestEntryLB = EntryLB;
    -
    // Quindi viene modificato EntryLB che dovrà essere utilizzato per calcolare
    // alla "prossima" barra il valore della linea precedente. Non possibile nel vettoriale !!!
    EntryLB = YestEntryLB * (1 + DeltaHistVol);
    EntryLB = MaxList(EntryLB, MinLB);
    EntryLB = MinList(EntryLB, MaxLB);
    // E si calcola ExitLB
    ExitLB = EntryLB * 0.5;
    -
    Continuerò a cercare un modo per aggirare il problema, nei prossimi giorni.
    Aspettiamo di vedere anche le novità della release di domani.
    Per il momento ti saluto.
    Massimo

  6. #6

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Infatti non ci riesco neanche io...
    Se in effetti per ora non si potesse e' un grosso limite, in quanto parecchi TS non basati su indicatori/oscillatori, ma su funzioni di prezzo non possono essere utilizzati...
    Aspettiamo domani e vediamo..
    --- Trend my Friend ---

  7. #7
    L'avatar di Apocalips
    Data Registrazione
    May 2011
    Località
    PESCARA
    Messaggi
    2,612
    Citazione Originariamente Scritto da Thalos Visualizza Messaggio
    Ciao
    Sto' tentando di portare su BeeTrader questo codice da Easy Language a Easy Script, del TS BreakOut Dinamico, ma non ci riesco nella traduzione, in quanto i parametri sono diversi e mi da' continuamente errori:

    Il Ts si basa su questo concetto:
    Esso si basa sulla stima della Volatilita' calcolata attraverso la deviazione standard a 30 periodi (Modificabile) dal cui valore viene ricavato un Delta successivamente aggiunto o sottratto al valore di un canale dinamico che misura la distanza tra massimi e minimi degli ultimi 20 periodi (EntryLB).
    Il segnale di acquisto Long scatta quando i prezzi superano il massimo piu' alto degli ultimi EntryLB periodi, dove EntryLB e' il massimo valore tra 20 e l' eventuale allungamento del canale derivante dall' incremento della volatilita'.
    Il Segnale di vandita Short scatta invece quando i prezzi scendono al di sottodel minimo piu' basso degli ultimi EntryLB periodi.
    Il "Canale" per le uscite e' invece piu' stretto con la variabile EntryLB che viene dimezzata.
    Poi c'e' il solito Filtro di Tempo.
    Ciao Thalos, ho cercato di codificare il tuo TS in EasyScript, verifica se fa esattamente quello che hai scritto:


    BuyScript
    INPUTS: @periods(30), @deviations(1), @Maxvalueperiods(20), @MinValueperiods(20)
    
    # DEVIAZIONE STANDARD MODIFICABILE
    SET Stdv = StdDev(CLOSE, @periods, @deviations, SIMPLE)
    
    # MASSIMO PIU ALTO ULTIMI X PERIODI
    SET MaxValue = HighestHighValue(@Maxvalueperiods)
    
    
    #LIVELLO DINAMICO DI INGRESSO CALCOLATO SU BARRA PRECEDENTE
    SET CanaleSupStdv = REF((MaxValue + Stdv), 1)  
     
    
    # CONDIZIONE DI BREAKOUT X INGRESSO LONG
    CLOSE> CanaleSupStdv
    SellScript
    # DEVIAZIONE STANDARD MODIFICABILE
    SET Stdv = StdDev(CLOSE, @periods, @deviations, SIMPLE)
    
    
    # MINIMO PIU BASSO ULTIMI X PERIODI
    SET MinValue = LowestLowValue(@MinValueperiods)
    
    
    #LIVELLO DINAMICO DI INGRESSO CALCOLATO SU BARRA PRECEDENTE
    SET CanaleInfStdv = REF((MinValue - Stdv),1)
    
    
    # CONDIZIONE DI BREAKOUT X INGRESSO SHORT
    CLOSE< CanaleInfStdv
    ExitLongScript
    # DEVIAZIONE STANDARD MODIFICABILE
    SET Stdv = StdDev( CLOSE, @periods, @deviations, SIMPLE)
    
    
    # MASSIMO PIU ALTO ULTIMI X PERIODI
    SET MaxValue = HighestHighValue(@Maxvalueperiods)
    
    
    # MINIMO PIU BASSO ULTIMI X PERIODI
    SET MinValue = LowestLowValue(@periods)
    
    
    # LIVELLO DI USCITA A META' DEL CANALE 
    SET LivelloExitLong = MaxValue -((MaxValue - MinValue)/2)
     
    
    
    #CONDIZIONE DI USCITA DALLA POSIZIONE LONG
    CROSSOVER (LivelloExitLong, CLOSE)

    ExitShortScript
    # DEVIAZIONE STANDARD MODIFICABILE
    SET Stdv = StdDev( CLOSE, @periods, @deviations, SIMPLE)
    
    
    
    # MASSIMO PIU ALTO ULTIMI X PERIODI
    SET MaxValue = HighestHighValue(@Maxvalueperiods)
    
    
    
    # MINIMO PIU BASSO ULTIMI X PERIODI
    SET MinValue = LowestLowValue(@MinValueperiods)
    
    
    
    # LIVELLO DI USCITA A META' DEL CANALE
    SET LivelloExitShort = MinValue +((MaxValue - MinValue)/2)
     
    
    
    #CONDIZIONE DI USCITA DALLA POSIZIONE SHORT
    CROSSOVER (CLOSE, LivelloExitShort)
    andrebbe poi aggiunto il money management

    buona notte

    Apo
    Ultima modifica di Apocalips; 21-10-13 alle 00:16
    ....non si desidera ciò che è facile ottenere (Ovidio)....

  8. #8

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Ciao Apo,
    no il codice postato da Thalos fa una cosa completamente differente.
    Ti commento le istruzioni di EasyLanguage, così forse qualcuno può riuscire a
    tradurlo in EasyScript.
    -
    Codice EasyLanguage:
    #
    # Inputs
    Inputs: MaxLB(60), MinLB(20);
    #
    # Inizializzazione variabili con valore iniziale zero
    Vars: HistVol(0), YestHistVol(0), DeltaHistVol(0),
    EntryLB(0),
    ExitLB(0), YestEntryLB(0);
    #
    # Viene passato a YestHistVol il valore di HistVol barra precedente
    # prima di modificarlo in questa barra
    YestHistVol = HistVol;
    HistVol = StdDev(C, 30);
    #
    # e viene calcolato il DeltaHistVol che verrà utilizzato per determinare
    # il periodo dinamico del nostro canale di massimi e minimi
    DeltaHistVol = (HistVol - YestHistVol) / Histvol;
    #
    # viene inizializzato alla prima barra EntryLB a valore 20
    if CurrentBar = 1 Then EntryLB = 20;
    #
    # Viene passato a YestEntryLB il valore di EntryLB barra precedente
    # prima di modificarlo nelle barre successive
    YestEntryLB = EntryLB;
    #
    # viene calcolato per l'attuale barra il nuovo valore di EntryLB
    # che deve essere compreso tra MinLB e MaxLB
    EntryLB = YestEntryLB * (1 + DeltaHistVol);
    EntryLB = MaxList(EntryLB, MinLB);
    EntryLB = MinList(EntryLB, MaxLB);
    #
    #
    ExitLB = EntryLB * 0.5;
    #
    # filtro orario
    If time > 1000 and Time < 1700 Then begin
    #
    # il segnale scatta quando close supera il massimo High
    # o il minimo Low di EntryLB periodi
    Buy Tomorrow at Highest(High, EntryLB) Stop;
    Sell Tomorrow at Lowest(Low, EntryLB) Stop;
    End;
    Saluti
    Massimo

  9. #9
    L'avatar di Apocalips
    Data Registrazione
    May 2011
    Località
    PESCARA
    Messaggi
    2,612
    Ciao Max, poresti postare un grafico di un back test in Easylanguage con alcuni ingressi e uscite in modo da comprendere meglio come funziona il TS ?

    grazie

    Apo
    ....non si desidera ciò che è facile ottenere (Ovidio)....

  10. #10
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    10,051
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Ciao Thalos,
    scusa il ritardo.
    -
    Si il codice EasyLanguage è corretto e funziona.
    -
    Ho tentato di tradurlo in EasyScript, ma non ci sono ancora riuscito.
    Il problema è purtroppo sempre lo stesso.
    -
    Ovvero in EasyLanguage si ragiona barra per barra, mentre beeTrader è vettoriale.
    -
    // Alla prima barra viene caricato in EntryLB un valore iniziale di 20
    -
    if CurrentBar = 1 Then EntryLB = 20;
    -
    // Quindi si carica in YestEntryLB il valore di EntryLB precedente, che verrà poi modificato
    // nelle istruzioni successive. Ed è questo il grande limite di beeTrader di cui parlavo.
    // beeTrader questo attualmente non lo può fare, o almeno io non ho ancora trovato il modo.
    -
    YestEntryLB = EntryLB;
    -
    // Quindi viene modificato EntryLB che dovrà essere utilizzato per calcolare
    // alla "prossima" barra il valore della linea precedente. Non possibile nel vettoriale !!!
    EntryLB = YestEntryLB * (1 + DeltaHistVol);
    EntryLB = MaxList(EntryLB, MinLB);
    EntryLB = MinList(EntryLB, MaxLB);
    // E si calcola ExitLB
    ExitLB = EntryLB * 0.5;
    -
    Continuerò a cercare un modo per aggirare il problema, nei prossimi giorni.
    Aspettiamo di vedere anche le novità della release di domani.
    Per il momento ti saluto.
    Massimo
    Caro Massimo,
    apprezzo i tuoi interventi che ci aiutano a riflettere però considera sempre che beeTrader io lo volevo semplice, per tutti gli utenti non programmatori.
    La legge del mercato fa si che mi adegui...e velocemente!
    Quindi prendo atto delle tue richieste e le metto in lavorazione.
    Per favore però, vorrei che ti convincessi, e te lo dimostrerò, che con beeTrader che è vettoriale, si potranno programmare un'infinità di varianti, idee, ecc....

    Infatti il limite dipende solo dalle funzioni che ti metteremo a disposizione...Metastock docet!

    Perchè avrei dovuto fare un script in maniera imperativa solo perchè lo fanno alcuni altri, i miei tecnici hanno deciso che questa è la strada per prestazioni veloci, uguale possibilità di calcolo e un approccio più semplice da parte dell'utenza.

    E i miei tecnici sono bravini.

    Entro domani, faremo il listato del segnale qui sopra, dello swing, dei Pivot ...

    Grazie e continua con le tue osservazioni, noi cercheremo di soddisfarle, contaci.
    Ultima modifica di Cagalli Tiziano; 21-10-13 alle 11:03 Motivo: consigliato da BMM :)
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Contattaci

Chiama gli esperti
+39 0425 792923

Chiamaci
Email

Richiedi informazioni via E-MAIL
info@playoptions.it

Scrivici
Nostri Uffici

Vieni a trovarci
45100 Rovigo

Contattaci

Serve Aiuto?

Contattaci per maggiori informazioni.

Denis MorettoSpecialista Finanziario
Contattaci