Author |
Topic |
|
piter
Nuovo Utente
40 Posts |
Posted - 10 May 2006 : 08:06:14
|
Salve, avrei questo tipo di problematica, avrei bisogno su un time frame inferiore al daily (per esempio 5 minuti) di calcolare dei pivot point relativi ai max e min e close di ieri, come posso fare, nel senso come gli dico trovami il minimo e il max e l'ultima chiusura delle barre relative al giorno di ieri su un time frame a 5 min. Poi per un calcolo più preciso invece potrei dirgli vai a prendermi il max, il min e la chiusura di ieri su un archivio dello stesso titolo ma che ha time frame daily e poi questi valori me li fai calcolare sul mio grafico con time frame a 5 min, magari tracciandomi anche sul grafico delle linee che identifichino questi livelli. Saluti e grazie
piter |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 10 May 2006 : 12:37:28
|
Purtroppo non puoi sfruttare la funzione standard che calcola i Pivot in quanto questa li calcola solo sull'ultima barra.
Quindi devi procedere manualmente:
1) Ricavare i valori di massimo, minimo e chiusura del giorno precedente utilizzando le funzioni MaxEx e MinEx. Il calcolo verrà fatto solo quando serve e cioè al cambio di data.
2) calcolare manualmente i pivot con le formule originali.
Quindi io scriverei una cosa del genere:
if (Date < Date(+1)) Then dMyMax = MaxEx(High, "D") dMyMin = MinEx(Low, "D") dMyClose = Close a questo punto calcolare i pivot con i valori ottenuti .... .... Endif
Se non te le ricordi queste sono le fornmule base dei pivot:
R3 = P - S2 + R2 R2 = P - S1 + R1 R1 = 2 * P - Low P = (Close + High + Low) / 3 S1 = 2 * P - High S2 = P - (R1 - S1) S3 = P - (R2 - S2)
|
|
|
piter
Nuovo Utente
40 Posts |
Posted - 10 May 2006 : 16:24:33
|
ok, perfetto su un grafico intraday con maxex e minex ottengo i max e i min di un periodo (giorno "D") e la chiusura grazie alla funzione if sarà uguale alla chiusura dell'ultima barra intraday di quel giorno. Ma se avessi a disposizione uno storico daily (più preciso sicuramente per max,min e close)e uno storico intraday su cui testare i pivot come gli dico di calcolarli prendendo il max,min,close di ieri sul grafico daily?
Grazie (bel giochetto quello dell'if per associare alla variabile la chiusura)
piter |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 10 May 2006 : 17:40:35
|
Nel caso tu volessi accedere allo storico daily mentre sei sullo storico intraday allora potresti usare il metodo della connessione ad un database esterno. Questo lo puoi fare utilizzando la parola chiave "database" e la funzione "dbexp".
Per saperne di più prova a leggere questa pagina:
http://www.insider3000.com/insider/it/hol/default.asp?titleid=01100&argid=02255
N.B. Non utilizzare la funzione "dbvalue" perchè è obsoleta. Utilizza sempre "dbexp"
|
|
|
leslie
Utente Junior
74 Posts |
Posted - 02 November 2007 : 14:08:19
|
Ciao, ho provato costruire i pivot come riportato nel topic ma non mi compare niente. Forse ho compreso male e non si può fare, ma mi sembra di capire che se scarico i dati in real time e li visualizzo con compressione 5 minuti, con questa formula dei pivot oggi i valori che vedo dovrebbero essere quelli calcolati sul giorno precedente, ovvero sul massimo,minimo e chiusura di ieri. Pur visualizzando il grafico con compressione 5 minuti. Giusto? Invece non mi calcola niente. Queste sono le formule che ho usato Pivot: Function main() Dim dMyMax As Numeric Dim dMyMin As Numeric Dim dMyClose As Numeric if (Date < Date ( + 1)) Then dMyMax = MaxEx(High, "D") dMyMin = MinEx(Low, "D") dMyClose = Close Return ((dMyMax + dMyMin + dMyClose) / 3) endif endfunction
Resistenza: Function main() Dim dMyMax As Numeric Dim dMyMin As Numeric Dim dMyClose As Numeric Dim P As Numeric if (Date < Date ( + 1)) Then dMyMax = MaxEx(High, "D") dMyMin = MinEx(Low, "D") dMyClose = Close P = ((dMyMax + dMyMin + dMyClose) / 3) Return (2 * P - dMyMin) endif endfunction
Supporto 1: Function main() Dim dMyMax As Numeric Dim dMyMin As Numeric Dim dMyClose As Numeric Dim P As Numeric if (Date < Date ( + 1)) Then dMyMax = MaxEx(High, "D") dMyMin = MinEx(Low, "D") dMyClose = Close P = ((dMyMax + dMyMin + dMyClose) / 3) Return (2 * P - dMyMax) endif endfunction
Dove sbaglio? Ciao e grazie come sempre |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 02 November 2007 : 17:24:09
|
Direi che il codice che hai scritto non è corretto. Infatti, sopra era indicata una via da seguire, ma da completare.
Il codice corretto per il pivot è questo:
Function main() Dim dMyMax As Numeric Dim dMyMin As Numeric Dim dMyClose As Numeric Dim i as Numeric
For i = 1 to TotBar - 1 if (Date ( - i) < Date) then dMyMax = MaxEx(High, "D", Date ( - i)) dMyMin = MinEx(Low, "D", Date ( - i)) dMyClose = Close Return ((dMyMax + dMyMin + dMyClose) / 3) endif Next i
endfunction
Ma ci potevi arrivare benissimo da solo! dai su! |
|
|
|
Topic |
|