T O P I C R E V I E W |
Pingu |
Posted - 12 April 2005 : 10:07:55 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 |
3 L A T E S T R E P L I E S (Newest First) |
SupportoTecnico |
Posted - 12 April 2005 : 15:49:59 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
|
Pingu |
Posted - 12 April 2005 : 14:53:27 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 |
SupportoTecnico |
Posted - 12 April 2005 : 13:30:05 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.
|
|
|