Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
 All Forums
 Help
 Aiuti, consigli, dubbi ...
 linguaggio di programmazione

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
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.


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