Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
 All Forums
 Help
 Aiuti, consigli, dubbi ...
 Indicatori

Note: You must be registered in order to post a reply.

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert Email Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

   
   

T O P I C    R E V I E W
luigi Posted - 31 August 2008 : 22:03:59
Salve e buone ferie fatte,
vorrei farVi due domande:
1) per costruire (o progettare) un indicatore che è composto da sei medie un pò particolari, si può riuscirci con un solo indicatore ? mi spiego meglio, una volta calcolate le sei medie in progettazione, come faccio a visualizzarle tutte insieme usando un solo indicatore visto che al return posso dare un solo valore? (attualmente utilizzo sei indicatori, da inserire ogni volta che apro un grafico nuovo...);
2) nel comporre un trading system volendo calcolare la deviazione standard di sei medie, ho dichiarato un array con le sei medie, però se provo a fare il test arrivato al punto esce fuori dal programma, allego la porzione di codice:
'inizializzo l'array delle Ema
EMA(0) = Ema1
EMA(1) = Ema2
EMA(2) = Ema3
EMA(3) = Ema4
EMA(4) = Ema5
'Calcolo la deviazione standard delle Ema
DevS = Stdev(EMA(), 150)

grazie dei consigli.
luigi
8   L A T E S T    R E P L I E S    (Newest First)
luigi Posted - 17 September 2008 : 18:49:09
innanzi tutto, grazie dell'aiuto, fatto quanto suggerito, ora però il messaggio è "valore non recuperabile"...
a cosa è dovuto?
PERO' SEMBRA FUNZIONARE LO STESSO
SupportoTecnico Posted - 17 September 2008 : 17:27:29
Prima di tutto non devi chiamare le variabili che utilizzi nel trading system con lo stesso nome degli indicatori che hai creato!

Se fossi al posto dell'interprete del linguaggio e avessi una variabile che ha lo stesso nome di un indicatore quale dei due sceglieresti?
L'interprete sceglie sempre la variabile.

Quindi anche nell'istruzione:

if crossabove(close, Ema5) then

non è passata la serie storica di Ema5 ma il valore della variabile!

Quindi in generale non utilizzare mai come nomi di variabili i nomi che hai già usato per gli indicatori o nomi di funzioni => come ad esempio "Min".

La soluzione è cambiare i nomi alle tue variabili Ema1, Ema2 ecc... Min ecc..
luigi Posted - 17 September 2008 : 15:17:00
l'indicatori li ho creati nella seguente maniera:
Function Main()
Dim Ema1 As Numeric
Ema1 = Value((moveAv(close, 9.797959, "E")), - 1) * (1 - 0.18522) + close * 0.18522
Return Ema1
EndFunction
sui grafici funzionano, ma sui trading system mi viene qualche dubbio...
mentre il trading system seguente:
..........
bresult = false

Ema1 = Value((moveAv(close, 9.797959, "E")), - 1) * (1 - 0.18522) + close * 0.18522
Ema2 = Value((moveAv(close, 6.928203, "E")), - 1) * (1 - 0.252264) + close * 0.252264
Ema3 = Value((moveAv(close, 8.485281, "E")), - 1) * (1 - 0.210853) + close * 0.210853
Ema4 = Value((moveAv(close, 11.21007, "E")), - 1) * (1 - 0.163799) + close * 0.163799
Ema5 = Value((moveAv(close, 6.310004, "E")), - 1) * (1 - 0.273598) + close * 0.273598
'Calcolo del massimo delle Ema
if Ema1 > Ema2 then
Max = Ema1
else
Max = Ema2
endif
if Ema3 > Max
Max = Ema3
endif
if Ema4 > Max
Max = Ema4
endif
if Ema5 > Max
Max = Ema5
endif
'Calcolo del minimo delle Ema
if Ema1 < Ema2 then
Min = Ema1
else
Min = Ema2
endif
if Ema3 < Min
Min = Ema3
endif
if Ema4 < Min
Min = Ema4
endif
if Ema5 < Min
Min = Ema5
endif
if crossabove(close, Ema5) then
bresult = true
PrAcq = open( + 1)
price PrAcq
pdStopLossLong2 = open( + 1) - open( + 1) * 2 / 100
pp = false
endif
return bresult
EndFunction
non mi si verifica mai...
poi in questo punto dovrei mettere il min delle 5 ema
if crossabove(close, Ema5) then
ma non sò come "dirglielo",
mi potete "indirizzare" sulla buona strada ?
grazie
SupportoTecnico Posted - 17 September 2008 : 12:52:38
Per vedere quale è più alta/bassa nel periodo in elaborazione ti basterebbero le varie formule da te già scritte (visto che il confronto avverrebbe tra dati singoli).

