Pagina 1 di 2 12 Ultima
Risultati da 1 a 10 di 13
  1. #1

    Data Registrazione
    May 2012
    Località
    Roma
    Messaggi
    593

    Lunghezza Vettore + Fiuto Momentum &C

    Ieri sono stato a Milano e la voglia di programmare trading system mi è aumentata ...
    Una prima domandina semplice semplice (ho letto il manuale easyscript ma mi pare di non aver trovato) per costruire un segnale:
    come faccio a conoscere la lunghezza di un vettore a runtime, c'è una funzione che mi da questo valore? tipo:

    len(vettore)

    in modo poi da per es. poterci verificare sopra delle condizioni ...
    una seconda: c'è modo di conservare un valore di una variabile? Mi spiego meglio, immagino che i vari 'buy script' 'sell script' siano eseguiti ad ogni barra. C'è la possibilità di salvare un valore di una variabile e ad es. incrementarlo ad ogni iterazione?

    Ieri Tiziano ci ha mostrato che è possibile fare backtest 'tick by tick' oltre che 'on close' , ma non ho trovato su 'advanced settings' di backtest questa possibilità!

    E' possibile avere gli indicatori Fiuto Momentum, Fiuto Entry, Fiuto Facile, Dema e Tema (forse mi diceva Denis ieri che è possibile costruirsele con la triangular moving average) su BeeTrader?
    Vittorio
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

  2. #2
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da civvic Visualizza Messaggio
    Ieri sono stato a Milano e la voglia di programmare trading system mi è aumentata ...
    Una prima domandina semplice semplice (ho letto il manuale easyscript ma mi pare di non aver trovato) per costruire un segnale:
    come faccio a conoscere la lunghezza di un vettore a runtime, c'è una funzione che mi da questo valore? tipo:

    len(vettore)

    in modo poi da per es. poterci verificare sopra delle condizioni ...
    una seconda: c'è modo di conservare un valore di una variabile? Mi spiego meglio, immagino che i vari 'buy script' 'sell script' siano eseguiti ad ogni barra. C'è la possibilità di salvare un valore di una variabile e ad es. incrementarlo ad ogni iterazione?

    Ieri Tiziano ci ha mostrato che è possibile fare backtest 'tick by tick' oltre che 'on close' , ma non ho trovato su 'advanced settings' di backtest questa possibilità!

    E' possibile avere gli indicatori Fiuto Momentum, Fiuto Entry, Fiuto Facile, Dema e Tema (forse mi diceva Denis ieri che è possibile costruirsele con la triangular moving average) su BeeTrader?
    Vittorio

    Ciao Vittorio,

    -i vettori hanno lunghezza pari al numero di barre.
    Al posto della funzione Len() puoi usare quindi la funzione BARNUMBER

    -I valori delle variabili si salvano con la key SET
    esempio:

    #Esempio 1
    SET A = 3
    
    #Esempio 2
    SET B = MyFunc ( @par1, @par2)

    -L'impostazione che cerchi la trovi nel pannello Strategy (Advanced Settings) e non nel pannello backtest.
    Questo perchè ovviamente in tempo reale verranno esaminati (se selezionato tick-by-tick) tutti i tick.


    -(per gli indicatori) Fare puoi fare tutto, se li vuoi già pronti allora diventa una questione commerciale e quindi ti risponderanno i padroni di casa.


    ciao,
    Marco
    Ultima modifica di Marco Bosco; 22-03-14 alle 16:37
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  3. #3

    Data Registrazione
    May 2012
    Località
    Roma
    Messaggi
    593
    Grazie Marco,
    sei sempre gentile.
    ok BARNUMBER.
    L'altra cosa non l'ho spiegata bene.
    So che con SET valorizzo una variabile ma volevo capire se è possibile tenere memoria del valore alla barra successiva.
    Cioè per esempio se io voglio usare Williams e far scattare il segnale di acquisto quando c'è stato un cross del valore -80 e poi (anche dopo tante barre) un cross di -75, come faccio?
    mi servirebbe che
    SET a = CROSSOVER(Williams, -80)
    ponga a = true e rimanga tale finchè nella condizione di buy che sarebbe
    CROSSOVER(Wil, -75)
    posso anche porre a = false

    ma invece a ogni barra il SET a = CROSSOVER(Williams, -80) cambia il valore di a

    non so se mi sono spiegato ... in pratica vorrei capire se è possibile mantenere il valore di una variabile da una interazione all'altra perchè dovendo dichiararla e valorizzarla all'inizio del buy script (set a = ...) ogni volta la resetto!
    O no?
    Vittorio
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

  4. #4

    Data Registrazione
    May 2012
    Località
    Roma
    Messaggi
    593
    Per quanto riguarda la dema e la tema ci provo ... poi mi dite se l'ho fatto bene
    ma i Fiuto Momentum, Fiuto Entry, Fiuto Facile non so proprio come siano fatti!!

    Questa è una dema a 7 periodi?

    INPUTS: @price(CLOSE), @periods(7)

    SET ema1 = ExponentialMovingAverage(@price, @periods)
    SET ema2 = ExponentialMovingAverage(ema1, @periods)
    SET dema = 2*ema1 - ema2

    SET PLOT1 = dema
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

  5. #5
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da civvic Visualizza Messaggio
    Grazie Marco,
    sei sempre gentile.
    ok BARNUMBER.
    L'altra cosa non l'ho spiegata bene.
    So che con SET valorizzo una variabile ma volevo capire se è possibile tenere memoria del valore alla barra successiva.
    Cioè per esempio se io voglio usare Williams e far scattare il segnale di acquisto quando c'è stato un cross del valore -80 e poi (anche dopo tante barre) un cross di -75, come faccio?
    mi servirebbe che
    SET a = CROSSOVER(Williams, -80)
    ponga a = true e rimanga tale finchè nella condizione di buy che sarebbe
    CROSSOVER(Wil, -75)
    posso anche porre a = false

    ma invece a ogni barra il SET a = CROSSOVER(Williams, -80) cambia il valore di a

    non so se mi sono spiegato ... in pratica vorrei capire se è possibile mantenere il valore di una variabile da una interazione all'altra perchè dovendo dichiararla e valorizzarla all'inizio del buy script (set a = ...) ogni volta la resetto!
    O no?
    Vittorio

    ciao Vittorio,
    grazie a te,
    tu scrivi : "...del valore -80 e poi (anche dopo tante barre) un..."
    se entri nella logica delle espressioni booleane la tua richiesta si traduce in un OR.


    ( CROSSOVER(A,  B) or CROSSOVER(A,  C) ) AND ( CurrentContracts() <= 2 )
    comunque sia se questo non ti bastasse puoi fare anche ciò che chiedi (archiviazione di una variabile che rimane tale...), infatti potresti definire una variabile così:

    SET A = Williams > -80
    quando il Williams supera la tua soglia diventa TRUE...e rimane tale.... finché la condizione rimane vera.


    saluti,
    Marco
    Ultima modifica di Marco Bosco; 23-03-14 alle 10:28
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  6. #6
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio
    ciao Vittorio,
    grazie a te,
    tu scrivi : "...del valore -80 e poi (anche dopo tante barre) un..."
    se entri nella logica delle espressioni booleane la tua richiesta si traduce in un OR.


    ( CROSSOVER(A,  B) or CROSSOVER(A,  C) ) AND ( CurrentContracts() <= 2 )
    comunque sia se questo non ti bastasse puoi fare comunque anche ciò che chiedi (archiviazione di una variabile che rimane tale...), infatti potresti definire una variabile così:

    SET A = Williams > -80
    quando il Williams supera la tua soglia diventa TRUE...e rimane tale.... finché la condizione rimane vera.


    saluti,
    Marco


    ...dimenticavo.... usa il più possibile la funzione PRINT con la finestra di debug in modo che ti rendi conto di ciò che succede ai valori in memoria delle variabili , se sono uguali o cambiano... in tal modo ti diventerà tutto più chiaro.


    buona notte,
    Marco
    Ultima modifica di Marco Bosco; 23-03-14 alle 10:27
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  7. #7

    Data Registrazione
    May 2012
    Località
    Roma
    Messaggi
    593
    Non so chi dei 2 è più nottambulo

    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio
    ...
    comunque sia se questo non ti bastasse puoi fare anche ciò che chiedi (archiviazione di una variabile che rimane tale...), infatti potresti definire una variabile così:

    SET A = Williams > -80
    quando il Williams supera la tua soglia diventa TRUE...e rimane tale.... finché la condizione rimane vera.
    ...
    è qui il problema , Marco, che io voglio che A rimanga true anche se ora la condizione non è più vera! Cioè una volta diventata true, deve rimanere true a meno che io non la setti a false!
    C'è modo di farlo?

    ti chiedo anche un'altra cosa (scusami se approfitto )
    perchè non mi accetta:

    SET B = IF(B , true, CROSSOVER(Wil, -20))


    mi dice:
    error: missing argument for function 'IF'
    io vorrei che se B fosse true, rimanga così , altrimenti sia uguale a CROSSOVER(Wil, -20)

    si,si , PRINT lo uso tantissimo!
    (Ho un background di programmazione objectoriented, c'ho lavorato ... 20 anni fà )
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

  8. #8
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da civvic Visualizza Messaggio
    Non so chi dei 2 è più nottambulo

    è qui il problema , Marco, che io voglio che A rimanga true anche se ora la condizione non è più vera! Cioè una volta diventata true, deve rimanere true a meno che io non la setti a false!
    C'è modo di farlo?

    ti chiedo anche un'altra cosa (scusami se approfitto )
    perchè non mi accetta:

    SET B = IF(B , true, CROSSOVER(Wil, -20))


    mi dice:
    error: missing argument for function 'IF'
    io vorrei che se B fosse true, rimanga così , altrimenti sia uguale a CROSSOVER(Wil, -20)

    si,si , PRINT lo uso tantissimo!
    (Ho un background di programmazione objectoriented, c'ho lavorato ... 20 anni fà )

    ciao Vittorio,
    probabilmente il tuo problema va esaminato nello specifico.

    comunque tu stai chiedendo probabilmente un qualcosa di procedurale, tipica di un linguaggio imperativo.
    Ma io ti chiedo relativamente a...."Cioè una volta diventata true, deve rimanere true a meno che io non la setti a false"

    ...se una cosa diventa TRUE... vuol dire che si sono verificate delle condizioni...?
    ...se la risetti setti a false vuol dire che si sono verificate altre condizioni...?

    Riesci ad esprimere queste condizioni?
    se ci riesci allora se tutte le tue espressioni le inserisci in logica booleana nella espressione di controllo

    expression1 AND cond_1 AND , ORD , ecc ecc... AND cond_n

    ottieni quello che vuoi.


    Ci sono anche casi particolari di inizializzazione o altre per i quali ci sono esempi nel manuale e poi cose particolari che vanno viste di volta in volta.


    Per l'altro errore , hai postato solo una riga di codice... e con solo quella riga posso dirti che :
    -wil : non è definito
    -dentro l'IF hai usato B .... che stai definendo nella stessa riga. Non puoi far riferimento a qualcosa che ancora non è stato definito.


    -inoltre il primo argomento dell'IF deve essere una espressione di CONTROLLO, ...e tu hai messo B , che sarebbe un vettore.

    Quindi prova a prendere spunto da qui:


    set wil = WilliamsPctR(30)
    set B = CLOSE > SMA(CLOSE, 50)
    SET C = IF(B = TRUE , B, CROSSOVER(Wil, -20))
    ciao,
    Marco
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  9. #9

    Data Registrazione
    May 2012
    Località
    Roma
    Messaggi
    593
    Grazie Marco,
    ne sono venuto a capo con Lastif, che in pratica è come se memorizzasse il valore che mi serviva.
    Era più facile di quello che sembrava.
    Questo segnale lo sto testando su Estox a 1 min, devo aggiungere un qualche filtro, se otterrò qualcosa di buono mi farò sentire

    il buy signal basato su williams:
    INPUTS: @Wperiods(50), @Psell(-35), @Pbuy(-70), @Xsell(-50), @Xbuy(-60)

    # SET REQUIRED_BARS = @Wperiods
    # @trailStop(100), @trailPercent(10), @stopLoss(1000)
    # SET TRAILING_STOP = @trailStop SET TRAILING_PERCENT = @trailPercent SET STOP_LOSS = @stopLoss

    SET Wil = WilliamsPctR(@Wperiods)
    SET PBUY = CROSSOVER(Wil, @Pbuy)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A90 = LASTIF(CROSSOVER(Wil, -85))

    PRINT(A20)
    PRINT(A80)
    PRINT(A90)

    PBUY AND A80 <= A90 AND A90 < A20


    il sell signal:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PSELL = CROSSOVER( @Psell, Wil)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A10 = LASTIF(CROSSOVER(-15, Wil))

    PSELL AND A20 <= A10 AND A10 < A80

    il close buy:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PSELL = CROSSOVER( @Psell, Wil)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A10 = LASTIF(CROSSOVER(-15, Wil))

    CROSSOVER(-80, Wil) OR (PSELL AND A20 <= A10 AND A10 < A80)

    il close sell:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PBUY = CROSSOVER(Wil, @Pbuy)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A90 = LASTIF(CROSSOVER(Wil, -85))

    CROSSOVER(Wil, -20) OR (PBUY AND A80 <= A90 AND A90 < A20)
    Io non vendo tasti ! - Tiziano Cagalli ...quindi se c'è un tasto (su Fiuto) vuol dire che serve !!

  10. #10
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da civvic Visualizza Messaggio
    Grazie Marco,
    ne sono venuto a capo con Lastif, che in pratica è come se memorizzasse il valore che mi serviva.
    Era più facile di quello che sembrava.
    Questo segnale lo sto testando su Estox a 1 min, devo aggiungere un qualche filtro, se otterrò qualcosa di buono mi farò sentire

    il buy signal basato su williams:
    INPUTS: @Wperiods(50), @Psell(-35), @Pbuy(-70), @Xsell(-50), @Xbuy(-60)

    # SET REQUIRED_BARS = @Wperiods
    # @trailStop(100), @trailPercent(10), @stopLoss(1000)
    # SET TRAILING_STOP = @trailStop SET TRAILING_PERCENT = @trailPercent SET STOP_LOSS = @stopLoss

    SET Wil = WilliamsPctR(@Wperiods)
    SET PBUY = CROSSOVER(Wil, @Pbuy)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A90 = LASTIF(CROSSOVER(Wil, -85))

    PRINT(A20)
    PRINT(A80)
    PRINT(A90)

    PBUY AND A80 <= A90 AND A90 < A20


    il sell signal:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PSELL = CROSSOVER( @Psell, Wil)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A10 = LASTIF(CROSSOVER(-15, Wil))

    PSELL AND A20 <= A10 AND A10 < A80

    il close buy:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PSELL = CROSSOVER( @Psell, Wil)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A10 = LASTIF(CROSSOVER(-15, Wil))

    CROSSOVER(-80, Wil) OR (PSELL AND A20 <= A10 AND A10 < A80)

    il close sell:
    SET Wil = WilliamsPctR(@Wperiods)
    SET PBUY = CROSSOVER(Wil, @Pbuy)
    SET A20 = LASTIF(CROSSOVER(-20, Wil))
    SET A80 = LASTIF(CROSSOVER(Wil, -80))
    SET A90 = LASTIF(CROSSOVER(Wil, -85))

    CROSSOVER(Wil, -20) OR (PBUY AND A80 <= A90 AND A90 < A20)


    ciao Vittorio,
    grazie a te.
    Come vedi non è poi cosi difficile.
    Bravo vedo che ci stai prendendo mano e gusto!

    buona giornata,
    Marco
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

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
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.