salve, ho provato a scrivere una strategia che apra le posizioni al raggiungimento del 25% del range del giorno precedente(long) e a -25% (short) , tuttavia non sono riuscito a capire se il sistema è scritto correttamente, mi date un vostro parere o suggerimento? grazie
DEFPARAM flatafter=210000
defparam cumulateorders=false
defparam flatbefore=010000
c1= dclose(1)-dopen(1)
c2=c1*0.25
c3=dopen(1)+c2
If (not longonmarket) and (dclose(1)>dopen(1)) and c3 then
Buy 1 contracts at market
endif
z1=dopen(1)-dclose(1)
z2=z1*0.25
z3=dopen(1)-z1
if(not shortonmarket) and (open<dclose(1)) and (dopen(1)>dclose(1)) then
sellshort 1 contract at market
endif
SET TARGET pPROFIT 150
non tenete conte dello short in quanto con il copia incolla ho preso una parte sbagliata
Pubblica il tuo argomento nel forum corretto:
_ ProOrder: solo argomenti su strategie.
_ ProBuilder: solo argomenti su indicatori.
L’ho spostato io nel forum corretto.
Grazie 🙂
Domani darò un’occhiata al codice.
Per prima cosa da precisare è che quando si parla di RANGE s’intende la differenza di prezzo tra il Minimo ed il Massimo, mentre tra Open e Close si dice BODY (o Corpo). Mi sembra tu faccia riferimento a quest’ultimo. Non che questo comporti un errore nel tuo codice, però quando parli con qualcun altro devi farti capire usando i termini corretti, altrimenti rischi che tu voglia dire una cosa e l’altro ne capisca una diversa.
C’è un errore logicio nell’uso della variabile c3 alla riga 7. Utilizzi un prezzo come valore vero/falso, il che non ha senso.
A cosa ti serve il prezzo della variabile c3? Perché l’hai messo alla riga 7, cosa vuoi fare?
ciao, la variabile c3 dovrebbe essere il livello di prezzo su cui comprare qualora si verifichi la condizione del 25% del giorno precedente, facendo un esempio potrei dire che se il giorno precedente ho un range da minimo 0 e max 100 il giorno seguente il prt dovrebbe comprare qualora il prezzo raggiunga la soglia di 25, ovviamente in caso di long ed in caso di giorno precedente rialzista
Eccolo (ho tolto la parte short che avevi detto che era errata):
DEFPARAM flatafter = 210000
defparam cumulateorders = false
defparam flatbefore = 010000
c1 = dclose(1)-dopen(1)
c2 = c1*0.25
c3 = dopen(1)+c2
If (not longonmarket) and (dclose(1)>dopen(1)) and (close >= c3) then
Buy 1 contracts at market
endif
SET TARGET pPROFIT 150