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

Pingu
Nuovo Utente

29 Posts

Posted - 12 April 2005 :  10:07:55  Show Profile  Reply with Quote
Il codice che non riesco a far funzionare correttamente e' il seguente:




Option Opt1(5, 40, 1)
Option Opt2(5, 40, 1)
Dim pdStopLoss As Numeric = 0
Dim pdPrezzoDiEntrata As Numeric = 0
Dim pdSLMin As Numeric = 0
Dim pdHigher As Numeric = 0

Dim TSon As Boolean
Dim bSignal As Boolean
Dim bSignalTP As Boolean

Function main()

bSignal = Close >= Max(Close, Opt1)
bSignalTP = High >= pdHigher

If (bSignal = True) Then
pdStopLoss = Close - Close * 0.03
EndIf
If (bSignal = True) Then
pdSLMin = Low - Low * 0.01
EndIf
If (bSignal = True) Then
pdPrezzoDiEntrata = Open( + 1)
EndIf
If (bSignalTP = True) Then
pdPrezzoDiEntrata = Open( + 1)
EndIf
If (bSignal = True) Then
TSon = True
EndIf

Return bSignal Or bSignalTP

Endfunction

Function main()

Dim dDiff As Numeric = 0
Dim bResult As Boolean

If (pdHigher < High) Then
If (TSon = True) Then
pdHigher = High( - 1)
Endif
Endif

dDiff = (pdHigher - pdPrezzodiEntrata)

If (dDiff >= (pdPrezzoDiEntrata * 0.05)) Then
If ((dDiff * 0.2) <= (pdHigher - Low)) Then
bResult = True
Endif
Else
If (dDiff >= (pdPrezzoDiEntrata * 0.03)) And (dDiff >= (pdPrezzoDiEntrata * 0.05)) Then
If ((dDiff * 0.3) <= (pdHigher - Low)) Then
bResult = True
Endif
Endif
Endif

Return bResult Or (Close <= Min(Close, Opt2)) Or (Close <= pdStopLoss) Or (Low <= pdSLMin)

If (Close <= Min(Close, Opt2)) Then
TSon = False
Endif

Endfunction




