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

    Data Registrazione
    Oct 2009
    Messaggi
    566

    problemi con l'unire due TS in uno solo

    Pensando che questo post possa essere di aiuto non solo a me, vi espongo il seguente problema:
    unire due o più TS in uno solo.

    Il sistema che voglio fare, derivante dall'unione di 2 TS, ha i seguenti segnali:
    quando
    1) entrambi i due TS long: Long;
    2) entrambi i due TS short: Short
    3) un TS long e l’altro short; Stop Long o Stop Short (exit trade)

    Il codice dei due sistemi è il seguente:
    Premetto che:
    MOlowmark, Mohighmark sono i margini superiore e inferiore per il Momentum Oscillator inverso
    UOlowMark, UOhighMark sono i margini superiore e inferiore per l’Ultima Oscillator
    (ho preso l’abitudine di inserire un paio di lettere davanti ai parametri da configurare di ogni indicatore per avere sempre presente a quale indicatore appartengono tali parametri).


    codice Ultimate Oscillator

    Buy script
    INPUTS:@cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark)

    Sell script
    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(@UOhighMark, A)

    codice Momentum Oscillator inverso (inverso perché il codice è speculare al Momentum Oscillator che c’è in BT: non è un’errore; sul TS che stò costruendo mi serve così).

    Buy script
    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101)

    SET A = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(@MOhighMark, A)

    Sell script
    SET A = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(A, @MOlowMark)

    Unione dei due TS: Momentum Oscillator inverso + Ultimate Oscillator

    Buy script
    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101), @cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark) AND CROSSOVER(@MOhighMark, B)


    Sell script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @MOlowMark) AND CROSSOVER(@UOhighMark, B)


    Exit Long Script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @MOlowMark) OR CROSSOVER(@UOhighMark, B)


    Exit Short Script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark) OR CROSSOVER(@MOhighMark, B)

    Tuttavia il risultato non da quanto voluto.

    Per finire allego tre immagini; mentre le prime due, sono relative ai trade dei due TS effettuati su MSFT (Microsoft, ho preso un titolo a caso) con TF = 2h, a partire dal 25 ottobre h. 16:
    - la prima figura riguarda il TS del Momentum Oscillator Inverso
    - la seconda figura riguarda il TS dell'Ultimate Oscillator.
    - la terza mostra il calcolo fatto a mano del risultato che dovrei ottenere unendo i due TS.



    Non riesco proprio a capire dove sbaglio.
    Anteprime Allegate Anteprime Allegate Clicca sull'immagine per ingrandirla

Nome: MO trade (12 99,8 101).png‎
Visite: 16
Dimensione: 20.3 KB
ID: 12975   Clicca sull'immagine per ingrandirla

Nome: UO trade (7 6 10 45 65).png‎
Visite: 11
Dimensione: 16.4 KB
ID: 12976   Clicca sull'immagine per ingrandirla

