[Backtest] Chiến lược Novecento - cũ mà mới.

[Backtest] Chiến lược Novecento - cũ mà mới.

[Backtest] Chiến lược Novecento - cũ mà mới.
@Trương Nhật mình cho khoảng xấp xỉ là 0.01 có gì bạn tự điều chỉnh nhé, 2 dòng 138 và 147 :D
Mã:
//@version=4
//BO Novecento @TruongNhat
//author: anhnguyen14

strategy(title="BO TDF @TruongNhat", overlay=false, pyramiding=10)

// === INPUT BACKTEST RANGE ===
Date   = input(true, title = "=== Date Option ===")
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)

ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === DATE RANGE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === Trading Time ===
CTimeDvM   = input(true, title = "=== Trading Time ===")
FromHourDvM   = input(defval = 05, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 00, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM   = input(defval = 04, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 59, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<7?FromHourDvM-7+24:FromHourDvM-7
GMT_THDvM=ToHourDvM<7?ToHourDvM-7+24:ToHourDvM-7
fhDvM= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
fmDvM= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
thDvM= (GMT_THDvM<10?"0"+tostring(GMT_THDvM):tostring(GMT_THDvM))
tmDvM= (ToMinuteDvM<10?"0"+tostring(ToMinuteDvM):tostring(ToMinuteDvM))
WorkingHourDvM = fhDvM+fmDvM+"-"+thDvM+tmDvM
t0_DvM = time(timeframe.period, WorkingHourDvM)
//bgcolor(CTimeDvM? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)

//The Vostro Indicator
period156 = 100
level = input(8, title="Vostro Level")
gd120 = sum(hl2, 5)
gd128 = gd120 * .2
gd121 = sum(high - low, 5)
gd136 = gd121 * .2 * .2

ibuff116 = (low - gd128) / gd136
ibuff112 = (high - gd128) / gd136


ibuff108 = iff(ibuff112 > level and high > wma(hl2, period156), 90, iff(ibuff116 < -level and low < wma(hl2, period156), -90, 0))
ibuff109 = iff(ibuff112 > level and ibuff112[1] > level or ibuff116 < -level and ibuff116[1] < -8, 0, ibuff108)
plot((ibuff109/100), title="The VosTro", color=color.blue, linewidth=2, transp=40)
//plot(80)
//plot(-80)

//Trend Direction Force Index
filterHigh = 0.5
filterMid = 0
filterLow = -0.5
price = close

//TDF5
lookback5 = input(5, title="TDF Fast")
mma5 = ema(price * 1000, lookback5)
smma5 = ema(mma5, lookback5)

impetmma5 = mma5 - mma5[1]
impetsmma5 = smma5 - smma5[1]
divma5 = abs(mma5 - smma5)
averimpet5 = (impetmma5 + impetsmma5) / 2

number5 = averimpet5
pow5 = 3
result5 = float(na)

for i = 1 to pow5 - 1 by 1
    if i == 1
        result5 := number5
        result5
    result5 := result5 * number5
    result5

tdf5 = divma5 * result5
ntdf5 = tdf5 / highest(abs(tdf5), lookback5 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf5, title="TDF5", linewidth=2, color=color.red, transp=40)

//TFD20
lookback20 = input(20, title="TDF Slow")
mma20 = ema(price * 1000, lookback20)
smma20 = ema(mma20, lookback20)
impetmma20 = mma20 - mma20[1]
impetsmma20 = smma20 - smma20[1]
divma20 = abs(mma20 - smma20)
averimpet20 = (impetmma20 + impetsmma20) / 2

number20 = averimpet20
pow20 = 3
result20 = float(na)

for i = 1 to pow20 - 1 by 1
    if i == 1
        result20 := number20
        result20
    result20 := result20 * number20
    result20

tdf20 = divma20 * result20
ntdf20 = tdf20 / highest(abs(tdf20), lookback20 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf20, title="TDF5", linewidth=2, color=color.yellow, transp=40)

hline(filterHigh, color=color.black)
//hline(filterMid, color=color.black)
hline(filterLow, color=color.black)
hline(1, linewidth=2)
hline(-1, linewidth=2)

//Barry Support & Resistance
FractalLen=3
isFractal(x) => highestbars(x,FractalLen*2+1)==-FractalLen
sF=isFractal(-low), support=low, support:=sF ? low[FractalLen] : support[1]
rF=isFractal(high), resistance=high, resistance:=rF ? high[FractalLen] : resistance[1]
//plot(series=support, title="Support", color=color.blue, offset=-FractalLen)
//plot(series=resistance, title="Resistance", color=color.red, offset=-FractalLen)
//plotshape(sF, title="Lower fractal", style=shape.diamond, location=location.belowbar, color=color.black, offset=-FractalLen, size=size.tiny)
//plotshape(rF, title="Upper fractal", style=shape.diamond, location=location.abovebar, color=color.black, offset=-FractalLen, size=size.tiny)

//Put Condition

//Novecento M5 - Put Condition - Novecentas Setup
x1DvM=
     
       //ibuff109>80
       ntdf5==1
       and ntdf20>=0 and ntdf20<0.01
     


//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
     
       //ibuff109<-80
       ntdf5==-1
       and ntdf20>-0.01 and ntdf20<=0
     

// - /FUNCTIONS

xDvM=
       x1DvM
     

yDvM=
       y1DvM

//--------------------------------------\\

// - /FUNCTIONS

//--------------------------------------\\

//plot Signal
putcol = CTimeDvM?t0_DvM?xDvM? color.red : na:na:na
callcol = CTimeDvM?t0_DvM?yDvM? color.blue : na:na:na
PutSignal= CTimeDvM?t0_DvM?xDvM?-2:na:na:na
CallSignal= CTimeDvM?t0_DvM?yDvM?-2:na:na:na
plot(PutSignal, title='Put Signal', style=plot.style_columns, color=color.red, offset=1, transp=0)
plot(CallSignal, title='Call Signal', style=plot.style_columns, color=color.blue, offset=1, transp=0)
plotshape(PutSignal, title='Put', text="Put", style=shape.labeldown, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
plotshape(CallSignal, title='Call', text="Call", style=shape.labelup, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)

//Trading Time
if (CTimeDvM)
    strategy.entry("Call", strategy.long, when=yDvM and window() and t0_DvM)
if (CTimeDvM)
    strategy.entry("Put", strategy.short, when=xDvM and window() and t0_DvM)

strategy.close_all(when=barstate.isnew)
   
//EOF

code này nè bác @vĩnh0902.
 
View attachment 130388
Nhờ bác @vĩnh0902 test giùm mình con này khung giờ như trên với nghen
day bac oi 2 thang ne
upload_2020-1-9_9-32-45.png
 
@Trương Nhật nick bạn Vĩnh là @vĩnh0902 á :D

Tặng 2 bạn @Trương Nhật@vĩnh0902 , lucky trading!
1. Code Alert báo hiệu
Mã:
//@version=4
//BO Novecento Alert @TruongNhat
//author: anhnguyen14

study(title="BO Novecento Alert @TruongNhat", overlay=true)

// === INPUT BACKTEST RANGE ===
Date   = input(true, title = "=== Date Option ===")
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)

ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === DATE RANGE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === Trading Time ===
CTimeDvM   = input(true, title = "=== Trading Time ===")
FromHourDvM   = input(defval = 05, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 00, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM   = input(defval = 04, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 59, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<7?FromHourDvM-7+24:FromHourDvM-7
GMT_THDvM=ToHourDvM<7?ToHourDvM-7+24:ToHourDvM-7
fhDvM= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
fmDvM= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
thDvM= (GMT_THDvM<10?"0"+tostring(GMT_THDvM):tostring(GMT_THDvM))
tmDvM= (ToMinuteDvM<10?"0"+tostring(ToMinuteDvM):tostring(ToMinuteDvM))
WorkingHourDvM = fhDvM+fmDvM+"-"+thDvM+tmDvM
t0_DvM = time(timeframe.period, WorkingHourDvM)
//bgcolor(CTimeDvM? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)

//The Vostro Indicator
period156 = 100
level = input(8, title="Vostro Level")
gd120 = sum(hl2, 5)
gd128 = gd120 * .2
gd121 = sum(high - low, 5)
gd136 = gd121 * .2 * .2

ibuff116 = (low - gd128) / gd136
ibuff112 = (high - gd128) / gd136


ibuff108 = iff(ibuff112 > level and high > wma(hl2, period156), 90, iff(ibuff116 < -level and low < wma(hl2, period156), -90, 0))
ibuff109 = iff(ibuff112 > level and ibuff112[1] > level or ibuff116 < -level and ibuff116[1] < -8, 0, ibuff108)
//plot((ibuff109/100), title="The VosTro", color=color.blue, linewidth=2, transp=40)
//plot(80)
//plot(-80)

//Trend Direction Force Index
filterHigh = 0.5
filterMid = 0
filterLow = -0.5
price = close

//TDF5
lookback5 = input(5, title="TDF Fast")
mma5 = ema(price * 1000, lookback5)
smma5 = ema(mma5, lookback5)

impetmma5 = mma5 - mma5[1]
impetsmma5 = smma5 - smma5[1]
divma5 = abs(mma5 - smma5)
averimpet5 = (impetmma5 + impetsmma5) / 2

number5 = averimpet5
pow5 = 3
result5 = float(na)

for i = 1 to pow5 - 1 by 1
    if i == 1
        result5 := number5
        result5
    result5 := result5 * number5
    result5

tdf5 = divma5 * result5
ntdf5 = tdf5 / highest(abs(tdf5), lookback5 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
//plot(ntdf5, title="TDF5", linewidth=2, color=color.red, transp=40)

//TFD20
lookback20 = input(20, title="TDF Slow")
mma20 = ema(price * 1000, lookback20)
smma20 = ema(mma20, lookback20)

impetmma20 = mma20 - mma20[1]
impetsmma20 = smma20 - smma20[1]
divma20 = abs(mma20 - smma20)
averimpet20 = (impetmma20 + impetsmma20) / 2

number20 = averimpet20
pow20 = 3
result20 = float(na)

for i = 1 to pow20 - 1 by 1
    if i == 1
        result20 := number20
        result20
    result20 := result20 * number20
    result20

tdf20 = divma20 * result20
ntdf20 = tdf20 / highest(abs(tdf20), lookback20 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
//plot(ntdf20, title="TDF5", linewidth=2, color=color.yellow, transp=40)

//hline(filterHigh, color=color.black)
//hline(filterMid, color=color.black)
//hline(filterLow, color=color.black)
//hline(1, linewidth=2)
//hline(-1, linewidth=2)

//Barry Support & Resistance
FractalLen=3
isFractal(x) => highestbars(x,FractalLen*2+1)==-FractalLen
sF=isFractal(-low), support=low, support:=sF ? low[FractalLen] : support[1]
rF=isFractal(high), resistance=high, resistance:=rF ? high[FractalLen] : resistance[1]
//plot(series=support, title="Support", color=color.blue, offset=-FractalLen)
//plot(series=resistance, title="Resistance", color=color.red, offset=-FractalLen)
plotshape(sF, title="Lower fractal", style=shape.diamond, location=location.belowbar, color=color.black, offset=-FractalLen, size=size.tiny)
plotshape(rF, title="Upper fractal", style=shape.diamond, location=location.abovebar, color=color.black, offset=-FractalLen, size=size.tiny)

//Put Condition

//Novecento M5 - Put Condition - Novecentas Setup
x1DvM=
    
       ibuff109>80
       and ntdf5==1
       and ntdf20<0.5
    


//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
    
       ibuff109<-80
       and ntdf5==-1
       and ntdf20>-0.5
    

// - /FUNCTIONS

xDvM=
       x1DvM
    

yDvM=
       y1DvM

//--------------------------------------\\

// - /FUNCTIONS

//--------------------------------------\\


// Alert
CputcolDvM = xDvM ? color.red : na
CcallcolDvM = yDvM ? color.blue : na
plotshape(CTimeDvM?t0_DvM?xDvM:na:na, title='Put Alert', text="Put Alert", style=shape.labeldown, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
plotshape(CTimeDvM?t0_DvM?yDvM:na:na, title='Call Alert', text="Call Alert", style=shape.labelup, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
bgcolor(CTimeDvM?t0_DvM?CputcolDvM:na:na, transp=50, offset=1, title="Put Signal")
bgcolor(CTimeDvM?t0_DvM?CcallcolDvM:na:na, transp=50, offset=1, title="Call Signal")

// Alert
mms1="Signal alert"
PutAlert=
       (CTimeDvM and t0_DvM and xDvM)
    
CallAlert=
       (CTimeDvM and t0_DvM and yDvM)
    

alertcondition(PutAlert or CallAlert, title="Signal alert", message=mms1)

  
//EOF

2. Code backtest và copy lệnh
Mã:
//@version=4
//BO Novecento @TruongNhat
//author: anhnguyen14

strategy(title="BO Novecento @TruongNhat", overlay=false, pyramiding=10)

// === INPUT BACKTEST RANGE ===
Date   = input(true, title = "=== Date Option ===")
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)

ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === DATE RANGE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === Trading Time ===
CTimeDvM   = input(true, title = "=== Trading Time ===")
FromHourDvM   = input(defval = 05, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 00, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM   = input(defval = 04, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 59, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<7?FromHourDvM-7+24:FromHourDvM-7
GMT_THDvM=ToHourDvM<7?ToHourDvM-7+24:ToHourDvM-7
fhDvM= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
fmDvM= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
thDvM= (GMT_THDvM<10?"0"+tostring(GMT_THDvM):tostring(GMT_THDvM))
tmDvM= (ToMinuteDvM<10?"0"+tostring(ToMinuteDvM):tostring(ToMinuteDvM))
WorkingHourDvM = fhDvM+fmDvM+"-"+thDvM+tmDvM
t0_DvM = time(timeframe.period, WorkingHourDvM)
//bgcolor(CTimeDvM? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)

//The Vostro Indicator
period156 = 100
level = input(8, title="Vostro Level")
gd120 = sum(hl2, 5)
gd128 = gd120 * .2
gd121 = sum(high - low, 5)
gd136 = gd121 * .2 * .2

ibuff116 = (low - gd128) / gd136
ibuff112 = (high - gd128) / gd136


ibuff108 = iff(ibuff112 > level and high > wma(hl2, period156), 90, iff(ibuff116 < -level and low < wma(hl2, period156), -90, 0))
ibuff109 = iff(ibuff112 > level and ibuff112[1] > level or ibuff116 < -level and ibuff116[1] < -8, 0, ibuff108)
plot((ibuff109/100), title="The VosTro", color=color.blue, linewidth=2, transp=40)
//plot(80)
//plot(-80)

//Trend Direction Force Index
filterHigh = 0.5
filterMid = 0
filterLow = -0.5
price = close

//TDF5
lookback5 = input(5, title="TDF Fast")
mma5 = ema(price * 1000, lookback5)
smma5 = ema(mma5, lookback5)

impetmma5 = mma5 - mma5[1]
impetsmma5 = smma5 - smma5[1]
divma5 = abs(mma5 - smma5)
averimpet5 = (impetmma5 + impetsmma5) / 2

number5 = averimpet5
pow5 = 3
result5 = float(na)

for i = 1 to pow5 - 1 by 1
    if i == 1
        result5 := number5
        result5
    result5 := result5 * number5
    result5

tdf5 = divma5 * result5
ntdf5 = tdf5 / highest(abs(tdf5), lookback5 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf5, title="TDF5", linewidth=2, color=color.red, transp=40)

//TFD20
lookback20 = input(20, title="TDF Slow")
mma20 = ema(price * 1000, lookback20)
smma20 = ema(mma20, lookback20)

impetmma20 = mma20 - mma20[1]
impetsmma20 = smma20 - smma20[1]
divma20 = abs(mma20 - smma20)
averimpet20 = (impetmma20 + impetsmma20) / 2

number20 = averimpet20
pow20 = 3
result20 = float(na)

for i = 1 to pow20 - 1 by 1
    if i == 1
        result20 := number20
        result20
    result20 := result20 * number20
    result20

tdf20 = divma20 * result20
ntdf20 = tdf20 / highest(abs(tdf20), lookback20 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf20, title="TDF5", linewidth=2, color=color.yellow, transp=40)

hline(filterHigh, color=color.black)
//hline(filterMid, color=color.black)
hline(filterLow, color=color.black)
hline(1, linewidth=2)
hline(-1, linewidth=2)

//Barry Support & Resistance
FractalLen=3
isFractal(x) => highestbars(x,FractalLen*2+1)==-FractalLen
sF=isFractal(-low), support=low, support:=sF ? low[FractalLen] : support[1]
rF=isFractal(high), resistance=high, resistance:=rF ? high[FractalLen] : resistance[1]
//plot(series=support, title="Support", color=color.blue, offset=-FractalLen)
//plot(series=resistance, title="Resistance", color=color.red, offset=-FractalLen)
//plotshape(sF, title="Lower fractal", style=shape.diamond, location=location.belowbar, color=color.black, offset=-FractalLen, size=size.tiny)
//plotshape(rF, title="Upper fractal", style=shape.diamond, location=location.abovebar, color=color.black, offset=-FractalLen, size=size.tiny)

//Put Condition

//Novecento M5 - Put Condition - Novecentas Setup
x1DvM=
    
       ibuff109>80
       and ntdf5==1
       and ntdf20<0.5
    


//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
    
       ibuff109<-80
       and ntdf5==-1
       and ntdf20>-0.5
    

// - /FUNCTIONS

xDvM=
       x1DvM
    

yDvM=
       y1DvM

//--------------------------------------\\

// - /FUNCTIONS

//--------------------------------------\\

//plot Signal
putcol = CTimeDvM?t0_DvM?xDvM? color.red : na:na:na
callcol = CTimeDvM?t0_DvM?yDvM? color.blue : na:na:na
PutSignal= CTimeDvM?t0_DvM?xDvM?-2:na:na:na
CallSignal= CTimeDvM?t0_DvM?yDvM?-2:na:na:na
plot(PutSignal, title='Put Signal', style=plot.style_columns, color=color.red, offset=1, transp=0)
plot(CallSignal, title='Call Signal', style=plot.style_columns, color=color.blue, offset=1, transp=0)
plotshape(PutSignal, title='Put', text="Put", style=shape.labeldown, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
plotshape(CallSignal, title='Call', text="Call", style=shape.labelup, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)

//Trading Time
if (CTimeDvM)
    strategy.entry("Call", strategy.long, when=yDvM and window() and t0_DvM)
if (CTimeDvM)
    strategy.entry("Put", strategy.short, when=xDvM and window() and t0_DvM)

strategy.close_all(when=barstate.isnew)
  
//EOF

Nhờ bác @vĩnh0902 test giùm mình EU, UJ, EJ m15 với, hy vọng đừng bèo quá
 
@Trương Nhật nick bạn Vĩnh là @vĩnh0902 á :D

Tặng 2 bạn @Trương Nhật@vĩnh0902 , lucky trading!
1. Code Alert báo hiệu
Mã:
//@version=4
//BO Novecento Alert @TruongNhat
//author: anhnguyen14

study(title="BO Novecento Alert @TruongNhat", overlay=true)

// === INPUT BACKTEST RANGE ===
Date   = input(true, title = "=== Date Option ===")
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)

ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === DATE RANGE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === Trading Time ===
CTimeDvM   = input(true, title = "=== Trading Time ===")
FromHourDvM   = input(defval = 05, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 00, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM   = input(defval = 04, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 59, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<7?FromHourDvM-7+24:FromHourDvM-7
GMT_THDvM=ToHourDvM<7?ToHourDvM-7+24:ToHourDvM-7
fhDvM= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
fmDvM= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
thDvM= (GMT_THDvM<10?"0"+tostring(GMT_THDvM):tostring(GMT_THDvM))
tmDvM= (ToMinuteDvM<10?"0"+tostring(ToMinuteDvM):tostring(ToMinuteDvM))
WorkingHourDvM = fhDvM+fmDvM+"-"+thDvM+tmDvM
t0_DvM = time(timeframe.period, WorkingHourDvM)
//bgcolor(CTimeDvM? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)

//The Vostro Indicator
period156 = 100
level = input(8, title="Vostro Level")
gd120 = sum(hl2, 5)
gd128 = gd120 * .2
gd121 = sum(high - low, 5)
gd136 = gd121 * .2 * .2

ibuff116 = (low - gd128) / gd136
ibuff112 = (high - gd128) / gd136


ibuff108 = iff(ibuff112 > level and high > wma(hl2, period156), 90, iff(ibuff116 < -level and low < wma(hl2, period156), -90, 0))
ibuff109 = iff(ibuff112 > level and ibuff112[1] > level or ibuff116 < -level and ibuff116[1] < -8, 0, ibuff108)
//plot((ibuff109/100), title="The VosTro", color=color.blue, linewidth=2, transp=40)
//plot(80)
//plot(-80)

//Trend Direction Force Index
filterHigh = 0.5
filterMid = 0
filterLow = -0.5
price = close

//TDF5
lookback5 = input(5, title="TDF Fast")
mma5 = ema(price * 1000, lookback5)
smma5 = ema(mma5, lookback5)

impetmma5 = mma5 - mma5[1]
impetsmma5 = smma5 - smma5[1]
divma5 = abs(mma5 - smma5)
averimpet5 = (impetmma5 + impetsmma5) / 2

number5 = averimpet5
pow5 = 3
result5 = float(na)

for i = 1 to pow5 - 1 by 1
    if i == 1
        result5 := number5
        result5
    result5 := result5 * number5
    result5

tdf5 = divma5 * result5
ntdf5 = tdf5 / highest(abs(tdf5), lookback5 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
//plot(ntdf5, title="TDF5", linewidth=2, color=color.red, transp=40)

//TFD20
lookback20 = input(20, title="TDF Slow")
mma20 = ema(price * 1000, lookback20)
smma20 = ema(mma20, lookback20)

impetmma20 = mma20 - mma20[1]
impetsmma20 = smma20 - smma20[1]
divma20 = abs(mma20 - smma20)
averimpet20 = (impetmma20 + impetsmma20) / 2

number20 = averimpet20
pow20 = 3
result20 = float(na)

for i = 1 to pow20 - 1 by 1
    if i == 1
        result20 := number20
        result20
    result20 := result20 * number20
    result20

tdf20 = divma20 * result20
ntdf20 = tdf20 / highest(abs(tdf20), lookback20 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
//plot(ntdf20, title="TDF5", linewidth=2, color=color.yellow, transp=40)

//hline(filterHigh, color=color.black)
//hline(filterMid, color=color.black)
//hline(filterLow, color=color.black)
//hline(1, linewidth=2)
//hline(-1, linewidth=2)

//Barry Support & Resistance
FractalLen=3
isFractal(x) => highestbars(x,FractalLen*2+1)==-FractalLen
sF=isFractal(-low), support=low, support:=sF ? low[FractalLen] : support[1]
rF=isFractal(high), resistance=high, resistance:=rF ? high[FractalLen] : resistance[1]
//plot(series=support, title="Support", color=color.blue, offset=-FractalLen)
//plot(series=resistance, title="Resistance", color=color.red, offset=-FractalLen)
plotshape(sF, title="Lower fractal", style=shape.diamond, location=location.belowbar, color=color.black, offset=-FractalLen, size=size.tiny)
plotshape(rF, title="Upper fractal", style=shape.diamond, location=location.abovebar, color=color.black, offset=-FractalLen, size=size.tiny)

//Put Condition

//Novecento M5 - Put Condition - Novecentas Setup
x1DvM=
    
       ibuff109>80
       and ntdf5==1
       and ntdf20<0.5
    


//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
    
       ibuff109<-80
       and ntdf5==-1
       and ntdf20>-0.5
    

// - /FUNCTIONS

xDvM=
       x1DvM
    

yDvM=
       y1DvM

//--------------------------------------\\

// - /FUNCTIONS

//--------------------------------------\\


// Alert
CputcolDvM = xDvM ? color.red : na
CcallcolDvM = yDvM ? color.blue : na
plotshape(CTimeDvM?t0_DvM?xDvM:na:na, title='Put Alert', text="Put Alert", style=shape.labeldown, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
plotshape(CTimeDvM?t0_DvM?yDvM:na:na, title='Call Alert', text="Call Alert", style=shape.labelup, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
bgcolor(CTimeDvM?t0_DvM?CputcolDvM:na:na, transp=50, offset=1, title="Put Signal")
bgcolor(CTimeDvM?t0_DvM?CcallcolDvM:na:na, transp=50, offset=1, title="Call Signal")

// Alert
mms1="Signal alert"
PutAlert=
       (CTimeDvM and t0_DvM and xDvM)
    
CallAlert=
       (CTimeDvM and t0_DvM and yDvM)
    

alertcondition(PutAlert or CallAlert, title="Signal alert", message=mms1)

  
//EOF

2. Code backtest và copy lệnh
Mã:
//@version=4
//BO Novecento @TruongNhat
//author: anhnguyen14

strategy(title="BO Novecento @TruongNhat", overlay=false, pyramiding=10)

// === INPUT BACKTEST RANGE ===
Date   = input(true, title = "=== Date Option ===")
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)

ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === DATE RANGE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === Trading Time ===
CTimeDvM   = input(true, title = "=== Trading Time ===")
FromHourDvM   = input(defval = 05, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 00, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM   = input(defval = 04, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 59, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<7?FromHourDvM-7+24:FromHourDvM-7
GMT_THDvM=ToHourDvM<7?ToHourDvM-7+24:ToHourDvM-7
fhDvM= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
fmDvM= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
thDvM= (GMT_THDvM<10?"0"+tostring(GMT_THDvM):tostring(GMT_THDvM))
tmDvM= (ToMinuteDvM<10?"0"+tostring(ToMinuteDvM):tostring(ToMinuteDvM))
WorkingHourDvM = fhDvM+fmDvM+"-"+thDvM+tmDvM
t0_DvM = time(timeframe.period, WorkingHourDvM)
//bgcolor(CTimeDvM? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)

//The Vostro Indicator
period156 = 100
level = input(8, title="Vostro Level")
gd120 = sum(hl2, 5)
gd128 = gd120 * .2
gd121 = sum(high - low, 5)
gd136 = gd121 * .2 * .2

ibuff116 = (low - gd128) / gd136
ibuff112 = (high - gd128) / gd136


ibuff108 = iff(ibuff112 > level and high > wma(hl2, period156), 90, iff(ibuff116 < -level and low < wma(hl2, period156), -90, 0))
ibuff109 = iff(ibuff112 > level and ibuff112[1] > level or ibuff116 < -level and ibuff116[1] < -8, 0, ibuff108)
plot((ibuff109/100), title="The VosTro", color=color.blue, linewidth=2, transp=40)
//plot(80)
//plot(-80)

//Trend Direction Force Index
filterHigh = 0.5
filterMid = 0
filterLow = -0.5
price = close

//TDF5
lookback5 = input(5, title="TDF Fast")
mma5 = ema(price * 1000, lookback5)
smma5 = ema(mma5, lookback5)

impetmma5 = mma5 - mma5[1]
impetsmma5 = smma5 - smma5[1]
divma5 = abs(mma5 - smma5)
averimpet5 = (impetmma5 + impetsmma5) / 2

number5 = averimpet5
pow5 = 3
result5 = float(na)

for i = 1 to pow5 - 1 by 1
    if i == 1
        result5 := number5
        result5
    result5 := result5 * number5
    result5

tdf5 = divma5 * result5
ntdf5 = tdf5 / highest(abs(tdf5), lookback5 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf5, title="TDF5", linewidth=2, color=color.red, transp=40)

//TFD20
lookback20 = input(20, title="TDF Slow")
mma20 = ema(price * 1000, lookback20)
smma20 = ema(mma20, lookback20)

impetmma20 = mma20 - mma20[1]
impetsmma20 = smma20 - smma20[1]
divma20 = abs(mma20 - smma20)
averimpet20 = (impetmma20 + impetsmma20) / 2

number20 = averimpet20
pow20 = 3
result20 = float(na)

for i = 1 to pow20 - 1 by 1
    if i == 1
        result20 := number20
        result20
    result20 := result20 * number20
    result20

tdf20 = divma20 * result20
ntdf20 = tdf20 / highest(abs(tdf20), lookback20 * 3)

//c = ntdf5 > filterHigh ? color.green : ntdf < filterLow ? color.red : color.gray
plot(ntdf20, title="TDF5", linewidth=2, color=color.yellow, transp=40)

hline(filterHigh, color=color.black)
//hline(filterMid, color=color.black)
hline(filterLow, color=color.black)
hline(1, linewidth=2)
hline(-1, linewidth=2)

//Barry Support & Resistance
FractalLen=3
isFractal(x) => highestbars(x,FractalLen*2+1)==-FractalLen
sF=isFractal(-low), support=low, support:=sF ? low[FractalLen] : support[1]
rF=isFractal(high), resistance=high, resistance:=rF ? high[FractalLen] : resistance[1]
//plot(series=support, title="Support", color=color.blue, offset=-FractalLen)
//plot(series=resistance, title="Resistance", color=color.red, offset=-FractalLen)
//plotshape(sF, title="Lower fractal", style=shape.diamond, location=location.belowbar, color=color.black, offset=-FractalLen, size=size.tiny)
//plotshape(rF, title="Upper fractal", style=shape.diamond, location=location.abovebar, color=color.black, offset=-FractalLen, size=size.tiny)

//Put Condition

//Novecento M5 - Put Condition - Novecentas Setup
x1DvM=
    
       ibuff109>80
       and ntdf5==1
       and ntdf20<0.5
    


//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
    
       ibuff109<-80
       and ntdf5==-1
       and ntdf20>-0.5
    

// - /FUNCTIONS

xDvM=
       x1DvM
    

yDvM=
       y1DvM

//--------------------------------------\\

// - /FUNCTIONS

//--------------------------------------\\

//plot Signal
putcol = CTimeDvM?t0_DvM?xDvM? color.red : na:na:na
callcol = CTimeDvM?t0_DvM?yDvM? color.blue : na:na:na
PutSignal= CTimeDvM?t0_DvM?xDvM?-2:na:na:na
CallSignal= CTimeDvM?t0_DvM?yDvM?-2:na:na:na
plot(PutSignal, title='Put Signal', style=plot.style_columns, color=color.red, offset=1, transp=0)
plot(CallSignal, title='Call Signal', style=plot.style_columns, color=color.blue, offset=1, transp=0)
plotshape(PutSignal, title='Put', text="Put", style=shape.labeldown, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)
plotshape(CallSignal, title='Call', text="Call", style=shape.labelup, location=location.bottom, color=color.orange, textcolor=color.black, offset=1, transp=0)

//Trading Time
if (CTimeDvM)
    strategy.entry("Call", strategy.long, when=yDvM and window() and t0_DvM)
if (CTimeDvM)
    strategy.entry("Put", strategy.short, when=xDvM and window() and t0_DvM)

strategy.close_all(when=barstate.isnew)
  
//EOF

nhờ bác @vĩnh0902 test giùm mình con này với EU m5, m15 khung thời gian từ 9h đến 23h, đầu vào có thay đổi 1 tí là vostro=7 thì ntn với
 

BÌNH LUẬN MỚI NHẤT

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 916 Xem / 40 Trả lời
  • Smart_Money trong Phân tích Forex - Vàng - Hàng hóa 125 Xem / 1 Trả lời
  • ngoi_sao_co_doc trong Phân tích Forex - Vàng - Hàng hóa 24,513 Xem / 87 Trả lời
  • Quíc Óp trong Phân tích Forex - Vàng - Hàng hóa 395 Xem / 19 Trả lời
  • TraderViet Crypto trong Chuyện bên lề 324 Xem / 2 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 402 Xem / 31 Trả lời
  • Bianas trong Phân tích Forex - Vàng - Hàng hóa 170 Xem / 3 Trả lời
  • Huan2051 trong Phân tích Forex - Vàng - Hàng hóa 294,768 Xem / 1,397 Trả lời
  • AdBlock Detected

    We get it, advertisements are annoying!

    Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

    Back
    Bên trên