Vorrei impostare il trading system (operativita' solo long) in modo da avere un segnale di base che mi "accenda" (TSon = True) e "spenga" (TSon = False) il TS alla violazione del max di Opt1 chiusure (entrata) e del min di Opt2 chiusure (uscita); fin qui non ci sono problemi. I problemi giungono quando aggiungo del codice per ottimizzare il sistema. Vorrei cioe', solo quando sono gia' in fase "TSon", avere un segnale di uscita se avviene un ritracciamento del 20% dal max raggiunto dopo l'entrata (se il max raggiunto e' superiore al 5% di incremento dal prezzo di entrata) o del 30% (se il max raggiunto e' compreso fra il 3% e il 5%). Se ottengo il segnale di uscita, a questo punto vorrei pero' rientrare (sempre se rimango in fase "TSon") non piu' alla violazione del max di Opt1 chiusure, ma solo in caso di superamento del max raggiunto precedentemente.
Come stop loss ho impostato il min della barra di entrata - 1% (sia per l'entrata iniziale in fase "TSon", sia per le eventuali entrate successive al superamento dei max relativi).
Purtroppo il codice cosi' com'e' ha vari difetti, ad esempio:

- non esiste una fase "TSon" come l'ho pensata, cioe' il sistema da' un segnale di entrata all'inizio indifferentemente alla violazione del max Opt1 chiusure (bSignal) o al superamento del max relativo (bSignalTP)
- Dopo l'uscita dovuta a un ritracciamento dal max relativo, posso ottenere un segnale di entrata anche alla violazione del max Opt1 periodi (e non solo al superamento del max relativo), anche se sono ancora in "TSon", cioe' se non e' ancora stata violata la soglia del min Opt2 chiusure.
- Inoltre vorrei avere ad es. un segnale di uscita in seguito a ritracciamento non appena il prezzo raggiunge la soglia impostata, senza dover aspettare il min della barra (ma non so come impostarlo).
Piu' cerco di aggiustare il codice peggio e'! Mi potete aiutare? Grazie!



Modificato da - pingu il 12 Aprile 2005 14:59:24

SupportoTecnico
Forum Admin

1261 Posts

Posted - 12 April 2005 :  13:30:05  Show Profile  Reply with Quote
A prima vista ci sono diversi errori.

Ma prima di risponderti vorrei sapere esattamente a cosa ti serve bSignalTP.

Inoltre, volevo capire esattamente che cosa significa per te quel TSon, concettualmente parlando.
Go to Top of Page

Pingu
Nuovo Utente

29 Posts

Posted - 12 April 2005 :  14:53:27  Show Profile  Reply with Quote
Cerchero' di farlo descrivendo passo passo i vari punti del codice, con la seguente premessa:

Considerare il TS come costituito da una struttura semplice di base che mi da' un segnale di entrata iniziale e uno di uscita finale quando, rispettivamente, si raggiunge il max fra le chiusure di tot periodi (Opt1 periodi) e il min fra le chiusure di tot periodi (Opt2 periodi). Considero cosi' l'entrata iniziale nel TS come entrata in fase "TSon"; da questa fase "TSon" esco solo se si verificano le condizioni di uscita per raggiungimento del min fra le tot (Opt2) chiusure o se scatta uno stop loss (Close-Close*0.03 oppure Low-Low*0.01). All'interno di questa zona "TSon" pero', per ottimizzare il TS vorrei avere dei segnali di uscita anche se avvengono dei ritracciamenti da dei valori di max relativo, come spiegato sopra (take profit). Il punto e' che se ottengo un segnale di uscita di questo tipo, ma sono ancora in fase "TSon" (perche' non e' scattato nessuno stop loss, ne' si e' raggiunta la chiusura minima di Opt2 periodi), vorrei ottenere un nuovo segnale di entrata, ma a questo punto non per raggiungimento del max fra Opt1 chiusure, ma solo se il prezzo raggiunge di nuovo il max relativo precedente, da cui poi e' ritracciato facendomi uscire; questo nuovo segnale di entrata dovrei ottenerlo da bSignalTP.

Option Opt1(5, 40, 1)
Option Opt2(5, 40, 1)

'Definiscono le opzioni per l'entrata e l'uscita dal sistema-base (entrata e uscita dalla fase "TSon")

Dim pdStopLoss As Numeric = 0
Dim pdSLMin As Numeric = 0

'Sono i 2 stop loss

Dim pdHigher As Numeric = 0
'per calcolare il max relativo

Dim pdPrezzoDiEntrata As Numeric = 0

'per calcolare il prezzo di entrata

Dim TSon As Boolean

''per sapere quando si e' in fase "TSon"

Dim bSignal As Boolean
Dim bSignalTP As Boolean

'sono i 2 segnali di entrata

Function main()

bSignal = Close >= Max(Close, Opt1)

'cosi' si entra in fase "TSon"

bSignalTP = High >= pdHigher

'questo segnale vorrei che scattasse solo quando sono gia' all'interno della fase "TSon", se i prezzi risalgono e toccano di nuovo il max relativo da cui erano scesi facendo scattare il segnale di uscita (take profit), ma non l'uscita dalla fase "TSon"

If (bSignal = True) Then
pdStopLoss = Close - Close * 0.03
EndIf
If (bSignal = True) Then
pdSLMin = Low - Low * 0.01
EndIf
If (bSignal = True) Then
pdPrezzoDiEntrata = Open( + 1)
EndIf
If (bSignalTP = True) Then
pdPrezzoDiEntrata = Open( + 1)
EndIf
If (bSignal = True) Then
TSon = True
EndIf
Return bSignal Or bSignalTP

Endfunction

Function main()

Dim dDiff As Numeric = 0
Dim bResult As Boolean

If (pdHigher < High) Then
If (TSon = True) Then
pdHigher = High( - 1)

'cosi' facendo vorrei che pdHigher valesse High(-1) solo in fase TSon; in realta' ho notato che ottengo dei segnali di entrata da bSignalTP anche se non e' sono in fase "TSon"

Endif
Endif

..........

Se non sono stato sufficientemente chiaro, chiedetemi pure ulteriori chiarimenti: quello che vorrei ottenere io ce l'ho ben chiaro in mente (anche se forse non mi riesce spiegarlo per bene); quello che non ho per niente chiaro e' come riuscire ad ottenerlo in termini di codice!

Grazie di nuovo.



Modificato da - pingu il 12 Aprile 2005 14:59:59
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 12 April 2005 :  15:49:59  Show Profile  Reply with Quote

Prova a vedere questo codice. Dovrebbe funzionare in modo molto vicino a quello da te descritto al massimo dagli qualche giro di vite.
Come prezzo di entrata e uscita dalle operazioni ? impostata l'apertura del giorno successivo in cui avviene il segnale. In caso cambialo tu.


Option Opt1(27, 27, 1)
Option Opt2(26, 26, 1)
Dim pdStopLoss As Numeric = 0
Dim pdPrezzoDiEntrata As Numeric = 0
Dim pdSLMin As Numeric = 0
Dim pdHigher As Numeric = 0
Dim TSon As Boolean = False


Function main()
Dim bSignal As Boolean
Dim bSignalTP As Boolean

bSignal = (Close >= Max(Close, Opt1))

If (TSon = True) then
bSignalTP = (High >= pdHigher)
Endif

If (bSignal = True) Then
pdStopLoss = Close - Close * 0.03
pdSLMin = Low - Low * 0.01
pdHigher = High
TSon = True
End if


pdPrezzoDiEntrata = Open( + 1)
Price pdPrezzoDiEntrata

Return ((bSignal = True) Or (bSignalTP = True))

Endfunction




Function main()

Dim dDiff As Numeric = 0
Dim bResult As Boolean = False
Dim bCondTSon As Boolean = False


If (pdHigher < High) Then
pdHigher = High
Endif


If (TSon = True) Then
dDiff = (pdHigher - pdPrezzodiEntrata)

If (dDiff >= (pdPrezzoDiEntrata * 0.05)) Then
If ((dDiff * 0.2) <= (pdHigher - Low)) Then
bResult = True
Endif
Else
If (dDiff >= (pdPrezzoDiEntrata * 0.03)) And (dDiff <= (pdPrezzoDiEntrata * 0.05)) Then
If ((dDiff * 0.3) <= (pdHigher - Low)) Then
bResult = True
Endif
Endif
Endif
Endif


bCondTSon = (Close <= Min(Close, Opt2))
If (bCondTSon = True) Then
TSon = False
Endif


Price Open( + 1)

Return (bResult = true) Or (bCondTSon = True) or (Close <= pdStopLoss) Or (Low <= pdSLMin)

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