Author |
Topic  |
|
kritis2
Nuovo Utente
15 Posts |
Posted - 21 June 2006 : 12:42:17
|
Ciao, cortesemente, potresti controllarmi sta funzione a mò di esempio???
function main() return (Moveav(Close, 5, "E") - Moveav(Close, 10 "E")) > Value(Moveav((Close, 5, "E"), - 1) - (Moveav(Close, 10, "E"), - 1)) endfunction
In sintesi: (La MME a 5 periodi sul close - La MME a 10 periodi sul close) > della stessa espressione del giorno prima
Potresti inserirmi la condizione che il calcolo deve essere eseguito quando: "tutte le Moveav sono > 0"
Il tutto mi serve per iniziare a capirci qualcosa di più col linguaggio, visto che sono sicuro che userai l'If oppure il Select Case.
Grazie tante davvero
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 21 June 2006 : 17:26:28
|
Beh.. spero che tu abbia copiato molto male la riga perchè ci sono molti errori di sintassi!
La riga giusta:
function main() return (Moveav(Close, 5, "E") - Moveav(Close, 10, "E")) > (Value(Moveav(Close, 5, "E"), - 1) - Value(Moveav(Close, 10, "E"), - 1)) endfunction
Per quanto riguarda la condizione del maggiore di zero.. non serve, perchè la media mobile non viene calcolata se non c'è il numero minimo di periodi su cui calcolarla (viene generato un errore e si esce dalla funzione Main). Inoltre, sul grafico dei prezzi la media mobile (quando esiste), è sempre maggiore di zero.
|
 |
|
kritis2
Nuovo Utente
15 Posts |
Posted - 28 June 2006 : 12:32:01
|
Ciao e scusami ancora per il disturbo in merito al medesimo argomento, ma desidero capirci bene! Partiamo dall'inizio: a) ho creato un nuovo pseudo-indicatore, calcolato sulla stringa Moveav(Close, 12, "E") - Moveav(Close, 26, "E"), in definitiva "Differential Line del Macd"; b) questo crea dei valori che oscillano attorno allo "0", assumendo valori pos e neg; c) desidero impostare un'allarme su questo indicatore che abbia come caratteristiche: 1) "valore > valore -1 and valore -1 > valore -2 and valore -2 > valore -3", insomma valori in aumento da 3/4 giorni; 2) "filtro che esegua il calcolo solo con valori maggiori di 0";
--- Cosa debbo fare??? Sono certo del tuo aiuto, Grazie cordiali saluti
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 28 June 2006 : 15:16:15
|
Gli allarmi li imposti nella finestra di "Gestione Esploratori" alla quale accedi dal menù "Analisi" => "Gestione Esploratori".
Per farlo: 1) vai nella tab "Allarmi" e crea un nuovo allarme. 2) scrivi la tua formula in una delle sezioni "Entra lungo", "Esci lungo" ecc.... supponiamo su "Entra Lungo" 3) deseleziona i vari check nelle altre sezioni altrimenti salvando ti darà un errore di formula non trovata o qualcosa di simile. 4) setta secondo le tue preferenze le opzioni che hai in alto (sono 2)
Comunque, prova a dare un'occhiata a questa pagina.. giusto per avere una panoramica della cosa:
http://www.insider3000.com/insider/it/hol/default.asp?titleid=00800&argid=00500
Ma veniamo alla formula...
1) "valore > valore -1 and valore -1 > valore -2 and valore -2 > valore -3", insomma valori in aumento da 3/4 giorni; 2) "filtro che esegua il calcolo solo con valori maggiori di 0";
Per scrivere queste cose bastano dei semplici IF:
If (MyInd > Value(MyInd, -1)) And (Value(MyInd, -1) > Value(MyInd, -2)) And (Value(MyInd, -2) > Value(MyInd, -3)) Then If (Value(MyInd, -3) > 0) then Return True Endif Endif
Finito!
N.B. Ovviamente al posto di "MyInd" devi scrivere il nome del tuo indicatore.
N.B. La condizione "If (Value(MyInd, -3) > 0) then" serve perchè vuoi che il calcolo avvenga solo con tutti i valori maggiori di zero. Io ho controllato solo il valore più lontano nel tempo visto che se quello è positivo anche gli altri sono positivi (per l'If precedente).
|
 |
|
kritis2
Nuovo Utente
15 Posts |
Posted - 28 June 2006 : 16:04:43
|
Grazie, tante grazie al sempre mitico supporto tecnico...! Nell'attesa della tua replica chiarificatrice, ti allego che malloppo di espressioni avevo sviluppato, così per farti due risate:
PRIMA DELLA TUA REPLICA
function main()
Dim A As Numeric Dim B As Numeric Dim C As Numeric Dim D As Numeric
A = Value(Moveav(Close, 12, "E")) - Value(Moveav(Close, 26, "E")) B = (Value(Moveav(Close, 12, "E"), - 1) - Value(Moveav(Close, 26, "E"), - 1)) C = (Value(Moveav(Close, 12, "E"), - 2) - Value(Moveav(Close, 26, "E"), - 2)) D = (Value(Moveav(Close, 12, "E"), - 3) - Value(Moveav(Close, 26, "E"), - 3)) return A > B and B > C and C > D endfunction
DOPO LA TUA REPLICA
function main()
Dim A As Numeric Dim B As Numeric Dim C As Numeric Dim D As Numeric
A = Value(Moveav(Close, 12, "E")) - Value(Moveav(Close, 26, "E")) B = (Value(Moveav(Close, 12, "E"), - 1) - Value(Moveav(Close, 26, "E"), - 1)) C = (Value(Moveav(Close, 12, "E"), - 2) - Value(Moveav(Close, 26, "E"), - 2)) D = (Value(Moveav(Close, 12, "E"), - 3) - Value(Moveav(Close, 26, "E"), - 3)) If A > B and B > C and C > D If D > 0 then
Return True Endif Endif endfunction
GRAZIE DI TUTTO ADESSO HO LE IDEE MOLTO PIU' CHIARE
GRAZIE INSIDER 3000
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 28 June 2006 : 17:52:44
|
Giusto un paio di appunti:
in questo caso:
A = Value(Moveav(Close, 12, "E")) - Value(Moveav(Close, 26, "E"))
non serve utilizzare la funzione "Value" perchè fai riferimento al periodo in elaborazione. Quindi è più corretto scrivere:
A = Moveav(Close, 12, "E") - Moveav(Close, 26, "E")
e poi.. quando scrivi un If che ha diverse condizioni concatenate da "And" oppure "Or" racchiudi sempre tra parentesi ogni singola condizione. Quindi un If di questo tipo:
If A > B and B > C and C > D Then
è meglio scriverlo:
If (A > B) and (B > C) and (C > D) Then
|
 |
|
|
Topic  |
|
|
|