vĩnh0902
Active Member
- 2,216
- 1,800
vừa đi nhậu giải đen các bác ạ keke cơ mà k say dk@Trương Nhật nick bạn Vĩnh là @vĩnh0902 á
vừa đi nhậu giải đen các bác ạ keke cơ mà k say dk@Trương Nhật nick bạn Vĩnh là @vĩnh0902 á
Tặng 2 bạn @Trương Nhật và @vĩnh0902 , lucky trading!chắc vậy á, tức là có báo trước khi nến kết thúc như con PK để có thời gian chuẩn bị ấy
//@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
//@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
cám ơn bác @anhnguyen14 nhiều nhé.@Trương Nhật nick bạn Vĩnh là @vĩnh0902 á
Tặng 2 bạn @Trương Nhật và @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
alo bác, trong bộ indi "Indi Trend Direction Force Index", mình mới có 1 ý tưởng trade, mới đếm sơ bộ thì kết quả cũng khả quan. Bác xem thế nào nhá? cây đạt tín hiệu tại cây nến đánh dấu.* Hi anh em, hôm nay mình sẽ làm backtest cho một chiến lược khá cũ và khá là không hiệu quả, đó cũng là lý do vì sao anh tác giả qua đến trang 2 của chiến lược ở BOE đã phải thêm thắt vào một cơ số các indi mới Chiến lược sơ khai không hiệu quả không đồng nghĩa với một ý tưởng tồi, chỉ là nó chưa được phát triển hoàn chỉnh thôi, không biết anh ấy cải tiến ra sao nhưng có vẻ anh ấy thích đánh theo kinh nghiệm nhiều hơn nên thường xuyên phá rule, do các lệnh thắng của anh ấy đa phần không theo setup, nhưng lúc có setup thì anh ấy vẫn bỏ lệnh nên thật khó để đánh giá chính xác mức độ hiệu quả của chiến lược. Do đó mình sẽ code cho tradingview backtest và cải tiến theo ý mình xem thế nào, đồng thời giới thiệu đến anh em cùng thư giãn cuối tuần nhé (đương nhiên sẽ có code backtest tặng anh em tự test nhé)
* Trước khi vào backtest và thêm thắt rule, mời anh em đọc bài gốc ở đây
BOE: http://www.binaryoptionsedge.com/topic/5910-novecento-5-min-reversal-strategy/
Bài giới thiệu trên TraderViet: https://traderviet.org/threads/bina...chi-danh-cho-newbie-khong-can-nhin-nen.10619/
* Rule cơ bản:
View attachment 121484
View attachment 121485
Chart EU IDC M5 (từ bar M5 14/10 5:00 am - 9/11/2019)
* Backtest theo rule cơ bản của tác giả và thông số chỉ báo giống như ảnh minh họa của tác giả chiến lược trên BOE (TDF(5,20) - Vostro(4))
View attachment 121486
* Bactest theo rule cơ bản + điều chỉnh chu kỳ Vostro(4) thành Vostro(8) như mặc định của indicator
View attachment 121487
* Backtest theo rule cơ bản + rule của mình
View attachment 121488
* Phân tích các lệnh OTM theo rule cơ bản
View attachment 121489
View attachment 121490
* Thêm rule của mình: rule PA nhé
View attachment 121491
View attachment 121492
* Code indi Vostro, TDF và code backtest để anh em trải nghiệm chiến lược ở các cặp khác trên các sàn khác
1. Indi Vostro
Mã://@version=4 //author:Kıvanç Özbilgiç @fr3762 on twitter study("The Vostro Indicator") period156 = input(100, minval=1) level = input(8, type=input.integer) 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, color=color.blue, linewidth=2) plot(80) plot(-80)
2. Indi Trend Direction Force Index
Mã://@version=4 //author:causecelebre study("Trend Direction Force Index - TDFI [wm]", shorttitle="TDFI [wm]") filterHigh = input(1, title="Filter High") filterMid1 = 0.5 filterMid2 = -0.5 filterLow = input(-1, title="Filter Low") price = input(close, "Period") //TFD5 lookback5 = input(5, title="Lookback") 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, linewidth=3, color=color.red) //TFD20 lookback20 = input(20, title="Lookback") 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, linewidth=3, color=color.yellow) hline(filterHigh, color=color.black, linewidth=3) hline(filterMid1, color=color.gray) hline(filterMid2, color=color.gray) hline(filterLow, color=color.black, linewidth=3)
3. Code backtest
Mã://@version=4 //Bo Novecento M5 //author: anhnguyen14 strategy(title="Bo Novecento M5", overlay=true, pyramiding=14) // === INPUTS setup=input(true, title="Check = Novecentas Setup / Uncheck = anhnguyen14 Setup") // - /INPUTS //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, color=color.blue, linewidth=2) //plot(80) //plot(-80) //Trend Direction Force Index filterHigh = 0.5 filterMid = 0 filterLow = -0.5 price = close //TFD5 lookback5 = input(5, title="TDF Slow") 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, linewidth=3, color=color.red) //TFD20 lookback20 = input(20, title="TDF Fast") 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, linewidth=3, color=color.yellow) //hline(filterHigh, color=color.black) //hline(filterMid, color=color.black) //hline(filterLow, color=color.black) //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 x= setup? ibuff109>80 and ntdf5==1 and ntdf20<0.5 : ibuff109>80 and ntdf5==1 and ntdf20<0.5 and high[barssince(rF)+3]<resistance[barssince(rF)+3] and close[0]<resistance[barssince(rF)+3] //Call Condition //Novecento M5 - Call Condition y= setup? ibuff109<-80 and ntdf5==-1 and ntdf20>-0.5 : ibuff109<-80 and ntdf5==-1 and ntdf20>-0.5 and low[barssince(sF)+3]>support[barssince(sF)+3] and close[0]>support[barssince(sF)+3] // - /FUNCTIONS //--------------------------------------\\ // Alert putcol = x ? color.red : na callcol = y ? color.blue : na bgcolor(putcol, transp=70, offset=1, title="Put Signal For Macro (A)") bgcolor(callcol, transp=70, offset=1, title="Call Signal For Macro (A)") strategy.entry("Call", strategy.long, when=(y)) strategy.entry("Put", strategy.short, when=(x)) strategy.close_all(when=barstate.isnew) //EOF
=====Nice Weekend & Lucky Trading===
//@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
ntdf5==1
and ntdf20==0
//Novecento M5 - Call Condition - Novecentas Setup
y1DvM=
//ibuff109<-80
ntdf5==-1
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
nó không hiện mũi tên hay thông tin gì hết bác ơi@Trương Nhật mình code trên đt, bạn test xem thế nào nha
Code lại backtest chỉ gồm TDF5 đỉnh đáy - TDF20 = 0
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 ntdf5==1 and ntdf20==0 //Novecento M5 - Call Condition - Novecentas Setup y1DvM= //ibuff109<-80 ntdf5==-1 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
Như trong hình mình chỉ vô lệnh 2, bỏ lệnh 3. Để tránh thác đổ,@Trương Nhật mình code trên đt, bạn test xem thế nào nha
Code lại backtest chỉ gồm TDF5 đỉnh đáy - TDF20 = 0
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) Với thêm 1 điều kiện nữa. Mình chỉ vào 1 lệnh đầu tiên, nếu có lệnh tiếp thì bỏ tránh trường hợp đổ thác Như trong hình thì chỉ vô lệnh 1, bỏ lệnh 2 và lệnh 3 Như trong hình thì TDF 5 đạt đỉnh tại 4, td [ATTACH=full]130383[/ATTACH] [ATTACH=full]130383[/ATTACH] 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 //Novecento M5 - Call Condition - Novecentas Setup y1DvM= //ibuff109<-80 ntdf5==-1 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
Vậy tức là ko có lệnh á, tức TDF20 ko có bằng 0 đâu, chẳng qua giá trị nó gần bằng 0 nên khi hiển thị đồ hoạ đg TDF chồng lên vạch 0 nên mình tưởng nó =0 đó, bạn thay đổi trị số tdf20 ở xy từ 0 thành 0.xxx hoặc -0.xxx xem nhé
Này là phải oánh bằng mắt ùi, vì giá trị thực của đg TDF20 lúc đó ko phải =0 mà là ~0 áNhư trong hình mình chỉ vô lệnh 2, bỏ lệnh 3. Để tránh thác đổ,
Nến tín hiệu số 1 thỏa điều kiện: tdf đạt đỉnh tại 4 và tdf 20 = 0 tại vị trí 5 và 6View attachment 130383
Mà anh tác giả Novecento chắc chắn ảnh đã thử qua rồi á, nếu ngon thì ảnh ko cho thêm the vostro vào đâuNhư trong hình mình chỉ vô lệnh 2, bỏ lệnh 3. Để tránh thác đổ,
Nến tín hiệu số 1 thỏa điều kiện: tdf đạt đỉnh tại 4 và tdf 20 = 0 tại vị trí 5 và 6View attachment 130383
//@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
1. Chạy trên IDC kết quả tốt lắmMà anh tác giả Novecento chắc chắn ảnh đã thử qua rồi á, nếu ngon thì ảnh ko cho thêm the vostro vào đâu
Mình đăng code khoảng rồi mà, ở trên ấy1. Chạy trên IDC kết quả tốt lắm
2. Đánh bằng mắt thì nến hiện tại đang chạy, indi chưa hiện tdf nên không xem đc
3 Mình có sửa lại theo cách của bạn mà nó bão lỗi. Vậy chổ đó nên sửa lại cho tdf nằm trong khoảng đc ko, mình tự dò cái khoảng lại
Code Alert có TDF live để bạn Nhật có thể quan sát trực tiếp bằng mắt
//@version=4
//BO Novecento Alert @TruongNhat
//author: anhnguyen14
study(title="BO Novecento Alert @TruongNhat", overlay=false)
// === 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)
// 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
tức là chỉ sử dụng 1 code này là đủ hả bác, có cần phải xài thêm code backtest ko?Code Alert có TDF live để bạn Nhật có thể quan sát trực tiếp bằng mắt
Mã://@version=4 //BO Novecento Alert @TruongNhat //author: anhnguyen14 study(title="BO Novecento Alert @TruongNhat", overlay=false) // === 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) // 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
Có backtest chứ, cái này là alert thôi, giống như bộ pk vậy alert và backtest set thông số giống nhau.tức là chỉ sử dụng 1 code này là đủ hả bác, có cần phải xài thêm code backtest ko?
sao e them vao k hien gi z bac
vậy là vẫn phải có backtest thì chuông mới báo hả bácCó backtest chứ, cái này là alert thôi, giống như bộ pk vậy alert và backtest set thông số giống nhau.
Tại bạn nói backtest ko thấy TDF chạy nên mình code alert ra cửa sổ riêng ko dính vào chart nến có TDF chạy để bạn dễ quản sát
@vĩnh0902 code này nè Vĩnh ơ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
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
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.