Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
 All Forums
 Problemi con "Insider 3000 versione 3"
 Problemi col linguaggio di programmazione
 regola chiusura posizioni

Note: You must be registered in order to post a reply.

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert Email Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

   
   

T O P I C    R E V I E W
scarlet Posted - 08 March 2004 : 10:45:36
buongiorno,
innanzitutto i miei complimenti per questo sw in italiano, ottima idea e ottimo sw.
vorrei creare una regola per la chiusura delle posizioni sia long che short da poter adattare a qualsiasi sistema.
Nelle posizioni long lo stop dovrebbe entrare a Xpunti sotto il il prezzo di entrata, oppure se la posizione va in guadagno di almeno Ypunti, lo stop va messo in pari e per ogni punto ulteriore di guadagno lo stop si alza di 1 punto senza mai tornare indietro.
Il contrario avverra' per la chiusura di posizioni short.
X e Y dovrebbero essere dei valori variabili per poter permettere una ottimizzazione in fase di test.
Spero di essere stato chiaro e che possiate aiutarmi.
Grazie
scarlet


9   L A T E S T    R E P L I E S    (Newest First)
SupportoTecnico Posted - 14 March 2004 : 00:16:07
Il sistema va in stop perch? il codice scritto gli dice di farlo.
Le righe incriminate sono queste:

If ((High > pEntryPrice) And (Low <= gStopLong)) Then
bRes = True
EndIf

Cerchiamo quindi di riscrivere le funzioni:


Entra in Acquisto:

function main()
pEntryPrice = close
pStopLong = -1
Return (Value(Momentum(opt_mom), - 1) <= 99.999) And (Momentum(opt_mom) >= 100)
endfunction


Esci da posizioni in Acquisto:

Function Main()
Dim bRes as Boolean
Dim dOffset as Numeric

If (pStopLong <= 0) Then
pStopLong = pEntryPrice
EndIf
If (High >= (pEntryPrice + OptY)) then
dOffset = High - (pEntryPrice + OptY)
If (dOffset < 0) then
dOffset = 0
EndIf
pStopLong = pEntryPrice + OptY + dOffset
EndIf

bRes = False
If (Low <= (pEntryPrice - OptX)) then
bRes = True
Else
If (Low <= pStopLong) Then
bRes = True
EndIf
EndIf

Return bRes

EndFunction



scarlet Posted - 13 March 2004 : 22:01:26
Admin ha scritto:
1) Il sistema non permette di entrare e uscire nella stessa barra, quindi se una barra genera un segnale di acquisto non pu? generare anche un segnale di uscita.


questo e' evidente, cio' che intendevo dire e' che il sistema mi fa' uscire sulla barra successiva a quella di entrata anche se non dovrebbe intervenire perche' il mercato va' dalla mia parte quindi non entra alcuno stop. E questo accade anche se regolo lo stop a 10 punti, cioe' alto per quel time frame . Purtroppo non si possono allegare immagini, sarebbe molto comodo poterlo fare e mi sembra che anche qualcun'altro la pensi come me.


Return (Value(Momentum(40), -1) <= 99.999) And (Momentum(40) >= 100)

con questa formula il segnale di entrata e' perfetto ( chissa' se si poteva fare anche con crossabove?), anche in questo caso pero' se in uscita metto il trailing stop di cui abbiamo parlato tanto le posizioni vengono chiuse troppo presto, i valori nel modulo opzioni non vengono rispettati.
grazie ancora Admin




SupportoTecnico Posted - 13 March 2004 : 20:57:10
Bisogna fare alcune considerazioni:

1) Il sistema non permette di entrare e uscire nella stessa barra, quindi se una barra genera un segnale di acquisto non pu? generare anche un segnale di uscita.

2) Il prezzo di ingresso e uscita dalle varie posizioni ? di default quello specificato nella tabella delle "Opzioni" nella finestra di "Gestione trading systems". Per definire un prezzo personalizzato, come nel tuo caso per l'uscita da posizioni in acquisto, devi usare la parola chiave "Price" seguita da un'espressione che sar? poi il prezzo di esecuzione dell'operazione (come ? stato usato nel modulo di Entra in acquisto).


