Author |
Topic  |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 10:23:19
|
Semplice e piccolo problema:
ho bisogno di calcolare ad eseempio la media mobile di una valibile
a=close-open (? un esempio a caso)
b=moveav(a,10,"S")
non me l'accetta. ho risolto crando un indicatore che calcolase "a"
e poi un successivo indicatore che calcolasse la media dell'indicatore creato con "a", ma cos? mi trovo ad avere nella lista una serie di "mezzi indicatori"
L'altro problema ? che un volta creato questo indicatore che v? da -100 a 0 quando lo faccio scorrere l'asse y non resta fisso.
Grazie
piter |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 11:20:24
|
visto che ci sono:
come faccio a dirgli in un trading system entra al superamento del minimo, ad esempio :
entra se avviene il cross tra -75 e il valore dell'indicatore del giorno prima (quindi indicatore che va in basso), e se si viola al ribasso il minimo di oggi.
return if crossabove(-75,"indicatore",=true) and if ........................
piter |
 |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 11:21:30
|
scusa return if crossabove(-75,"indicatore"(-1),=true) and if ........................
piter |
 |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 14:44:21
|
scusate, e poi ancora, perch? in un trading system se scrivo
Function main() dim bandasup as numeric bandasup = 75 dim cond as Boolean = false if (crossabove(PIT_VAL, bandasup) = true) then cond = true endif return cond Endfunction
non genera alcuna vendita, mentre se scrivo
Function main() return PIT_VAL > 75 Endfunction
mi genera segnali?
piter |
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 28 October 2005 : 16:02:08
|
Non ? possibile calcolare la media mobile di una variabile. La strada da te scelta ? quella giusta (quella di creare un indicatore a parte).
Per? esiste un'eccezione. Se la tua espressione ? composta da funzioni Dati o Indicatori allora puoi scrivere una cosa del tipo:
b = Moveav(Close - Open,10,"S")
cio? devi scrivere l'espressione direttamente nel parametro della funzione Moveav.
>>L'altro problema ? che un volta creato questo indicatore che >>v? da -100 a 0 quando lo faccio scorrere l'asse y non resta fisso.
Si ? cos?. La scala Y viene settata automaticamente in modo da riempire totalemente la finestra. Per farla rimanere fissa devi settarla manualmente cliccando con il tasto sinistro del mouse sopra l'asse Y e trascinando il mouse su o gi? tenendo premuto il tasto. Il problema ? che la modifica non ? permanente e la prossima volta che rientrerai sul grafico il tutto sar? risettato automaticamente.
>>return if crossabove(-75,"indicatore"(-1),=true) and
questa sintassi contiene un'infinit? di errori! Inoltre stai utilizzando la funzione CrossAbove in modo assolutamente errato, anzi impossibile. CrossAbove serve per capire se due ARRAY si stanno incrociando verso l'alto. Tu invece stai utilizzando due valori numerici non due array!
Per fare ci? che vuoi tu basta semplicemente scrivere:
If (Value(MioIndicatore, -1) > -75) Then
Per quanto riguarda la terza domanda:
>>if (crossabove(PIT_VAL, bandasup) = true) then
vale la stessa cosa detta prima. CrossAbove non pu? essere utilizzata per un'operazione del genere! Usa un semplice IF.
|
 |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 18:44:10
|
Intanto grazie,
per quello che riguarda il cross per? non credo sia la stessa cosa dire se l'indicatore incrocia un valore piuttosto che dire se maggiore o uguale a quel valore. Il cross identifica un momento preciso e una direzione precisa di superamento che non si pu? attribuire a un >=
piter |
 |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 18:48:45
|
se non fosse possibile fare il cross del mio indicatore con un determinato valore di scala sarebbe possibile ad esempio fare la media a 1 periodo del valore della scala per il cross con l'indicatore, mi spiego meglio calcolo la media a 1 periodo del dato 70 e poi gli dico di dirmi se true crossabove del mio indicatore con la media.
piter |
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 28 October 2005 : 19:13:54
|
Ti conviene lasciare perdere le funzioni Cross e gestire la cosa con degli IF.. magari controllando i valori precedenti.
Quindi ad esempio:
If (Value(MioIndicatore, -1) <= -75) Then If (MioIndicatore > -75) Then bIncrocio = True Endif Endif
In questo modo fai ci? che fa una funzione CrossAbove cio? controlli che il dato precedente dell'indicatore sia minore o uguale al tuo valore soglia e quello attuale sia maggiore del valore soglia. In pratica hai controllato se l'indicatore incrocia verso l'alto il tuo valore di soglia.
|
 |
|
piter
Nuovo Utente
40 Posts |
Posted - 28 October 2005 : 19:37:49
|
mi stavo muovendo creando un indicatore con valore fisso 70 e poi fare il cross di 2 indicatori che mi sembra si possa fare, ma devo dire che la tua soluzione (come sempre) ? la migliore.
Resta in sospeso il fatto di come posso dire al trading system di entrare in posizione o di chiuderne una al superamento del minimo (meglio ancora se al superamento del minimo - una percentuale o ad un max pi? una percentuale)
piter |
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 28 October 2005 : 20:25:13
|
Un esempio di ci? che vuoi fare lo puoi trovare qui:
http://www.insider3000.com/insider/it/tastudio/details1.asp?type=T&titleid=00500&argid=00100
Non vengono usati i valori di un indicatore ma solamente i valori standard di Open, High, Low e Close ma una volta capito il concetto puoi modificare il codice secondo le tue esigenze..
Ti faccio comunque un esempio di come entrare Long se il tuo indicatore supera il suo massimo degli ultimi 10 periodi + una certa percentuale (del 10%):
Function Main() Dim dMyMax as Numeric
dMyMax = Max(MioIndicatore, 10)
Return (MioIndicatore > (dMyMax + 0.1 * dMyMax)) EndFunction
|
 |
|
|
Topic  |
|