Nome: calcolo.png‎
Visite: 19
Dimensione: 8.1 KB
ID: 12977  
    Ultima modifica di TFiutoT384; 28-11-13 alle 16:55

  2. #2
    L'avatar di Apocalips
    Data Registrazione
    May 2011
    Località
    PESCARA
    Messaggi
    2,630
    Ciao,

    il signal che hai costruito che unisce i 2 sistemi non ho capito se non genera alcun segnale oppure se li genera in maniera errata rispetto a quello che dovrebbe essere a rigor di logica.

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

  3. #3

    Data Registrazione
    Oct 2009
    Messaggi
    566
    Citazione Originariamente Scritto da Apocalips Visualizza Messaggio
    Ciao,

    il signal che hai costruito che unisce i 2 sistemi non ho capito se non genera alcun segnale oppure se li genera in maniera errata rispetto a quello che dovrebbe essere a rigor di logica.

    ciao
    Ciao Apo e grazie per aver risposto.
    Il signal a volte mi genera qualche segnale e altre volte no.
    Altri signal, costruiti unendo 2 signal diversi mi hanno dato risultati diversi da quelli che poi ho ottenuto con calcoli fatti a mano. E non so perché.
    "OR" nell'Exit long script o nell'exit short script lo uso per uscire dal trade quando uno dei due signal/TS si inverte e "AND" lo uso per far scattare il segnale quando entrambi i signal/TS si trovano nella stssa dirzione, cioè long o short. Non capisco perché non lavorino come sperato.

  4. #4

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da TFiutoT384 Visualizza Messaggio
    Pensando che questo post possa essere di aiuto non solo a me, vi espongo il seguente problema:
    unire due o più TS in uno solo.

    Il sistema che voglio fare, derivante dall'unione di 2 TS, ha i seguenti segnali:
    quando
    1) entrambi i due TS long: Long;
    2) entrambi i due TS short: Short
    3) un TS long e l’altro short; Stop Long o Stop Short (exit trade)

    Il codice dei due sistemi è il seguente:
    Premetto che:
    MOlowmark, Mohighmark sono i margini superiore e inferiore per il Momentum Oscillator inverso
    UOlowMark, UOhighMark sono i margini superiore e inferiore per l’Ultima Oscillator
    (ho preso l’abitudine di inserire un paio di lettere davanti ai parametri da configurare di ogni indicatore per avere sempre presente a quale indicatore appartengono tali parametri).


    codice Ultimate Oscillator

    Buy script
    INPUTS:@cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark)

    Sell script
    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(@UOhighMark, A)

    codice Momentum Oscillator inverso (inverso perché il codice è speculare al Momentum Oscillator che c’è in BT: non è un’errore; sul TS che stò costruendo mi serve così).

    Buy script
    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101)

    SET A = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(@MOhighMark, A)

    Sell script
    SET A = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(A, @MOlowMark)

    Unione dei due TS: Momentum Oscillator inverso + Ultimate Oscillator

    Buy script
    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101), @cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark) AND CROSSOVER(@MOhighMark, B)


    Sell script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @MOlowMark) AND CROSSOVER(@UOhighMark, B)


    Exit Long Script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @MOlowMark) OR CROSSOVER(@UOhighMark, B)


    Exit Short Script
    SET A = MomentumOscillator(@price, @MOperiods)
    SET B = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    CROSSOVER(A, @UOlowMark) OR CROSSOVER(@MOhighMark, B)

    Tuttavia il risultato non da quanto voluto.

    Per finire allego tre immagini; mentre le prime due, sono relative ai trade dei due TS effettuati su MSFT (Microsoft, ho preso un titolo a caso) con TF = 2h, a partire dal 25 ottobre h. 16:
    - la prima figura riguarda il TS del Momentum Oscillator Inverso
    - la seconda figura riguarda il TS dell'Ultimate Oscillator.
    - la terza mostra il calcolo fatto a mano del risultato che dovrei ottenere unendo i due TS.



    Non riesco proprio a capire dove sbaglio.

    Ciao,
    non so se interpreto male, ma forse il problema sta nel fatto che sia la condizione di buy

    CROSSOVER(A, @UOlowMark) AND CROSSOVER(@MOhighMark, B)
    e sia la condizione di sell

    CROSSOVER(A, @MOlowMark) AND CROSSOVER(@UOhighMark, B)
    così come le hai scritte, si possono verificare solamente se entrambi i crossover si verificano sulla stessa identica barra!
    Mentre per le condizioni di uscita, per le quali hai usato OR, basta che una sola delle 2 si sia verificata.

    Quindi, se non ho frainteso, è sbagliato usare la funzione CROSSOVER !
    Ultima modifica di Smash; 28-11-13 alle 23:59

  5. #5

    Data Registrazione
    Oct 2009
    Messaggi
    566
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Ciao,
    non so se interpreto male, ma forse il problema sta nel fatto che sia la condizione di buy

    CROSSOVER(A, @UOlowMark) AND CROSSOVER(@MOhighMark, B)
    e sia la condizione di sell

    CROSSOVER(A, @MOlowMark) AND CROSSOVER(@UOhighMark, B)
    così come le hai scritte, si possono verificare solamente se entrambi i crossover si verificano sulla stessa identica barra!
    Mentre per le condizioni di uscita, per le quali hai usato OR, basta che una sola delle 2 si sia verificata.

    Quindi, se non ho frainteso, è sbagliato usare la funzione CROSSOVER !
    Ciao. Grazie per la risposta. Pensando a quanto hai scritto, hai ragione sul fatto che "così come le hai scritte, si possono verificare solamente se entrambi i crossover si verificano sulla stessa identica barra!" .
    Tuttavia la funzione CROSSOVER serve.

    Infatti il buy avviene quando:
    1) il Momentum Oscillator (MO) ha incrociato al ribasso il suo margine superiore (MOhighMark) e
    2) l'Ultimate Oscillator (UO) ha incrociato al rialzo il suo limite inferiore (UOlowMark).

    Questo può avvenire
    a) sia contemporaneamente con 1) e 2) nello stesso momento
    b) sia separatamente ovvero prima avviene la fase 1) e poi avviene la fase 2) o viceversa in modo che si arrivi ad un momento in cui si avverano contemporaneamente 1) e 2).

    Per il buy script quindi si deve mettere a punto ancora il punto b), mentre il punto a) è realizzato con CROSSOVER(A, @UOlowMark) AND CROSSOVER(@MOhighMark, B)

    Il sell avviene quando:
    1) il Momentum Oscillator (MO) ha incrociato al rialzo il suo margine inferiore (MOlowMark) e
    2) l'Ultimate Oscillator (UO) ha incrociato al ribasso il suo limite superiore (UOhighMark).

    Questo può avvenire
    a) sia contemporaneamente con 1) e 2) nello stesso momento
    b) sia separatamente ovvero prima avviene la fase 1) e poi avviene la fase 2) o viceversa in modo che si arrivi ad un momento in cui si avverano contemporaneamente 1) e 2).

    Per il sell script quindi si deve mettere a punto ancora il punto b), mentre il punto a) è realizzato con CROSSOVER(A, @MOlowMark) AND CROSSOVER(@UOhighMark, B).

    Per cui ora manca lo script per la fase a) del sell script e del buy script. Ma come fa il signal a capire che, ad esempio, l'UO Ultimate Oscillator (UO) si trova sotto il suo limite superiore (UOhighMark) perchè qualche barra prima l'ha incrociato al ribasso oppure perché ha incrociato al rialzo il suo limite inferiore (UOLowMark) in modo da distinguere tra un UO che indica long e un UO che indica short?
    Chiedo aiuto anche allo staff di playoptions dato che questo dilemma prima o poi si presenterà anche ad altri utenti
    Ultima modifica di TFiutoT384; 29-11-13 alle 01:44

  6. #6

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da TFiutoT384 Visualizza Messaggio
    ......
    Ma come fa il signal a capire che, ad esempio, l'UO Ultimate Oscillator (UO) si trova sotto il suo limite superiore (UOhighMark) perchè qualche barra prima l'ha incrociato al ribasso oppure perché ha incrociato al rialzo il suo limite inferiore (UOLowMark) in modo da distinguere tra un UO che indica long e un UO che indica short?
    Chiedo aiuto anche allo staff di playoptions dato che questo dilemma prima o poi si presenterà anche ad altri utenti
    Potresti provare con qualcosa del genere:

    INPUTS:@cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)
    
    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET SignalLong = CROSSOVER(A, @UOlowMark)
    SET SignalShort = CROSSOVER(@UOhighMark, A)
    SET Signal = SignalLong - SignalShort
    SET Position = CHANGEIF (Signal <> 0, Signal)
    Il vettore finale "Position" (sempre se non ho compreso male le tue intenzioni, si intende! ) dovrebbe valere sempre +1 quando il sistema indica Long e sempre -1 quando il sistema indica Short. Quindi lo potresti utilizzare per le condizioni di Buy Script e Sell Script.

    Poi potresti fare lo stesso ragionamento anche con l'altro sistema del Momentum Oscillator, e combinare le condizioni risultanti.
    Ultima modifica di Smash; 29-11-13 alle 11:33

  7. #7
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    1,002
    Salve,
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Potresti provare con qualcosa del genere:

    INPUTS:@cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)
    
    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET SignalLong = CROSSOVER(A, @UOlowMark)
    SET SignalShort = CROSSOVER(@UOhighMark, A)
    SET Signal = SignalLong - SignalShort
    SET Position = CHANGEIF (Signal <> 0; Signal)
    Il vettore finale "Position" (sempre se non ho compreso male le tue intenzioni, si intende! ) dovrebbe valere sempre +1 quando il sistema indica Long e sempre -1 quando il sistema indica Short. Quindi lo potresti utilizzare per le condizioni di Buy Script e Sell Script.

    Poi potresti fare lo stesso ragionamento anche con l'altro sistema del Momentum Oscillator, e combinare le condizioni risultanti.
    soluzione geniale ! Complimenti !



    C'è solo un piccolo errore, penso di battitura, nell'ultima riga, dove al posto della virgola c'è un punto e virgola.
    L'ultima riga dovrebbe essere così:

    SET Position = CHANGEIF (Signal <> 0, Signal)

    Max Francario
    Ultima modifica di Francario Massimiliano; 29-11-13 alle 11:25

  8. #8

    Data Registrazione
    Oct 2009
    Messaggi
    566
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Potresti provare con qualcosa del genere:

    INPUTS:@cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)
    
    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET SignalLong = CROSSOVER(A, @UOlowMark)
    SET SignalShort = CROSSOVER(@UOhighMark, A)
    SET Signal = SignalLong - SignalShort
    SET Position = CHANGEIF (Signal <> 0; Signal)
    Il vettore finale "Position" (sempre se non ho compreso male le tue intenzioni, si intende! ) dovrebbe valere sempre +1 quando il sistema indica Long e sempre -1 quando il sistema indica Short. Quindi lo potresti utilizzare per le condizioni di Buy Script e Sell Script.

    Poi potresti fare lo stesso ragionamento anche con l'altro sistema del Momentum Oscillator, e combinare le condizioni risultanti.
    Grazie per la tua risposta. La posso testare solo oggi pomeriggio perché ora non sono davanti al PC dove gira BT.
    Nel frattempo, visto che ci ho lavorato, voglio postare un'immagine che riassume il problema. Così se la tua soluzione è corretta, vedendo un'immagine del quesito, altri possono usufruirne.
    Anteprime Allegate Anteprime Allegate Clicca sull'immagine per ingrandirla

