T O P I C R E V I E W |
mistercris |
Posted - 21 February 2006 : 19:17:34 ho creato un trading nel quale ho spostato le bande di bollinger indietro di 5 periodi, ma questo significa che il sistema mi da il segnale si ingresso ma io lo vedrò solo dopo altri 5 periodi di contrattazione? |
14 L A T E S T R E P L I E S (Newest First) |
mistercris |
Posted - 01 March 2006 : 19:26:23 grazie |
SupportoTecnico |
Posted - 01 March 2006 : 13:26:15 Devi utilizzare una variabile globale dichiarata nel modulo "Opzioni Comuni" che utilizzerai per memorizzare il periodo in cui si è verificata la prima condizione.
Le variabili globali sono accessibili da tutti i moduli del TS e non vengono resettate come le variabili dichiarate all'interno delle funzioni ma mantengono il loro ultimo valore.
In pratica devi separare in 2 "IF" le due condizioni e controllare la seconda solo se è scattata la prima. Come fare?
Io farei una cosa del genere:
If ((CurrentBar - plStartBar) > 5) then lStartBar = 0 Endif
If (plStartBar <= 0) Then If .. prima condizione.. Then plStartBar = CurrentBar Endif Else If .. seconda condizione .. Then plStartBar = 0 bSignal = True Endif Endif
La dichiarazione da inserire in "Opzioni Comuni" sarà una cosa del genere:
Dim plStartBar As Numeric = 0
Inoltre un consiglio:
- Se il TS può fare sia operazioni Long che Short allora utilizza due differenti variabili "plStartBar" per esempio "plStartBarLong" e "plStartBarShort" e ricordati di scrivere una cosa del genere:
plStartBarLong = 0
nel modulo "Entra in vendita" una volta ottenuto il segnale di entrata Short (dove bSignal viene eguagliato a True).
Viceversa per plStartBarShort.
In pratica riprendendo il codice di prima scriverai in "Entra in acquisto" una cosa del genere:
If ((CurrentBar - plStartBarLong) > 5) then plStartBarLong = 0 Endif
If (plStartBarLong <= 0) Then If .. prima condizione.. Then plStartBarLong = CurrentBar Endif Else If .. seconda condizione .. Then plStartBarLong = 0 plStartBarShort = 0 bSignal = True Endif Endif
e in "Entra in vendita":
If ((CurrentBar - plStartBarShort) > 5) then plStartBarShort = 0 Endif
If (plStartBarShort <= 0) Then If .. prima condizione.. Then plStartBarShort = CurrentBar Endif Else If .. seconda condizione .. Then plStartBarLong = 0 plStartBarShort = 0 bSignal = True Endif Endif
e in "Opzioni comuni":
Dim plStartBarLong As Numeric = 0 Dim plStartBarShort As Numeric = 0
|
mistercris |
Posted - 01 March 2006 : 12:20:41 ok ti chiedo un'altra cosa: come faccio a dire al sistema di comprare solo se; verificatasi la prima condizione si verifica la seconda entro altre 5 giornate successive? esempio: 1^ condizione (adesso io ho AND devo mettere nelle prossime 5 giornate) 2^condizione |
SupportoTecnico |
Posted - 28 February 2006 : 22:33:14 Perchè dovrebbero essere diversi? Se le regole di base sono le stesse è giusto che diano gli stessi segnali! Il problema riguardava solo il tempismo del segnale. |
mistercris |
Posted - 28 February 2006 : 19:13:23 Mi sono accorto stasera scaricando i dati che ho il segnale in ritardo di 5 giorni (mi è comparso stasera sulla barra di 5 giorni fà), non ci voleva! Adesso ho modificato il trading system ed ho inserito la formula che mi hai postato in modo da risolvere il problema. ho notato però che tutti i segnali antecedenti sono uguali al vecchio trading system è giusto che sia cosi? |
mistercris |
Posted - 26 February 2006 : 20:52:48 Ciao, ho provato ad inserire la formula che mi hai dato all'interno del mio trading system ma mi da errore. Ho risolto il problema in un altro modo e che risultati! Grazie mille. |
mistercris |
Posted - 24 February 2006 : 20:02:52 Ti ringrazio, tra sabato e domenica provo e lo inserisco nel trading system (che ho creato con l'aiuto di un mio amico che ha cercato di tradurre le mie idee) tra l'altro ha ottimi risultati se non è per l'inconveniente che vedo il segnale in ritardo di 5 periodi. grazie saluti |
SupportoTecnico |
Posted - 24 February 2006 : 19:51:46 Il modo più semplice che mi viene in mente è creare un indicatore utente con il seguente codice:
Function Main() Dim lTmp1 As Numeric lTmp1 = TotBar - CurrentBar if (lTmp1 > 5) then Return Close(5) else Return Close(lTmp1) Endif Endfunction
Una volta creato lo puoi utilizzare nella formula del Bollinger al posto del Close. Se supponiamo di chiamarlo MyInd nella formula del bollinger lo userai in questo modo:
If Bollinger(MyInd, 20, "U", 2) > .... then
Ovviamente i valori 20, "U", 2 li ho messi a caso.. tu setta i tuoi.
ATTENZIONE!! Visto che abbiamo già spostato i valori in origine non devi spostarli anche nella formula del Bollinger. Quindi non ci va più il -5 nello shift orizzontale.
|
mistercris |
Posted - 24 February 2006 : 19:16:47 ok per la seconda soluzione. quindi l'ultima quotazione del prezzo andrà usata per calcolare i 5 valori mancanti della banda di bollinger(perchè l'abbiamo spostata indietro di 5) |
SupportoTecnico |
Posted - 24 February 2006 : 19:09:40 Vediamo se ho capito:
- il valore del Bollimger negli ultimi 5 periodi deve essere uguale alla chiusura dell'ultimo periodo della seria storica?
oppure
- il valore dell'ultimo periodo della serie storica deve "riempire" i valori dei 5 periodi "futuri". Quindi il Bollinger sarà calcolato utilizzando i valori della serie storica + altri 5 valori "futuri" tutti uguali all'ultimo periodo?
|
mistercris |
Posted - 24 February 2006 : 18:49:31 vorrei modificare la formula delle bande di bollinger in modo che mi rimanga spostata indietro di 5 periodi ma che mi vada a compensare la mancanza degi ultimi 5 periodi usando la quotazione dell'ultimo prezzo. riesci a postarmi la formula? |
SupportoTecnico |
Posted - 24 February 2006 : 13:50:35 Vediamo.. se hai un bollinger spostato verso sinistra di 5 periodi il tuo sistema non sarà mai in tempo reale perchè ovviamente l'ultima data dovrebbe sapere il valore del bollinger di 5 giorni nel futuro per darti il segnale in tempo reale. La cosa invece funziona se sposti il bollinger verso destra. |
mistercris |
Posted - 23 February 2006 : 18:46:42 Faccio un ipotesi perchè credo di non essermi spiegato bene: Come può il sistema generare un segnale in data odierna se il valore della banda di bollinger non c'è visto che l'ho spostato indietro di 5 periodi? Lo vedrò tra 5 giorni retrodatato di 5 ggè gisto o mi sbaglio? |
SupportoTecnico |
Posted - 21 February 2006 : 21:46:38 No. Non c'è alcun legame tra il momento in cui viene visualizzato il segnale e lo spostare indietro le bande di bollinger |