Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Problemi con "Insider 3000 versione 3"
 Problemi col linguaggio di programmazione
 E' corretto?
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

alberto.tortella
Nuovo Utente

23 Posts

Posted - 22 February 2005 :  22:40:29  Show Profile  Reply with Quote
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

SupportoTecnico
Forum Admin

1261 Posts

Posted - 23 February 2005 :  14:27:18  Show Profile  Reply with Quote
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



Go to Top of Page

alberto.tortella
Nuovo Utente

23 Posts

Posted - 02 March 2005 :  22:46:43  Show Profile  Reply with Quote
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.

Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 03 March 2005 :  14:26:34  Show Profile  Reply with Quote
Si, ? corretto perch? hai una media mobile a 40 periodi.
Quindi ti servono almeno almeno 40 periodi per avere un valore di media mobile.

Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07