Per l'altra domanda riguardante il momentum:

Return (Value(Momentum(40), -1) <= 99.999) And (Momentum(40) >= 100)



scarlet Posted - 13 March 2004 : 18:09:21
ho modificato il TS breakout ( considerando solo le posizione long) come segue:

IN OPZIONI COMUNI:

' supponiamo che per ora non voglia ottimizzare questi parametri
Option OptMax(18, 18, 1)
Option OptMin(18, 18, 1)

'ho tolto dal vecchio codice le due righe qui sotto
'Dim pdStopLossLong As Numeric
'Dim pdStopLossShort As Numeric

'ho aggiunto
Dim pEntryPrice As Numeric
Dim pStopLong As Numeric
Option OptX(3, 10, 1)
Option OptY(3, 10, 1)

IN ENTRA IN ACQUISTO:

Function Main()
'ho aggiunto la riga qui sotto
pEntryPrice = Close

Dim bResult As Boolean
Dim i As Numeric
Dim dTmpMax As Numeric

bResult = (Close = Max(Close, OptMax))

If (bResult = True) then
dTmpMax = Close( - 1)
For i = 2 to OptMax
If (dTmpMax < Close( - i)) Then
dTmpMax = Close( - i)
EndIf
Next i
'Ho eliminato la riga qui sotto
'pdStopLossLong = dTmpMax
EndIf

Price high
Return bResult
EndFunction

IN CHIUDI POSIZIONI IN ACQUISTO:

Function Main()
Dim bRes as Boolean

If (High > (pEntryPrice + OptY)) then
pStopLong = pEntryPrice + OptY
Else
pStopLong = pEntryPrice
EndIf

bRes = False
If (Low <= (pEntryPrice - OptX)) then
bRes = True
Else
If ((High > pEntryPrice) And (Low <= pStopLong)) Then
bRes = True
EndIf
EndIf

Return bRes

EndFunction

-----------------------------------------------------------

Il TS non da errore, ed e' gia' qualcosa, ma mi fa' uscire quasi sempre sulla barra successiva all'entrata non rispettando la regola del trailing stop che avevo specificato, anche mettendo valori elevati in X e Y. (10)
Il test e' sul dax future a 1 minuto.
Pure la regola di ingresso non viene rispettata come nel TS originale, anche non eliminando la riga "pdStopLossLong = dTmpMax" e le relative variabili nel modulo opzioni comuni.
Potreste controllare, per cortesia, dov'e' l'errore?
Io non ci arrivo.....