Invece per il cross ti ci vuole l'intera serie dati.
Quindi anche questa volta il modo più rapido e performante per risolvere il problema è creare n. indicatori diversi, ognuno dei quali rappresenta una ema differente.
luigi Posted - 16 September 2008 : 23:57:25
quote:
Originally posted by luigi


Ema1 = Value((moveAv(close, 9, "E")), - 1) * (1 - 0.18522) + close * 0.18522
Ema2 = Value((moveAv(close, 6, "E")), - 1) * (1 - 0.252264) + close * 0.252264
Ema3 = Value((moveAv(close, 8, "E")), - 1) * (1 - 0.210853) + close * 0.210853
Ema4 = Value((moveAv(close, 11, "E")), - 1) * (1 - 0.163799) + close * 0.163799
Ema5 = Value((moveAv(close, 6, "E")), - 1) * (1 - 0.273598) + close * 0.273598




ho ancora qualche difficoltà..., le Ema calcolate dovrei vedere quale è la piu bassa/alta di valore(alla data attuale) e se incrocia il prezzo di chiusura, però non riesco a combinarle in un array ed utilizzare la funzione crossabove, potete aiutarmi ?
grazie
SupportoTecnico Posted - 02 September 2008 : 12:32:56
Purtroppo ho una "cattiva" notizia:
- è stato verificato che ci sono dei problemi con la funzione stdev se come primo argomento viene passata una variabile array, e quindi proprio il tuo caso.

La soluzione (che tra l'altro è pure più semplice della precedente), è costruire un indicatore utente che rappresenti la serie dati da passare alla funzione stdev.
luigi Posted - 02 September 2008 : 00:39:28
Grazie dell'aiuto, ora ho capito, in effetti ho delle difficoltà a calcolare l'array EMA, la difficoltà consiste nel calcolare il valore delle Ema(1,2,3,4,5) per un periodo all'indietro a partire da -150 alla data odierna, così facendo otterrei i dati per il calcolo della deviazione std;
Ema1 = Value((moveAv(close, 9, "E")), - 1) * (1 - 0.18522) + close * 0.18522
Ema2 = Value((moveAv(close, 6, "E")), - 1) * (1 - 0.252264) + close * 0.252264
Ema3 = Value((moveAv(close, 8, "E")), - 1) * (1 - 0.210853) + close * 0.210853
Ema4 = Value((moveAv(close, 11, "E")), - 1) * (1 - 0.163799) + close * 0.163799
Ema5 = Value((moveAv(close, 6, "E")), - 1) * (1 - 0.273598) + close * 0.273598
'Calcolo della media delle Ema
MEma = (Ema1 + Ema2 + Ema3 + Ema4 + Ema5) / 5
'inizializzo l'array delle Ema
EMA(0) = Ema1
EMA(1) = Ema2
EMA(2) = Ema3
EMA(3) = Ema4
EMA(4) = Ema5
'Calcolo la deviazione standard delle Ema
DevS = Stdev(EMA(), 150)

un aiuto grazie...
SupportoTecnico Posted - 01 September 2008 : 11:37:15
1) come hai già intuito non è possibile disegnare diversi indicatori contemporaneamente a partire da uno stesso script. Return ritorna solo un valore. Quindi:
- Se il problema è aggiungere nello stesso istante n. indicatori al grafico del titolo potresti salvarti un layout (aspetto) e aprire i grafici con quel layout.
- Se il problema è evitare di scrivere n. script differenti allora potresti creare una property nell'indicatore con la funzione di definire quale valore lo script deve ritornare.

2) alla funzione Stdev hai passato il valore "150" al parametro che definisce i periodi su cui calcolare la deviazione standard, quando in realtà hai un array composto da soli 5 elementi. La deviazione non può essere calcolata. Scrivere: EMA(0) = Ema1 significa assegnare all'elemento zero di EMA, il valore che Ema1 assume nel periodo corrente (in elaborazione) e non di tutta la serie di valori dell'indicatore Ema1.



Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07