Author |
Topic  |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 05 October 2003 : 17:05:34
|
Salve a tutti e complimenti per la versione final. Ho un problema con la finestra trova: disponendo di una serie storica intraday a 5 min., desidero che vengano evidenziate le barre della prima ora di contrattazione. Ho provato col ciclo For...Next, ma senza risultati. Che sia un problma riguardante le opzioni di compressione dati?
Grazie per l'aiuto
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 06 October 2003 : 10:41:36
|
Prova con una cosa del genere:
(Time >= 900) And (Time <= 1000)
Modificando a tuo piacimento le ore.
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 06 October 2003 : 16:18:42
|
Avevo gi? provato ,ma non funziona. Ho poi provato con "time(0) to time(87)" e va bene; ma allora qual'? l'esatta sintassi della funzione "Time" e "Date"?
|
 |
|
fabrivero
Nuovo Utente
38 Posts |
Posted - 06 October 2003 : 17:25:14
|
dovrebbe bastare questo (per il fib):
hour = 9 or (hour = 10 and minute < 11)
In pratica prende tutte le candele delle 9 (ossia da 9:01 a 9:59) pi? le prime delle ore 10. variando minute puoi prendere 1 ora fino a 2 ore
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 06 October 2003 : 18:02:42
|
Non utilizzare cicli For o altro. Usa la compilazione a linea singola. E scrivi:
(Time >= 900000) And (Time <= 1000000)
oppure ci? che ti ha suggerito Fabrivero.
Scusami => mi ero dimenticato qualche zero. Infatti il Time ? espresso in questo modo => hhmmttt
dove hh => ? l'ora; mm => minuti; e ttt numero del tick
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 07 October 2003 : 17:11:27
|
Ora ? tutto ok. Grazie
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 08 October 2003 : 15:12:50
|
Da un'analisi pi? attenta mi sono accorto che il massimo ed il minimo della prima ora di cotrattazione di una giorata vengono memorizzati e ripetuti per quella seguente (es. max del 5/5/2003 dalle ore 9:05 alle 10:10 uguale a 8.77; se il giorno dopo il max, sempre per quell'orario ? 8.50, il programma restituisce il valore di 8.77). Vorrei scrivere un codice che mi permetta di identificare per ciascun giorno il max ed il min della prima ora di contrattazione per poter anlizzare quante barre sono comprese tra questi due valori. Potreste aiutarmi?
Grazie
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 08 October 2003 : 16:34:24
|
Prova questo: (la complilazione ? "Trova (Linee Multiple)")
dim pdMyMax as Numeric = 0 dim pdMyMin as Numeric = 0 dim plMemDate as Numeric = 0
function Main() dim i as Numeric if ((time >= 900000) and (time <= 1000000)) then if (date <> plMemDate) then pdMyMax = high(1) pdMyMin = low(1) for i = 2 to Totbar - 1 if (pdMyMax < high(i)) then pdMyMax = high(i) endif if (pdMyMin > low(i)) then pdMyMin = low(i) endif next i endif plMemDate = date return (high <= pdMyMax) and (low >= pdMyMin) else return false endif endfunction
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 08 October 2003 : 17:50:51
|
Non funziona: restituisce "false" per qualsiasi valore dopo le 10:00, anche se la barra ? contenuta nel range definito.
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 08 October 2003 : 23:27:05
|
Forse avevo inteso male. allora tu vuoi calcolare il massimo e il minimo della prima ora del giorno e poi vedere evidenziate tutte le candele che sono comprese in questo range durante tutto l'arco della giornata. Prova questo codice (prendilo come traccia e modificalo secondo le tue esigenze... non ? stato testato):
dim pdMyMax as Numeric = 0 dim pdMyMin as Numeric = 0 dim plMemDate as Numeric = 0
function Main() dim i as Numeric dim lIndex as Numeric = - 1
if (date <> plMemDate) then for i = 0 to Totbar - 1 if ((time >= 900000) and (time <= 1000000)) then pdMyMax = high(i) pdMyMin = low(i) lIndex = i Goto Prosegui1 endif next i Prosegui1: if (lIndex > - 1) then for i = lIndex to Totbar - 1 if ((time >= 900000) and (time <= 1000000)) then if (pdMyMax < high(i)) then pdMyMax = high(i) endif if (pdMyMin > low(i)) then pdMyMin = low(i) endif endif next i endif plMemDate = date endif return (high <= pdMyMax) and (low >= pdMyMin)
endfunction
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 09 October 2003 : 18:37:47
|
L' ho modificato un p?, ma ora v? tutto bene. Grazie
|
 |
|
Alessio
Nuovo Utente
23 Posts |
Posted - 26 October 2003 : 18:20:12
|
Salve a tutti, dopo aver modificato il listato, vorrei che oltre ad idicarmi il max ed il min della prima ora, mi indicasse anche il max ed il min della giorata e mi restituisse il numero delle barre la cui chiusura ?, per esempio, superiore al max della prima ora ( indicato con maxib) ed inferiore o uguale al max della giornata (indicato con maxd). Io ho provato a scrivere la seguente, ma non funziona
dim MaxIB as Numeric = 0 dim MinIB as Numeric = 0 dim MaxD as Numeric = 0 dim MinD as Numeric = 0 dim plMemDate as Numeric = 0 dim count as Numeric
function Main() dim i as Numeric dim lIndex as Numeric = - 1 if (date <> plMemDate) then For i = 0 to hour(10) if ((time >= 900000) and (time <= 1030000)) then MaxIB = close(i) MinIB = close(i) lIndex = i Goto Prosegui1 endif next i
Prosegui1: if (lIndex > - 1) then for i = lIndex to hour(10) if ((time >= 900000) and (time <= 1030000)) then if (MaxIB < close(i)) then MaxIB = close(i) endif if (MinIB > close(i)) then MinIB = close(i) endif endif next i plmemdate = date endif endif
dim j as Numeric dim dindex as Numeric = - 1 If (date = plmemdate) then For j = 0 to hour(17) If (time > (1030000) and time < (1730000)) then MaxD = close(j) MinD = close(j) dindex = j Goto Prosegui2 endif next j
Prosegui2: if (dindex > - 1) then for j = dIndex to hour(17) if (time > (1030000) and time < (1730000)) then if (MaxD < close(j)) then MaxD = close(j) endif if (MinD > close(i)) then MinD = close(j) endif endif next j plmemdate = date endif endif
postreste aiutarmi?
Grazie
|
 |
|
|
Topic  |
|