Avrei anche un'altra domanda
:-((
ho questa istruzione:
return momentum(40) > 100
che entra in acquisto quando il momentum supera 100 di valore.
vorrei modificarla in modo che entri in acquisto solo quando passa da 99.999 a 100 .
ho provato cosi':
return Momentum (40) Crossabove(99.999, 100)
ma non e' corretto

grazie ancora






SupportoTecnico Posted - 09 March 2004 : 15:03:18
La riga:

pEntryPrice = Close

cos? come ? scritta puoi posizionarla in qualsiasi punto all'interno della funzione Main. Ci? che ? importante ? che sia posizionata prima della parola chiave "Return".

Per non sbagliare mettila pure come prima riga:

Function Main()
pEntryPrice = Close

'scrivi il resto della funzione...

EndFunction




scarlet Posted - 09 March 2004 : 14:41:45
Grazie Admin,
provero' a vedere se riesco a ottenere qualcosa di buono, una cosa pero' che proprio non capisco e' in quale punto del modulo di acquisto bisogna inserire cio' che scrive qui:

"Nel modulo "Entra in acquisto" dovrai settare la variabile con il prezzo di ingresso (ovviamente in questo esempio viene omesso il codice che genera il segnale di ingresso):
Function Main()
pEntryPrice = Close
EndFunction

Se fosse cosi' gentile da modificarmelo lei........
grazie molte




SupportoTecnico Posted - 09 March 2004 : 11:58:45
Nel modulo Opzioni comuni puoi aggiungere un numero infinito di variabili. Ovviamente metterai solo quelle che dovranno essere viste da tutti i moduli e quindi anche pStopShort se ? questa la tua intenzione.

Attento che nel nostro codice di esempio c'? un errore:

il nome della variabile dichiarata in opzioni comuni ?
pStopLong e ne l modulo invece ? usata gStopLong.
Quindi correggi in opzioni comuni in questo modo:

Dim gStopLong As Numeric

N.B. Se non lo stai ancora usando ti consiglio di usare l'Editor del linguaggio con tutte le sue funzionalit? di debug.

Inoltre devi pensare al linguaggio di Insider 3000 un po' come al Visual basic. La filosofia ? la stessa.








scarlet Posted - 08 March 2004 : 23:22:41
Buondi',
prendiamo in considerazione il TS Breakout, questo e' il codice del modulo entra in acquisto:

Function Main()
Dim bResult As Boolean
Dim i As Numeric
Dim dTmpMax As Numeric

bResult = (Close = Max(Close, OptMax))

If (bResult = True) then
dTmpMax = Close( - 1)
For i = 2 to OptMax
If (dTmpMax < Close( - i)) Then
dTmpMax = Close( - i)
EndIf
Next i
pdStopLossLong = dTmpMax
EndIf

Price high
Return bResult
EndFunction

ho provato a inserire l'istruzione

pEntryPrice = Close

in vari punti ma mi restituisce errore nel modulo di chiusura posizioni acquisto.

questo e' il modulo opzioni comuni:

Option OptMax(10, 20, 1)
Option OptMin(10, 20, 1)
Dim pdStopLossLong As Numeric
Dim pdStopLossShort As Numeric

al quale ho aggiunto

Dim pEntryPrice As Numeric
Dim pStopLong As Numeric
Option OptX(1, 1000, 5)
Option OptY(1, 1000, 5)

immagino bisognera' togliere le vechie istruzioni

Dim pdStopLossLong As Numeric
Dim pdStopLossShort As Numeric

perche' riguardano la vecchia regola di uscita, ma sono presenti anche nel codice di acquisto, quindi non so proprio come fare.
e poi non vorrei dire un'eresia, ma sempre nel modulo opzioni comuni non bisogna aggiungere anche

Dim pStopShort As Numeric

per la chiusura delle posizioni short?
Vi sarei grato per un' ulteriore aiuto
grazie
scarlet



SupportoTecnico Posted - 08 March 2004 : 18:58:32
La cosa non ? molto complicata.
Per farla devi usare le variabili globali che possono cio? essere viste da qualsiasi modulo.
Prova a vedere il Trading System che si chiama BreakOut_Min_Max
che trovi come esempio nella finestra di "Gestione Trading Systems"

Una variabile globale va dichiarata nel modulo Opzioni Comuni:

Dim pEntryPrice As Numeric
Dim pStopLong As Numeric
Option OptX(1, 1000, 5)
Option OptY(1, 1000, 5)



Nel modulo "Entra in acquisto" dovrai settare la variabile con il prezzo di ingresso (ovviamente in questo esempio viene omesso il codice che genera il segnale di ingresso):

Function Main()
pEntryPrice = Close
EndFunction



Nel Modulo "Esci da posizioni in acquisto" potresti scrivere una cosa di questo genere:

Function Main()
Dim bRes as Boolean

If (High > (pEntryPrice + OptY)) then
gStopLong = pEntryPrice + OptY
Else
gStopLong = pEntryPrice
EndIf

bRes = False
If (Low <= (pEntryPrice - OptX)) then
bRes = True
Else
If ((High > pEntryPrice) And (Low <= gStopLong)) Then
bRes = True
EndIf
EndIf

Return bRes

EndFunction



Questo ? ovviamente solo uno spunto da completare e testare, ma sufficiente per farti capire come cominciare ad scrivere la cosa.


Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07