Buon pomeriggio, posto qui il codice di un TS qualsiasi che vuole eliminare la domenica per i conteggi inerenti i parametri o trigger di entrata.
Su una discussione precedente ho letto che serve un ciclo for, posto il codice per vedere se ho scritto bene.
Grazie a tutti
DefParam Cumulateorders = False
DefParam PreLoadBars = 10000
//Escludo la domenica
FOR i = 1 to 1
IF OpenDayOfWeek < 6 THEN //solo i giorni da 0 a 5 (Lun-Ven)
ENDIF
NEXT
FOR i2 = 2 to 2
IF OpenDayOfWeek < 6 THEN //solo i giorni da 0 a 5 (Lun-Ven)
ENDIF
NEXT
FOR i3 = 3 to 3
IF OpenDayOfWeek < 6 THEN //solo i giorni da 0 a 5 (Lun-Ven)
ENDIF
NEXT
FOR i4 = 4 to 4
IF OpenDayOfWeek < 6 THEN //solo i giorni da 0 a 5 (Lun-Ven)
ENDIF
NEXT
FOR i5 = 5 to 5
IF OpenDayOfWeek < 6 THEN //solo i giorni da 0 a 5 (Lun-Ven)
ENDIF
NEXT
// Pattern n.8 DIREZIONALITA' LONG opposto del Pattern n.9
a = Dclose(i4) < Dopen(i4) // la candela di 4 giorni fa è ribassista
b = DClose(i3) > DClose(i3) // la candela di 3 giorni fa ha una chiusura maggiore rispetto a quella di 4 giorni fa
c = DClose(i3) > DClose(i3) // la candela di 2 giorni fa ha una chiusura maggiore rispetto a quella di 3 giorni fa
d = DClose(i) > DClose(i2) // la candela di ieri ha una chiusura maggiore rispetto a quella di 2 giorni fa
// Pattern n.9 DIREZIONALITA' SHORT opposto del Pattern n.8
aa = Dclose(i4) > Dopen(i4) // la candela di 4 giorni fa è rialzista
ba = DClose(i3) < DClose(i4) and DClose(i3) < DOpen(i3) // la candela di 3 giorni fa ha una chiusura minore rispetto a quella di 4 giorni fa
ca = DClose(i2) < DClose(i3) and DClose(i2) < DOpen(i2)// la candela di 2 giorni fa ha una chiusura minore rispetto a quella di 3 giorni fa
da = DClose(i) < DClose(i2) and DClose(i) < DOpen(i) // la candela di ieri ha una chiusura minore rispetto a quella di 2 giorni fa
if (a and b and c and d) then
PTRN008 = 1
else
PTRN008 = 0
endif
if (aa and ba and ca and da) then
PTRN009 = 1
else
PTRN009 = 0
endif
TimeFrame(Default)
Domenica = OpenDayofWeek = 6
CondBUY = Close > DHigh(i)
CondSELL = Close < DLow(i)
Venerdi = OpenDayofWeek = 5 and CurrentTime >=205900
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket AND CondBUY and not Domenica and PTRN008 or PRTN009 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
If LongOnMarket AND Venerdi THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket AND CondSELL and not Domenica and PTRN008 or PRTN009 THEN
SELLSHORT 1 CONTRACTS AT MARKET
set stop ploss SLSHORT
set target pprofit TPSHORT
ENDIF
// Condizioni per uscire da posizioni short
IF ShortOnMarket AND Venerdi THEN
EXITSHORT AT MARKET
ENDIF
Le righe da 6 a 25 non fanno assolutamente niente.
Il resto del codice non lo capisco molto.
Se provi a spiegarmi cosa vuoi fare vedo se posso aiutarti,
Ciao Roberto, in sostanza vorrei che quando indico in qualsiasi strategia, per esempio “Highest[10] (High)” oppure “DClose(5)”
nei conteggi non venga presa in considerazione la domenica.
Farlo sarebbe difficilissimo e lentissimo, perché qualunque funzione ed indicatore dovresti riscriverlo, facendo ogni volta un sacco di cicli FOR…NEXT per evitare la domenica.
L’unica è provare con gli orari personalizzati e vedere se li considera o meno.
Non so se ti può servire come idea, ma in un mio TS sul Nasdaq CFD che, facendo una sola operazione al giorno, compra su base oraria il minimo daily ( o vende sempre su base oraria il massimo daily) per evitare la candela della domenica ho separato il giorno del lunedi dagli altri.
Ecco il listato:
// Nasdaq – timeframe giornaliero (con updateOnClose) + timeframe orario (default – senza updateOnClose)
DEFPARAM CumulateOrders=False
DEFPARAM Flatafter=220000
monday = dayOfweek=1
otherDays = (dayofweek >=2 and dayofweek <=5)
//——————————————————–
timeframe(daily,updateOnClose)
dayHighMonday = Dhigh(1)
dayLowMonday= Dlow(1)
dayHigh = Dhigh(0)
dayLow= Dlow(0)
//———————————————————
timeframe (1 hour)
oneTrade = (barIndex-tradeIndex(1)>intradayBarIndex)
if (low[1]<dayLow and close>dayLow and otherDays and oneTrade) or (low[1]<dayLowMonday and close>dayLowMonday and monday and oneTrade) then
buy 1 contract at market
endif
if (high[1]>dayHigh and close<dayHigh and otherDays and oneTrade) or (high[1]>dayHighMonday and close<dayHighMonday and monday and oneTrade) then
sellshort 1 contract at market
endif
//———————————————————–
set stop %loss 0.5
set target %profit 1.5