T O P I C R E V I E W |
alberto.tortella |
Posted - 22 February 2005 : 22:40:29 Vorrei sapere se il codice che vi riporto qui sotto ? corretto.
La logica ? semplice: entra lungo se entrambe le condizioni si verificano nell'arco di 3 sedute. Grazie.
Dim lCount as Numeric = 0 Dim bCrossActive1 As Boolean = False Dim bCrossActive2 As Boolean = False Function Main() if (bCrossActive1 = False) then If (bCrossActive2 = False) then
lCount = 0 bCrossActive1 = CrossAbove(Close, MoveAv(High, 40)) bCrossActive2 = CrossBelow(Sar, Close)
endif endif
If (bCrossActive1 = True) Then lCount = lCount + 1 if (lCount <= 3) then if (bCrossActive2 = True) Then lCount = 0 bCrossActive1 = False Return True EndIf else lCount = 0 bCrossActive1 = False Endif EndIf If (bCrossActive2 = True) Then lCount = lCount + 1 if (lCount <= 3) then if (bCrossActive1 = True) Then lCount = 0 bCrossActive2 = False Return True EndIf else lCount = 0 bCrossActive2 = False Endif EndIf
Return False EndFunction
|
3 L A T E S T R E P L I E S (Newest First) |
SupportoTecnico |
Posted - 03 March 2005 : 14:26:34 Si, ? corretto perch? hai una media mobile a 40 periodi. Quindi ti servono almeno almeno 40 periodi per avere un valore di media mobile.
|
alberto.tortella |
Posted - 02 March 2005 : 22:46:43 Mi sono accorto che con questo sistema riesco a generare i segnali solamente se metto una data di partenza abbastanza lontana, ad esempio 1 Gennaio 2005. Se invece metto come data inizio 3 giorni fa non si genera mai nessun segnale. E' normale secondo voi o c'? qualcosa che non va? Grazie.
|
SupportoTecnico |
Posted - 23 February 2005 : 14:27:18 Lo sforzo ? ammirevole. Tuttavia ci sono alcuni errori di logica per i quali il codice non si comporta proprio come desiderato.
Eccoti una soluzione alternativa:
Dim lCount as Numeric = 0 Dim bCrossActive1 As Boolean = False Dim bCrossActive2 As Boolean = False
Function Main()
lCount = lCount + 1 if (lCount <= 3) then if (bCrossActive1 = False) then bCrossActive1 = CrossAbove(Close, MoveAv(High, 40)) endif If (bCrossActive2 = False) then bCrossActive2 = CrossBelow(Sar, Close) endif if ((bCrossActive1 = True) And (bCrossActive2 = True)) then lCount = 0 bCrossActive1 = False bCrossActive2 = False Return True endif Else lCount = 0 bCrossActive1 = False bCrossActive2 = False endif Return False EndFunction
|