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
 Ritracciamento
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Pingu
Nuovo Utente

29 Posts

Posted - 22 May 2007 :  10:06:48  Show Profile  Reply with Quote
Il codice seguente è un semplice TS che fa entrare quando la chiusura è la più alta di tot periodi (Opt1) e fa uscire quando la chiusura è la più bassa di tot periodi (Opt2) oppure se scatta uno stop loss del 3%.

Option Opt1(3, 30, 1)
Option Opt2(3, 30, 1)
Dim StopLoss As Numeric = 0

Function main()
Dim Signal As Boolean

StopLoss = 0
Signal = Close >= Max(Close, Opt1)
If (Signal = True) Then
StopLoss = Close - Close * 0.03
EndIf

Return Signal
Endfunction

Function main()
Return (Close <= Min(Close, Opt2)) Or (Close <= StopLoss)
Endfunction

Quello che vorrei fare è modificarlo in modo che l'entrata si abbia solo su un ritracciamento del prezzo successivo alla chiusura più alta (ad es. entrata al prezzo corrispondente alla metà della barra che ha la chiusura più alta). Ho provato in vari modi, fra cui con la seguente modifica, ma ottengo sempre errori di vario genere...mi potete aiutare?

Option Opt1(3, 30, 1)
Option Opt2(3, 30, 1)
Dim StopLoss As Numeric = 0

Function main()
Dim Signal As Boolean
Dim Signal2 As Boolean

StopLoss = 0
Signal = Close >= Max(Close, Opt1)
If (Signal = True) Then
StopLoss = Close - Close * 0.03
Signal2 = Low-((High-Low)/2)
If (Signal2 = True) Then
Price = Low-((High-Low)/2)
EndIf
EndIf

Return Signal2
Endfunction

Function main()
Return (Close <= Min(Close, Opt2)) Or (Close <= StopLoss)
Endfunction

Grazie e buona giornata.

SupportoTecnico
Forum Admin

1261 Posts

Posted - 22 May 2007 :  11:33:37  Show Profile  Reply with Quote
Ci sono un paio di errori gravi.

1) Signal2 = Low-((High-Low)/2)
Questa riga non significa nulla. Infatti eguagliare un'espressione come questa ad una variabile booleana non ha nessun senso.

2) Price = Low-((High-Low)/2)
L'uguale non va messo.

Detto questo la logica dell'intera funzione è comunque completamente sbagliata.


Il segnale di ingresso deve avvenire in due tempi:


Option Opt1(3, 30, 1)
Option Opt2(3, 30, 1)
Dim StopLoss As Numeric = 0
Dim pbSignal1 as boolean
Dim pdRet as numeric



Function main()

StopLoss = 0
if pbSignal1 = True then
if Low <= pdRet then
Price pdRet
StopLoss = pdRet - pdRet * 0.03
Return True
endif
else
pbSignal1 = Close >= Max(Close, Opt1)
if pbSignal1 = True then
pdRet = Low + (High-Low)/2
endif
EndIf

Return False
Endfunction



Function main()
dim bSignal as boolean = false

bSignal = (Close <= Min(Close, Opt2)) Or (Close <= StopLoss)
If bSignal = True then
pbSignal1 = false
pdRet = 0
endif

Return bSignal
Endfunction



Con questo codice l'entrata è al prezzo da te richiesto se raggiunto in una delle barre successive alla barra del massimo


Go to Top of Page

Pingu
Nuovo Utente

29 Posts

Posted - 22 May 2007 :  11:52:49  Show Profile  Reply with Quote
Supporto tecnico eccezionale, come sempre!!!
Grazie.
Purtroppo non sono ancora entrato nel modo di pensare di I3000...grazie di nuovo anche per la celerità.
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 22 May 2007 :  13:28:24  Show Profile  Reply with Quote
Il codice così scritto non tiene però conto del fatto che se il titolo continua a salire e quindi a segnare nuovi massimi il punto di ingresso rimane sempre lo stesso.
Quindi se vuoi spostare dinamicamente il punto di ingresso ogni nuovo massimo successivo al primo devi scrivere:



Option Opt1(3, 30, 1)
Option Opt2(3, 30, 1)
Dim StopLoss As Numeric = 0
Dim pbSignal1 as boolean
Dim pdRet as numeric


Function main()
Dim bTmpNewMax as boolean = False

StopLoss = 0

bTmpNewMax = Close >= Max(Close, Opt1)
if bTmpNewMax = True then
pdRet = Low + (High-Low)/2
pbSignal1 = False
endif

if pbSignal1 = True then
if Low <= pdRet then
Price pdRet
StopLoss = pdRet - pdRet * 0.03
Return True
endif
else
if bTmpNewMax = True then
pbSignal1 = True
endif
EndIf

Return False
Endfunction


Function main()
dim bSignal as boolean = false

bSignal = (Close <= Min(Close, Opt2)) Or (Close <= StopLoss)
If bSignal = True then
pbSignal1 = false
pdRet = 0
endif

Return bSignal
Endfunction

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