Author |
Topic |
Frenk
Nuovo Utente
41 Posts |
Posted - 29 November 2012 : 23:47:28
|
Salve ho scaricato la piattaforma utilizzando il periodo di prova. Da una primo approccio mi sembra buona, ma devo valutare ancora molte cose, per questo vi chedo se avete un manuale completo in pdf più dettagliato di quello che si trova nella piattaforma " o altro formato", poi vorrei sapere se acquistando la piattaforma a € 149,00 si ha la licenza a titolo definitivo. E poi come in oggetto, non riesco a configurare il DDE ricezione dati in real-time con il metaerver versione 3.2 usando il DDE di Metatrader 4. Nella schermata DDE ricezione dati in Real Time per insider 3000 nella parte sinistra mi sembra tutto corretto: Forex (simobolo "Forex") > EURUSD (simbolo "EURUSD").
Nella parte destra TIME FRAME E PROPRIETA':
EURUSD > DE04720051 (simbolo) > 5 (minuti per barra)
Sempre nella parte destra inferiore non so bene cosa mettere:
Unita: Decimal Divisore: 1/1 Usa data del PC: No Server: MT4 (però i dati dovrei prenderli dal metaserver quindi credo sia "MSRT") Data: (non ho capito cosa mettere) Ora: (non ho capito cosa mettere) Prezzo: MT4|BID!EURUSD Volume: MT4|VOLUME!EURUSD oppure MT4|BID!EURUSD Formato data: mm/dd/yyyy Formato Ora: hh:mm:ss Separatore decimale: , Separatore migliaia: .
Ho provato in varie maniere a completare le caselle del Server, Data, Ora ma quando vado nella schermata ricezione dati e poi connetti mi da sempre errore.
spero di essere stato chiaro, un aiuto se possibile, grazie. |
Edited by - Frenk on 29 November 2012 23:54:32 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 30 November 2012 : 02:10:35
|
Il prezzo della licenza di Insider 3000 è di 149 euro + iva 21%, ed è una tantum, quindi si, è a titolo definitivo.
Per la questione configurazione DDE:
Purtroppo non avendo la possibilità di testare direttamente su metatrader dobbiamo andare un po' a tentativi.
Prova questa configurazione:
Unita: Decimal Divisore: 1/1 Usa data del PC: No Server: MT4 Data: Time!EURUSD Ora: Time!EURUSD Prezzo: BID!EURUSD Volume: (lascia vuoto) Formato data: yyyy/mm/ddBXXXXX Formato Ora: XXXX/XX/XXBhh:mm Separatore decimale: . Separatore migliaia:
In particolare:
1) controlla bene come la data/ora viene fornita da MT4. Cercando su Google ho visto che potrebbe essere una cosa del genere: 2012/11/30 12:45 => da qui la configurazione che ti ho suggerito.
Il formato è importante perchè devi descrivere perfettamente al programma dove cercare l'anno il mese il giorno, l'ora e i minuti altrimenti la data/ora non sarà riconoscibile.
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 30 November 2012 : 16:58:48
|
Perfetto il grafico è partito in real time,,,,non riesco a configurare bene il volume, lasciando vuota l' apposita casella il volume è pari a 0, mentre se uso il BID o l' ASK i valori diventano molto alti, c' e modo di utilizzare qualche altro parametro per configurare al meglio il volume? Inoltre come si fa ad aggiungere almeno un decimale in più sull' asse delle Y ? L' EURO/DOLLARO prevede 5 decimali dopo la virgola, mentre in questo momento il grafico ne fa vedere 4 e non riesco a capire come aggiungerne uno o due in più.
grazie
quote: Originally posted by SupportoTecnico
Il prezzo della licenza di Insider 3000 è di 149 euro + iva 21%, ed è una tantum, quindi si, è a titolo definitivo.
Per la questione configurazione DDE:
Purtroppo non avendo la possibilità di testare direttamente su metatrader dobbiamo andare un po' a tentativi.
Prova questa configurazione:
Unita: Decimal Divisore: 1/1 Usa data del PC: No Server: MT4 Data: Time!EURUSD Ora: Time!EURUSD Prezzo: BID!EURUSD Volume: (lascia vuoto) Formato data: yyyy/mm/ddBXXXXX Formato Ora: XXXX/XX/XXBhh:mm Separatore decimale: . Separatore migliaia:
In particolare:
1) controlla bene come la data/ora viene fornita da MT4. Cercando su Google ho visto che potrebbe essere una cosa del genere: 2012/11/30 12:45 => da qui la configurazione che ti ho suggerito.
Il formato è importante perchè devi descrivere perfettamente al programma dove cercare l'anno il mese il giorno, l'ora e i minuti altrimenti la data/ora non sarà riconoscibile.
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 30 November 2012 : 18:21:23
|
Da quello che ho visto in giro (non vorrei sbagliarmi però), pare che MT4 non fornisca il volume via DDE. Tutti infatti suggeriscono di mettere il BID. Ma di fatto non ha senso. Per questo non l'ho incluso nella configurazione.
Per i decimali.. purtroppo ci fermiamo a 4. Non c'è modo di mettere il quinto. Nella prossima versione di Insider (in via di sviluppo) arriveremo a 6.
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 30 November 2012 : 19:55:10
|
Piu o meno quando uscirà la prossima versione?
quote: Originally posted by SupportoTecnico
Da quello che ho visto in giro (non vorrei sbagliarmi però), pare che MT4 non fornisca il volume via DDE. Tutti infatti suggeriscono di mettere il BID. Ma di fatto non ha senso. Per questo non l'ho incluso nella configurazione.
Per i decimali.. purtroppo ci fermiamo a 4. Non c'è modo di mettere il quinto. Nella prossima versione di Insider (in via di sviluppo) arriveremo a 6.
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 01 December 2012 : 00:49:40
|
La prossima versione sarà molto diversa da quella attuale. Non si tratta di un semplice restyle dell'applicazione. Su questo forum c'è qualche thread in cui se ne parla.
Per l'uscita non vorrei sbilanciarmi troppo, ma a spanne dopo la prossima estate.
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 01 December 2012 : 12:54:51
|
Buono a sapersi che la piattaforma viene sviluppata molto di più di quella attuale. Basandomi per lo più sull' analisi ciclica vorrei sapere se è possibile creare delle medie mobili centrate semplici, per poi arrivare alle velocità centrate, l' algoritmo finale delle medie centrate e velocità dovrebbe essere uguale a excel (nel senso che costruendo una media centrata su excel sulla piattaforma dovra venire lo stesso indentico indicatore), questo è il listato di una media centrata per il metastock a 64 periodi:
fwPds:=32; proj:=2; pds:=1; CHIUSURA:=Mov(C,pds,S); center:=LastValue(If(fwPds<0,Int(pds/2),fwPds)); fwd:=Ref(CHIUSURA,center); valid:=Cum(IsDefined(fwd)) =LastValue(Cum(IsDefined(fwd))); valid:=valid AND Alert(valid=0,2); xtend:=LastValue(fwd+PREV-PREV); movAvg:=Ref(Ref(xtend,pds-1),-pds+1); init:=Cum(IsDefined(movAvg))=1; direction:=movAvg+ If(IsUndefined(fwd), ValueWhen(1,init OR valid,movAvg)- ValueWhen(1,init OR valid,Ref(movAvg,-1)),0) *BarsSince(init OR valid); GRAFICO:=If(proj=1,direction,movAvg); Mov(GRAFICO,64,S)
Questo tipo di media andrebbe bene, anche se io preferirei che la ripetizione dei dati finali non sia quella del' ultimo valore certo (non fittizio),,,,, in pratica dopo l' ultimo valore vorrei che a completare la serie ci siano tutti zeri per rendere la media stessa meno reattiva,,,, comunque come gia detto una media come il codice scritto sopra andrebbe bene....
quote: Originally posted by SupportoTecnico
La prossima versione sarà molto diversa da quella attuale. Non si tratta di un semplice restyle dell'applicazione. Su questo forum c'è qualche thread in cui se ne parla.
Per l'uscita non vorrei sbilanciarmi troppo, ma a spanne dopo la prossima estate.
|
Edited by - Frenk on 01 December 2012 12:56:10 |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 01 December 2012 : 14:41:51
|
Certo che con il linguaggio di programmazione di Insider puoi ottenere la media mobile centrata! Il linguaggio è simile a visual basic come sintassi, quindi abbastanza semplice, ed è molto versatile. Nella nuova versione tra l'altro è stato migliorato moltissimo.
Il codice dell'indicatore "Media mobile centrata" potrebbe essere questo:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
If (TotBar - CurrentBar >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
iMyPos = TotBar - CurrentBar
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
mc = dTot / Period
endif
Return mc
Endfunction
Dove "Period" è il periodo della media mobile (per esempio 64), e HalfPeriod è il periodo a metà (per esempio 32).
Con il codice qui sopra crei la media mobile centrata con alla fine i dati aggiuntivi uguali all'ultima chiusura. Se vuoi che i dati mancanti siano zero allora è sufficiente togliere questa riga dal codice:
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
che quindi diventa:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
If (TotBar - CurrentBar >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
iMyPos = TotBar - CurrentBar
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
mc = dTot / Period
endif
Return mc
Endfunction
Ricordati, in fase di aggiunta della media al grafico dei prezzi di settare la sua proprietà "Usa Min-Max Grafico" uguale a "SI".
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 01 December 2012 : 16:16:20
|
Ottimo, veramente buono,,,, ti farei delle ultime richieste per poi iniziare a studiare il manuale in maniera più dettagliata, intanto con il tuo aiuto vorrei crearmi quei pochi indicatori che uso normalmente,,,, a questo punto ti chiederei di crearmi la velocità centrata sia con i dati aggiuntivi uguali all' ultima chiusura, sia con i dati mancanti = zero.
quote: Originally posted by SupportoTecnico
Certo che con il linguaggio di programmazione di Insider puoi ottenere la media mobile centrata! Il linguaggio è simile a visual basic come sintassi, quindi abbastanza semplice, ed è molto versatile. Nella nuova versione tra l'altro è stato migliorato moltissimo.
Il codice dell'indicatore "Media mobile centrata" potrebbe essere questo:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
If (TotBar - CurrentBar >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
iMyPos = TotBar - CurrentBar
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
mc = dTot / Period
endif
Return mc
Endfunction
Dove "Period" è il periodo della media mobile (per esempio 64), e HalfPeriod è il periodo a metà (per esempio 32).
Con il codice qui sopra crei la media mobile centrata con alla fine i dati aggiuntivi uguali all'ultima chiusura. Se vuoi che i dati mancanti siano zero allora è sufficiente togliere questa riga dal codice:
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
che quindi diventa:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
If (TotBar - CurrentBar >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
iMyPos = TotBar - CurrentBar
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
mc = dTot / Period
endif
Return mc
Endfunction
Ricordati, in fase di aggiunta della media al grafico dei prezzi di settare la sua proprietà "Usa Min-Max Grafico" uguale a "SI".
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 01 December 2012 : 16:40:26
|
Dovresti spiegare bene però come la vuoi calcolata la "Velocità Centrata". Secondo me si calcola facendo la sottrazione tra due medie mobili centrate, corretto? Per esempio, se ho una media mobile centrata a 60 periodi e una a 30 allora la velocità sarà:
VC = MMC_60 - MMC_30
Giusto? |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 01 December 2012 : 17:08:37
|
Si esato, ti metterei il listato di metastock:
ciclo128:=Fml("MY MEDIA CENTRATA 64")-Fml("MY MEDIA CENTRATA 128");
VEL:=CICLO128-Ref(CICLO128,-1); fwPds:=32; proj:=2; pds:=1;
ma:=Mov(VEL,pds,S);
{ Automatic period-centering } center:=LastValue(If(fwPds<0,Int(pds/2),fwPds));
{ Forward-referenced MovAvg } fwd:=Ref(ma,center);
{ Last valid MovAvg plot point } valid:=Cum(IsDefined(fwd)) =LastValue(Cum(IsDefined(fwd))); valid:=valid AND Alert(valid=0,2);
{ Extend last MovAvg plot to future null zone } xtend:=LastValue(fwd+PREV-PREV);
{ Restrict invalid initial MovAvg plot } movAvg:=Ref(Ref(xtend,pds-1),-pds+1);
{ Last MA known direction & future projection } init:=Cum(IsDefined(movAvg))=1; direction:=movAvg+ If(IsUndefined(fwd), ValueWhen(1,init OR valid,movAvg)- ValueWhen(1,init OR valid,Ref(movAvg,-1)),0) *BarsSince(init OR valid); { Choose Centered MovAvg type } GRAFICO:=If(proj=1,direction,movAvg); Mov(GRAFICO,64,S);
Ho notato un errore sulla MMSC dati finali uguali a zero (o meglio media nella parte finale dovrebbe esere cosi, ad es: MMC 6 periodi nella parte finale 2;4;5;(fine serie dati);0;0;0 in pratica la media nell' ultima parte viene fatta (2+4+5+0+0+0)/6) non mi sembra che vada bene in quanto la meta degli ultimi periodi mi fanno quasi un angolo a 45 gradi (nel titolo che sto analizzando l' angolo mi punta verso il basso) mentre la MMC dovrebbe essere simile a quella con la chiusura ripetuta.
quote: Originally posted by SupportoTecnico
Dovresti spiegare bene però come la vuoi calcolata la "Velocità Centrata". Secondo me si calcola facendo la sottrazione tra due medie mobili centrate, corretto? Per esempio, se ho una media mobile centrata a 60 periodi e una a 30 allora la velocità sarà:
VC = MMC_60 - MMC_30
Giusto?
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 01 December 2012 : 19:12:20
|
Allora in caso di valori finali a zero non puoi dividere per 6.. Altrimenti è ovvia una caduta veloce della media. |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 01 December 2012 : 19:52:21
|
Era un po' di tempo che non riguardavo l' algoritmo, hai perfettamente ragione, se si divide per 6 c' è per forza la caduta della media, l' ultima parte deve essere divisa in relazione alla rimanente parte numerica, nel senso che se ho una media centrata di 6 periodi nell' ultima parte dei dati questi devono esere divisi per 6 poi quando si va oltre l' ultimo valore finale si divide per cinque, poi quando si va oltre l' ultimo valore di due unita si divide per 4 e infine per 3,,,, cosi dovrebbe essere più chiaro..
Per quanto riguarda la velocità centrata è data da:
Media mobile centrata corta - Media mobile centrata lunga
il risultato di questa operazione da L' Indicatore Ciclo, a questo punto la velocità è data dalla diferenza fra il secondo valore dell' indicatore ciclo e il primo. ad es. se la serie dell' indicatore ciclo è 5,4,6,8,3,2,4,9,7 ecc, la sua velocita è data da il secondo valore-il primo 4-5 e poi a seguire. La risultate velocità darebbe già delle buone indicazioni, ma migliori se la si ammorbidisce con un ulteriore Media mobile centrata pari alla Media mobile centrata piu corta dell' indicatore ciclo ad es.:
- Media mobile centrata corta 32 periodi - Media mobile centrata lunga 64 periodi = indicatore ciclo;
- secondo valore dell' indicatore ciclo - primo valore dell' indicatore ciclo (su tutta la serie fino all' ultimo valore)= Velocita Centrata;
- Velocita centrata che va smussata "smoothing" con la media mobile centrata più corta dell' indicatore ciclo, in questo caso la 32 periodi.
Intanto andrebbe benissimo il codice della velocità centrata con i dati ripetuti alla fine "che trallaltro sarebbe quella originale",,,,, anche se l' altra secondo me da segnali migliori, quando inizio a imparare un po' il linguaggio di programmazione me la costruisco da me, prendendo come spunto il codice dell' altra.
spero di essere stato chiaro e grazie per la disponibilità.
quote: Originally posted by SupportoTecnico
Allora in caso di valori finali a zero non puoi dividere per 6.. Altrimenti è ovvia una caduta veloce della media.
|
Edited by - Frenk on 02 December 2012 12:56:44 |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 02 December 2012 : 13:26:10
|
Allora vediamo di postare un po' di codice.
[Media Mobile Centrata]:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
If (iMyPos >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (HalfPeriod + iMyPos)
else
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
mc = dTot / Period
Endif
endif
Return mc
Endfunction
Usando la proprietà UsaZeroFinale puoi decidere se riempire i dati con l'ultimo close o con zero.
[Velocità Centrata]:
Dim dMemCicloPrecedente as Numeric = 0
Property Periodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property Periodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mmc_corta As Numeric
Dim mmc_lunga As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
If (iMyPos >= MezzoPeriodo_MMC_CORTA) then
mmc_corta = Moveav(Close, Periodo_MMC_CORTA, "S", 0, - MezzoPeriodo_MMC_CORTA)
else
dTot = Sum(Close, MezzoPeriodo_MMC_CORTA)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mmc_corta = dTot / (MezzoPeriodo_MMC_CORTA + iMyPos)
else
dTot = dTot + Close(iMyPos) * (MezzoPeriodo_MMC_CORTA - iMyPos)
mmc_corta = dTot / Periodo_MMC_CORTA
Endif
endif
If (iMyPos >= MezzoPeriodo_MMC_LUNGA) then
mmc_lunga = Moveav(Close, Periodo_MMC_LUNGA, "S", 0, - MezzoPeriodo_MMC_LUNGA)
else
dTot = Sum(Close, MezzoPeriodo_MMC_LUNGA)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mmc_lunga = dTot / (MezzoPeriodo_MMC_LUNGA + iMyPos)
else
dTot = dTot + Close(iMyPos) * (MezzoPeriodo_MMC_LUNGA - iMyPos)
mmc_lunga = dTot / Periodo_MMC_LUNGA
Endif
endif
dResult = ((mmc_corta - mmc_lunga) - dMemCicloPrecedente)
dMemCicloPrecedente = mmc_corta - mmc_lunga
Return dResult
Endfunction
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 02 December 2012 : 23:18:19
|
Stai facendo un ottimo lavoro e ti ringrazio, integrare le due versione delle MMC è ottimale,,, la velocità va bene ma manca dello smussamento pari a un' altra MMC, in pratica in tutto sono tre:
Velocita= (MMC Corta 16-32 periodi) - (MMC Lunga 32-64);
Velocita smussata = MMC Corta ((MMC Corta 16-32 periodi) - (MMC Lunga 32-64),16-32)
La velocità smussata te lo scritta cosi "diciamo come codice fatto in casa", ma è solo per farti capire che manca della smussatura che deve essere relativa a una MMC corta, in questo caso della 16-32 "ma puoi mettere la possibilità di poter inserire i periodi come hai fatto con le altre due MMC".
fatto questo il codice è completo
quote: Originally posted by SupportoTecnico
Allora vediamo di postare un po' di codice.
[Media Mobile Centrata]:
Property Period as Numeric
Default (0)
EndProperty
Property HalfPeriod as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
If (iMyPos >= HalfPeriod) then
mc = Moveav(Close, Period, "S", 0, - HalfPeriod)
else
dTot = Sum(Close, HalfPeriod)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (HalfPeriod + iMyPos)
else
dTot = dTot + Close(iMyPos) * (HalfPeriod - iMyPos)
mc = dTot / Period
Endif
endif
Return mc
Endfunction
Usando la proprietà UsaZeroFinale puoi decidere se riempire i dati con l'ultimo close o con zero.
[Velocità Centrata]:
Dim dMemCicloPrecedente as Numeric = 0
Property Periodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property Periodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mmc_corta As Numeric
Dim mmc_lunga As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
If (iMyPos >= MezzoPeriodo_MMC_CORTA) then
mmc_corta = Moveav(Close, Periodo_MMC_CORTA, "S", 0, - MezzoPeriodo_MMC_CORTA)
else
dTot = Sum(Close, MezzoPeriodo_MMC_CORTA)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mmc_corta = dTot / (MezzoPeriodo_MMC_CORTA + iMyPos)
else
dTot = dTot + Close(iMyPos) * (MezzoPeriodo_MMC_CORTA - iMyPos)
mmc_corta = dTot / Periodo_MMC_CORTA
Endif
endif
If (iMyPos >= MezzoPeriodo_MMC_LUNGA) then
mmc_lunga = Moveav(Close, Periodo_MMC_LUNGA, "S", 0, - MezzoPeriodo_MMC_LUNGA)
else
dTot = Sum(Close, MezzoPeriodo_MMC_LUNGA)
For i = 1 to iMyPos
dTot = dTot + Close(i)
next i
if (UsaZeroFinale = 1) then
mmc_lunga = dTot / (MezzoPeriodo_MMC_LUNGA + iMyPos)
else
dTot = dTot + Close(iMyPos) * (MezzoPeriodo_MMC_LUNGA - iMyPos)
mmc_lunga = dTot / Periodo_MMC_LUNGA
Endif
endif
dResult = ((mmc_corta - mmc_lunga) - dMemCicloPrecedente)
dMemCicloPrecedente = mmc_corta - mmc_lunga
Return dResult
Endfunction
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 03 December 2012 : 14:09:11
|
Per la velocità smussata bisogna creare un altro indicatore che utilizzi la velocità centrata come fonte dati. Quindi, prima di tutto crea l'indicatore della velocità centrata e chiamalo "VelocitaCentrata".
Successivamente crea un altro indicatore con il codice qui sotto riportato.
[Velocita Smussata]:
Property Periodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property Periodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property Periodo_SMOOTING as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_SMOOTING as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
if (UsaZeroFinale = 1) then
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
else
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
endif
Return mc
Endfunction
|
|
|
Topic |
|
|
|