Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Problemi con "Insider 3000 versione 3"
 Problemi col linguaggio di programmazione
 Suggerimenti linguaggio di programmazione
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

kritis2
Nuovo Utente

15 Posts

Posted - 21 June 2006 :  12:42:17  Show Profile  Reply with Quote
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  Show Profile  Reply with Quote
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.

Go to Top of Page

kritis2
Nuovo Utente

15 Posts

Posted - 28 June 2006 :  12:32:01  Show Profile  Reply with Quote
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

Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 28 June 2006 :  15:16:15  Show Profile  Reply with Quote
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).

Go to Top of Page

kritis2
Nuovo Utente

15 Posts

Posted - 28 June 2006 :  16:04:43  Show Profile  Reply with Quote
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

Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 28 June 2006 :  17:52:44  Show Profile  Reply with Quote

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

Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07