[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 nick bạn Vĩnh là @vĩnh0902 á :D
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
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
 
@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
cám ơn bác @anhnguyen14 nhiều nhé.
Nhờ bác @vĩnh0902 test giùm mình EU, UJ, EJ m15 với
 
* 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 :D 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é) :D

* 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 :D
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===
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.
upload_2020-1-8_23-4-17.png

Điều kiện để có lệnh là:
1. TDF 5 đạt đỉnh
2. TDF 20 = 0 tại cây nến có tín hiệu và cây nến trướ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)

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
 
@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
nó không hiện mũi tên hay thông tin gì hết bác ơi
upload_2020-1-8_23-26-55.png
upload_2020-1-8_23-26-55.png
 
@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
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à 6
upload_2020-1-8_23-38-6.png
 
@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
 
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 đâu :)
1. 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
 
1. 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
Mình đăng code khoảng rồi mà, ở trên ấy
 
View attachment 130388
Nhờ bác @vĩnh0902 test giùm mình con này khung giờ như trên với nghen
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
 
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
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?
 
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?
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ạ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 :)
 
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ạ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ậy là vẫn phải có backtest thì chuông mới báo hả bác
 
@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
@vĩnh0902 code này nè Vĩnh ơi
 

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

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 1,293 Xem / 86 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 308 Xem / 27 Trả lời
  • Quíc Óp trong Phân tích Forex - Vàng - Hàng hóa 275 Xem / 16 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