T O P I C R E V I E W |
luigi_amodeo |
Posted - 30 May 2006 : 10:00:36 Ti scrivo di eseguito il mio TS ..... if prima condizione then for i = opti to 0 step -1 if seconda condizione then bresult = true goto exitciclofor endif next i exitciclofor: endif ....... Premesso che esegue ciò che ho scritto, adesso vorrei fargli fare un ciclo for per verificare, questa volta nelle barre successive, un'altra condizione if per validare il segnale. Ti confesso che ho avuto delle difficoltà su dove inserire il nuovo ciclo for. Mi puoi aiutare? Grazie
|
13 L A T E S T R E P L I E S (Newest First) |
SupportoTecnico |
Posted - 05 June 2006 : 16:46:08 Entra Long
if (Date <= gdMyDate) then if (gdMyEquityDay < -xxxpunti) then Return False end if Else gdMyEquityDay = 0 EndIf
If condizione vera then bresult = true price close stoplong = low(-1)
gdMyPrice = Close gdMyDate = Date endif
return bresult
...........
chiudi Long
Dim dTmpED As Numeric
dTmpED = gdMyEquityDay + (Close - gdMyPrice) If (dTmpED < -xxxpunti) then Price Close bResult = True EndIf
if low <= stoplong - optloss then bresult = True price stoplong - optloss endif
If (bResult = True) then gdMyEquityDay = dTmpED Return True Endif
Per lo Short il codice è esattamente lo stesso tranne che per la formula:
dTmpED = gdMyEquityDay + (Close - gdMyPrice)
che va scritta
dTmpED = gdMyEquityDay + (gdMyPrice - Close)
Attenzione che il tutto funziona se quello che hai detto prima è vero.. e cioè se tutte le operazioni del TS nascono e muoiono nell'arco di una giornata.
|
luigi_amodeo |
Posted - 05 June 2006 : 16:10:53 Ti ringrazio per la consueta collaborezione, ma purtroppo non riesco ad innestare i tuoi suggerimenti nel mio TS: provo a scriverlo sinteticamente.
Entra Long ......... If condizione vera then bresult = true price close stoplong low(-1)
endif return bresult
...........
chiudi Long
........-
if low <= stoplong - optloss bresult = True price stoplong - optloss
endif .........
Per quanto ovvio è simmetrico lo short. Puoi descrivermi come introdurre correttamente il "gdMyEquityDay"?
Ti ringrazio in anticipo.
|
SupportoTecnico |
Posted - 05 June 2006 : 14:57:07 Quindi supponendo che non ci siano operazioni della durata maggiore di un giorno devi:
1) memorizzare in una variabile globale il prezzo di ingresso nell'operazione e la data di ingresso
2) utilizzare il prezzo memorizzato per creare uno stop loss in "Chiudi posizioni in acquisto"
3) utilizzare la data memorizzata per creare l'inibizione dei segnali in "entra in acquisto"
e quindi:
[Opziono Comuni]
Dim gdMyPrice as Numeric = 0 Dim gdMyDate as Numeric = 0 Dim gdMyEquityDay as Numeric = 0
[Entra in acquisto]
Function Main() if (Date <= gdMyDate) then if (gdMyEquityDay < -xxxpunti) then Return False end if Else gdMyEquityDay = 0 EndIf ............... ............... 'supponiamo che l'operazione avvenga al prezzo di chiusura 'Price serve per definire il prezzo a cui avviene l'operazione Price Close gdMyPrice = Close gdMyDate = Date Return bResult
EndFunction
[Chiudi posizioni in acquisto]
Function Main() Dim dTmpED As Numeric dTmpED = gdMyEquityDay + (Close - gdMyPrice) If (dTmpED < -xxxpunti) then Price Close bResult = True EndIf
.......... .......... If (bResult = True) then gdMyEquityDay = dTmpED Return True Endif
EndFunction
Questo codice funziona se il trading system ci sono solo operazioni long. Se ci sono anche operazioni Short devi inserire il giusto codice in [Entra in vendita] e [Chiudi posizioni in vendita] per calcolare giustamente "gdMyEquityDay"
|
luigi_amodeo |
Posted - 05 June 2006 : 14:10:18 il Ts non lascia mai operazioni aperte in quanto è operativo esclusivamente nell'intraday.
|
SupportoTecnico |
Posted - 05 June 2006 : 14:08:12 Domanda.. se hai un'operazione aperta 5 giorni prima l'uscita dal mercato avviene quando l'intera operazione ha prodotto una minusvalenza di n. punti oppure solamente se questa minus è stata prodotta nella giornata? |
luigi_amodeo |
Posted - 04 June 2006 : 22:51:17 Sì è esattamente quello che vorrei: al raggiungimento di un certo ammontare di minus nella giornata il Ts non mi deve rilascare alcun segnale operativo sino all'apertuta della nuova giornata operativa.
|
SupportoTecnico |
Posted - 04 June 2006 : 21:19:33 Insomma vuoi mettere una specie di stop loss ? cioè se raggiungi una certa perdita il TS esce dal mercato e ci rimane almeno fino al giorno dopo?
|
luigi_amodeo |
Posted - 04 June 2006 : 19:03:28 In attesa della Tua risposta ho provato ad utilizzare la funzione "Equity" ponendo una condizione del tipo: ....... if (equity() < -xxxpunti) then bresult = false ............. Il TS esegue le istruzioni sommando in continua (ovvero per tutti i periodi del grafico) il valore dell'equity mentre a me interessa che lo sommi nella singola giornata operativa, forse dovrei inserire un vincolo sulla data? e come dovrei scriverlo? Solo per curiosità Ti chiedo che significa il colore verde dell'indicatore Equity Line nella lista degli indicatori poichè ho notato che non sono riuscito ad utilizzarlo come riesco a fare con tutti gli altri indicatori all'interno di un TS. Grazie.
|
luigi_amodeo |
Posted - 01 June 2006 : 10:25:45 E' esattamente quello che mi serviva. Adesso però vorrei inserire una funzione che per ogni singola giornata tenga conto dei punti di profitto e di perdita al raggiungimento dei quali inibire il rilascio dei segnali sino alla nuova giornata operativa. Grazie per la collaborazione
|
SupportoTecnico |
Posted - 30 May 2006 : 15:49:00 Da quanto ho capito vorresti costruire il nuovo For per controllare le barre "future". Il che non mi pare una buona idea perchè il tuo TS non ti darebbe mai il segnale nel momento giusto in cui ti serve ma sempre n. periodi dopo.
Nel mio esempio invece si attivava una segnalazione al verificarsi della prima trance di condizioni e poi periodo dopo periodo controllavi la nuova condizione che vuoi aggiungere.
Comunque se questo metodo non ti va puoi fare così (però rimane sempre concettualmete scorretto controllare ora n. barre nel futuro):
if prima condizione then for i = opti to 0 step -1 if seconda condizione then bresult = true goto exitciclofor endif next i exitciclofor: endif
If bresult = true then bresult = false for i... ...... 'Qui dentro metterai opportunamente => bresult = true next i endif
|
luigi_amodeo |
Posted - 30 May 2006 : 14:17:34 Certamente ho illustrato male io il problema: posto che la prima condizione sia vera (barra corrente rispetto a barra(-1)) il TS attraverso il ciclo "for i" va a verificare la seconda condizione nelle "i" barre precedenti. Io vorrei aggiungere una ulteriore verifica nelle "n" canne successive alla prima condizione, sempre a condizione che il ciclo "i" sia favorevole, per validare in via definitiva il segnale.
|
SupportoTecnico |
Posted - 30 May 2006 : 13:37:44 Il nuovo ciclo va messo nell'Else dell'IF della prima condizione. Però se la nuova condizione si basa sulle barre successive allora devi utilizzare una variabile globale (dichiarata nel modulo Opzioni Comuni) per memorizzare il fatto che la prima condizione è scattata:
If (gbStatusFC = False) then if prima condizione then for i = opti to 0 step -1 if seconda condizione then gbStatusFC = true Return False endif next i endif Else if nuova condizione ... gbStatusFC = False Return True endif Endif
N.B. Ricordati di mettere a False la variabile gbStatusFC quando scatta effettivamente il segnale sia Long che Short |
luigi_amodeo |
Posted - 30 May 2006 : 12:24:44 Per maggiore chiarezza la nuova condizione da verificare dovrà realizzarsi nelle barre successive alla prima condizione.
|