Nome: due TS uniti, immagine postata sul forum..png‎
Visite: 37
Dimensione: 49.9 KB
ID: 12987  

  9. #9

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,


    soluzione geniale ! Complimenti !



    C'è solo un piccolo errore, penso di battitura, nell'ultima riga, dove al posto della virgola c'è un punto e virgola.
    L'ultima riga dovrebbe essere così:

    SET Position = CHANGEIF (Signal <> 0, Signal)

    Max Francario

    Grazie Max !

    (ho corretto anche l'errore !)

  10. #10

    Data Registrazione
    Oct 2009
    Messaggi
    566
    Basandomi sul listato "approvato" ho provato a costruire due script, signal 1 e signal 2, ma, pur dando risultati diversi, sono ancora diversi dal risultato che vorrei ottenere. Il non essere un programmatore comporta inevitabilmente degli errori.
    Dove stà il mio errore?

    SIGNAL 1


    BUY SCRIPT

    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101), @cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    SET SignalLongA = CROSSOVER(A, @UOlowMark)
    SET SignalShortA = CROSSOVER(@UOhighMark, A)
    SET SignalA = SignalLongA - SignalShortA
    SET PositionA = CHANGEIF (SignalA <> 0, SignalA)
    SET SignalLongB = CROSSOVER(@MOhighMark, B)
    SET SignalShortB = CROSSOVER(B, @MOlowMark)
    SET SignalB = SignalLongB - SignalShortB
    SET PositionB = CHANGEIF (SignalB <> 0, SignalB)

    SignalA > 0 AND SignalB >0


    SELL SCRIPT


    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    SET SignalLongA = CROSSOVER(A, @UOlowMark)
    SET SignalShortA = CROSSOVER(@UOhighMark, A)
    SET SignalA = SignalLongA - SignalShortA
    SET PositionA = CHANGEIF (SignalA <> 0, SignalA)
    SET SignalLongB = CROSSOVER(@MOhighMark, B)
    SET SignalShortB = CROSSOVER(B, @MOlowMark)
    SET SignalB = SignalLongB - SignalShortB
    SET PositionB = CHANGEIF (SignalB <> 0, SignalB)

    SignalA < 0 AND SignalB <0


    EXIT LONG SCRIPT


    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(B, @MOlowMark) OR CROSSOVER(@UOhighMark, A)


    EXIT SHORT SCRIPT

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(B, @UOlowMark) OR CROSSOVER(@MOhighMark, A)



    SIGNAL 2


    BUY SCRIPT
    INPUTS:@price(CLOSE), @MOperiods(12), @MOlowMark(99.8), @MOhighMark(101), @cycle1(7), @cycle2(6), @cycle3(10), @UOlowMark(45), @UOhighMark(65)

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    SET SignalLongA = CROSSOVER(A, @UOlowMark)
    SET SignalShortA = CROSSOVER(@UOhighMark, A)
    SET SignalA = SignalLongA - SignalShortA
    SET PositionA = CHANGEIF (SignalA <> 0, SignalA)
    SET SignalLongB = CROSSOVER(@MOhighMark, B)
    SET SignalShortB = CROSSOVER(B, @MOlowMark)
    SET SignalB = SignalLongB - SignalShortB
    SET PositionB = CHANGEIF (SignalB <> 0, SignalB)

    PositionA > 0 AND PositionB >0


    SELL SCRIPT

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    SET SignalLongA = CROSSOVER(A, @UOlowMark)
    SET SignalShortA = CROSSOVER(@UOhighMark, A)
    SET SignalA = SignalLongA - SignalShortA
    SET PositionA = CHANGEIF (SignalA <> 0, SignalA)
    SET SignalLongB = CROSSOVER(@MOhighMark, B)
    SET SignalShortB = CROSSOVER(B, @MOlowMark)
    SET SignalB = SignalLongB - SignalShortB
    SET PositionB = CHANGEIF (SignalB <> 0, SignalB)

    PositionA < 0 AND PositionB <0


    EXIT LONG SCRIPT

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(B, @MOlowMark) OR CROSSOVER(@UOhighMark, A)


    EXIT SHORT SCRIPT

    SET A = UltimateOscillator(@cycle1, @cycle2, @cycle3)
    SET B = MomentumOscillator(@price, @MOperiods)
    CROSSOVER(B, @UOlowMark) OR CROSSOVER(@MOhighMark, A)
    Ultima modifica di TFiutoT384; 29-11-13 alle 19:56

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.