anhnguyen14
Active Member
- 24,376
- 30,840
// BO - Woodies CCI - Backtesting
// © inno14
//@version=4
strategy("BO - Woodies CCI - Backtesting")
//strategy.risk.max_intraday_loss(1, strategy.cash)
// === INPUT PERIOD OF TIME ===
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 = 2020, 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 ===")
Time_zone = input(7,title="Time Zone")
FromHourDvM = input(defval = 07, title = "From Hour", minval = 00, maxval = 23)
FromMinuteDvM = input(defval = 30, title = "From Minute", minval = 00, maxval = 59)
ToHourDvM = input(defval = 18, title = "To Hour", minval = 00, maxval = 23)
ToMinuteDvM = input(defval = 00, title = "To Minute", minval = 00, maxval = 59)
GMT_FHDvM=FromHourDvM<Time_zone?FromHourDvM-Time_zone+24:FromHourDvM-Time_zone
GMT_THDvM=ToHourDvM<Time_zone?ToHourDvM-Time_zone+24:ToHourDvM-Time_zone
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)
htrtime = input(true,title="Highlight Trading Time")
bgcolor(htrtime? t0_DvM? color.gray : na:na, title="Trading Time", transp=90)
//
//fh_ott= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM))
//fm_ott= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM))
//th_ott= fh_ott
//tm_ott= (FromMinuteDvM+5<10?"0"+tostring(FromMinuteDvM+5):tostring(FromMinuteDvM+5))
//trading_time_open = fh_ott+fm_ott+"-"+th_ott+tm_ott
//t1 = time(timeframe.period, trading_time_open)
//Woodies CCI
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=1400)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=2000)
source = close
cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)
last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.gray : color.gray
//Plot Woodies CCI
plot(cci14, title="CCI Histogram", color=histogramColor, style=plot.style_histogram, linewidth=2, transp=40)
plot(0, title="Zero Line", color=cciTurbo>100?color.blue:cciTurbo<-100?color.red:color.navy, style=plot.style_line, linewidth=6, transp=20)
hline(200, title="Hundred Line", color=color.black, linestyle=hline.style_dotted)
hline(-200, title="Minus Line", color=color.black, linestyle=hline.style_dotted)
//Plot lingreg CCI14
linreg_cci14=linreg(cci14, 5, 0)
plot(linreg_cci14, color=color.aqua, linewidth=4)
//
ext_linreg=input(120,title="Extreme Level")
//peak & top
peak_cci=
linreg_cci14[2]>linreg_cci14[3] and linreg_cci14[1]>linreg_cci14[2] and linreg_cci14[0]<linreg_cci14[1] and linreg_cci14[1]>ext_linreg
bott_cci=
linreg_cci14[2]<linreg_cci14[3] and linreg_cci14[1]<linreg_cci14[2] and linreg_cci14[0]>linreg_cci14[1] and linreg_cci14[1]<-ext_linreg
peak_cci_1=
linreg_cci14[2]>linreg_cci14[3] and linreg_cci14[1]>linreg_cci14[2] and linreg_cci14[0]<linreg_cci14[1]
bott_cci_1=
linreg_cci14[2]<linreg_cci14[3] and linreg_cci14[1]<linreg_cci14[2] and linreg_cci14[0]>linreg_cci14[1]
//
fil_len=input(3,title="Filter Length")
top_ext=highest(cci14,fil_len)
bot_ext=lowest(cci14,fil_len)
//Put signal
x1=
peak_cci
and cci14[1]==top_ext
and linreg_cci14[1]>valuewhen(peak_cci_1,linreg_cci14[1],1)
and close>low[1]
and cciTurbo<100
and cci14<linreg_cci14
//Call signal
y1=
bott_cci
and cci14[1]==bot_ext
and linreg_cci14[1]<valuewhen(bott_cci_1,linreg_cci14[1],1)
and close<high[1]
and cciTurbo>-100
and cci14>linreg_cci14
no_orders =
not strategy.opentrades
//Stoploss
//stop_tt=input(true,"Stoploss Option By Intraday's Loss Trades")
//stop_val=input(0,"Number of loss trades")
//stop_loss=strategy.losstrades-strategy.losstrades[barssince(t1)]==stop_val
//Function
xTech=
x1
and no_orders
//and (not stop_loss or stop_val==0)
yTech=
y1
and no_orders
//and (not stop_loss or stop_val==0)
//Plot Analyzing Signals
//hline1=hline(-1.2*300)
hline2=hline(-1.6*300)
hline0=hline(0)
sigtext=
xTech?"Put signal":yTech?"Call signal":
"Backtesting From: "+tostring(FromDay)+"/"+tostring(FromMonth)+"/"+tostring(FromYear)+" To: "+tostring(ToDay)+"/"+tostring(ToMonth)+"/"+tostring(ToYear)
+ " * Trading Time From: "+tostring(FromHourDvM)+":"+tostring(FromMinuteDvM)+" To "+tostring(ToHourDvM)+":"+tostring(ToMinuteDvM)
sig_col=xTech?color.new(color.red,10):yTech?color.new(color.blue,10):color.new(color.navy,10)
label_sig_text = label.new(bar_index[0], -1.5*300, text=sigtext, style=label.style_none, textcolor=sig_col, size=size.large)
label.delete(label_sig_text[1])
//plot Signal
putcol = xTech? color.red : na
callcol = yTech? color.blue : na
PutSignal= xTech and window() and t0_DvM?-1.2*300:na
CallSignal= yTech and window() and t0_DvM?-1.2*300: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.circle, location=location.absolute, color=color.red, textcolor=color.black, offset=1, transp=0, size=size.large)
plotshape(CallSignal, title='Call', text="Call", style=shape.circle, location=location.absolute, color=color.blue, textcolor=color.black, offset=1, transp=0, size=size.large)
//plotchar(PutSignal, title='Put', char="◉", text="Put", location=location.absolute, color=color.red, textcolor=color.black, offset=1, transp=0, size=size.small)
//plotchar(CallSignal, title='Call', char="◉", text="Call", location=location.absolute, color=color.blue, textcolor=color.black, offset=1, transp=0, size=size.small)
//Backtesting
exp_tt=input(true,"Expiry Option By Bars")
exp_val=input(6,"Number of Bars")
strategy.entry("Call", strategy.long, when=yTech and window() and t0_DvM)
strategy.entry("Put", strategy.short, when=xTech and window() and t0_DvM)
strategy.close_all(when=barssince(xTech)==exp_val or barssince(yTech)==exp_val)
//EOF
giảm hơn 60 lệnh bác ạ@vĩnh0902 bản nâng cấp con woodies 6/3/2020 số lượng lệnh giảm ko đáng kể, hiệu suất đáo hạn 1 nến, 3 nến, 6 nến đều ổn áp với data 5000 bars
Mã:// BO - Woodies CCI - Backtesting // © inno14 //@version=4 strategy("BO - Woodies CCI - Backtesting") //strategy.risk.max_intraday_loss(1, strategy.cash) // === INPUT PERIOD OF TIME === 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 = 2020, 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 ===") Time_zone = input(7,title="Time Zone") FromHourDvM = input(defval = 07, title = "From Hour", minval = 00, maxval = 23) FromMinuteDvM = input(defval = 30, title = "From Minute", minval = 00, maxval = 59) ToHourDvM = input(defval = 18, title = "To Hour", minval = 00, maxval = 23) ToMinuteDvM = input(defval = 00, title = "To Minute", minval = 00, maxval = 59) GMT_FHDvM=FromHourDvM<Time_zone?FromHourDvM-Time_zone+24:FromHourDvM-Time_zone GMT_THDvM=ToHourDvM<Time_zone?ToHourDvM-Time_zone+24:ToHourDvM-Time_zone 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) htrtime = input(true,title="Highlight Trading Time") bgcolor(htrtime? t0_DvM? color.gray : na:na, title="Trading Time", transp=90) // //fh_ott= (GMT_FHDvM<10?"0"+tostring(GMT_FHDvM):tostring(GMT_FHDvM)) //fm_ott= (FromMinuteDvM<10?"0"+tostring(FromMinuteDvM):tostring(FromMinuteDvM)) //th_ott= fh_ott //tm_ott= (FromMinuteDvM+5<10?"0"+tostring(FromMinuteDvM+5):tostring(FromMinuteDvM+5)) //trading_time_open = fh_ott+fm_ott+"-"+th_ott+tm_ott //t1 = time(timeframe.period, trading_time_open) //Woodies CCI cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=1400) cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=2000) source = close cciTurbo = cci(source, cciTurboLength) cci14 = cci(source, cci14Length) last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0 last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0 histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.gray : color.gray //Plot Woodies CCI plot(cci14, title="CCI Histogram", color=histogramColor, style=plot.style_histogram, linewidth=2, transp=40) plot(0, title="Zero Line", color=cciTurbo>100?color.blue:cciTurbo<-100?color.red:color.navy, style=plot.style_line, linewidth=6, transp=20) hline(200, title="Hundred Line", color=color.black, linestyle=hline.style_dotted) hline(-200, title="Minus Line", color=color.black, linestyle=hline.style_dotted) //Plot lingreg CCI14 linreg_cci14=linreg(cci14, 5, 0) plot(linreg_cci14, color=color.aqua, linewidth=4) // ext_linreg=input(120,title="Extreme Level") //peak & top peak_cci= linreg_cci14[2]>linreg_cci14[3] and linreg_cci14[1]>linreg_cci14[2] and linreg_cci14[0]<linreg_cci14[1] and linreg_cci14[1]>ext_linreg bott_cci= linreg_cci14[2]<linreg_cci14[3] and linreg_cci14[1]<linreg_cci14[2] and linreg_cci14[0]>linreg_cci14[1] and linreg_cci14[1]<-ext_linreg peak_cci_1= linreg_cci14[2]>linreg_cci14[3] and linreg_cci14[1]>linreg_cci14[2] and linreg_cci14[0]<linreg_cci14[1] bott_cci_1= linreg_cci14[2]<linreg_cci14[3] and linreg_cci14[1]<linreg_cci14[2] and linreg_cci14[0]>linreg_cci14[1] // fil_len=input(3,title="Filter Length") top_ext=highest(cci14,fil_len) bot_ext=lowest(cci14,fil_len) //Put signal x1= peak_cci and cci14[1]==top_ext and linreg_cci14[1]>valuewhen(peak_cci_1,linreg_cci14[1],1) and close>low[1] and cciTurbo<100 and cci14<linreg_cci14 //Call signal y1= bott_cci and cci14[1]==bot_ext and linreg_cci14[1]<valuewhen(bott_cci_1,linreg_cci14[1],1) and close<high[1] and cciTurbo>-100 and cci14>linreg_cci14 no_orders = not strategy.opentrades //Stoploss //stop_tt=input(true,"Stoploss Option By Intraday's Loss Trades") //stop_val=input(0,"Number of loss trades") //stop_loss=strategy.losstrades-strategy.losstrades[barssince(t1)]==stop_val //Function xTech= x1 and no_orders //and (not stop_loss or stop_val==0) yTech= y1 and no_orders //and (not stop_loss or stop_val==0) //Plot Analyzing Signals //hline1=hline(-1.2*300) hline2=hline(-1.6*300) hline0=hline(0) sigtext= xTech?"Put signal":yTech?"Call signal": "Backtesting From: "+tostring(FromDay)+"/"+tostring(FromMonth)+"/"+tostring(FromYear)+" To: "+tostring(ToDay)+"/"+tostring(ToMonth)+"/"+tostring(ToYear) + " * Trading Time From: "+tostring(FromHourDvM)+":"+tostring(FromMinuteDvM)+" To "+tostring(ToHourDvM)+":"+tostring(ToMinuteDvM) sig_col=xTech?color.new(color.red,10):yTech?color.new(color.blue,10):color.new(color.navy,10) label_sig_text = label.new(bar_index[0], -1.5*300, text=sigtext, style=label.style_none, textcolor=sig_col, size=size.large) label.delete(label_sig_text[1]) //plot Signal putcol = xTech? color.red : na callcol = yTech? color.blue : na PutSignal= xTech and window() and t0_DvM?-1.2*300:na CallSignal= yTech and window() and t0_DvM?-1.2*300: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.circle, location=location.absolute, color=color.red, textcolor=color.black, offset=1, transp=0, size=size.large) plotshape(CallSignal, title='Call', text="Call", style=shape.circle, location=location.absolute, color=color.blue, textcolor=color.black, offset=1, transp=0, size=size.large) //plotchar(PutSignal, title='Put', char="◉", text="Put", location=location.absolute, color=color.red, textcolor=color.black, offset=1, transp=0, size=size.small) //plotchar(CallSignal, title='Call', char="◉", text="Call", location=location.absolute, color=color.blue, textcolor=color.black, offset=1, transp=0, size=size.small) //Backtesting exp_tt=input(true,"Expiry Option By Bars") exp_val=input(6,"Number of Bars") strategy.entry("Call", strategy.long, when=yTech and window() and t0_DvM) strategy.entry("Put", strategy.short, when=xTech and window() and t0_DvM) strategy.close_all(when=barssince(xTech)==exp_val or barssince(yTech)==exp_val) //EOF
lệnh level 3 vừa xong win đẹp quá, keke, đã chuyển sang level 4haha hay k bằng hên bác nhỉ
https://facenim.blogspot.com/2020/03/chi-bao-ppa-cho-bo-co-xac-suat-cao.html?m=1lệnh level 3 vừa xong win đẹp quá, keke, đã chuyển sang level 4
![]()
Hihi, cũng hay á, cứ 6 nến xanh theo xanh 5', 6 nến đỏ theo đỏ 5', bộ 6 nến gồm M1-M5-M15-M30-H1-H4. Để tối code backtest thử xemhttps://facenim.blogspot.com/2020/03/chi-bao-ppa-cho-bo-co-xac-suat-cao.html?m=1
lang thang thấy cái này cũng tính xác suất mà e thấy nó kì kì s á hehe. rảnh bác đọc qua xem có gì hay ho k ạ![]()
@vĩnh0902 hình như ở HN đúng ko? Cuối tuần ở nhà đóng cửa nghiên cứu BO đừng đi chơi chỗ đông người nhé, lucky trading!
Cái này đơn giản màyes huhu nửa đêm nghe tin buồn quá bác ơi... https://facenim.blogspot.com/2020/03/chien-luoc-hai-hanh-lang.html?m=1 cái này lâu rồi nhưng mà e test trên mt4 thấy winrate cũng đk bác ạ cơ mà ít lệnh lắm k biet bác code dk k
hjhj coder chuyên nghiệp có khácCái này đơn giản mà![]()
Cái này là sở trường của RSI. Chỉ báo tốt nhất về kháng cự và hỗ trợ. Chỉ cần vạch ra được vùng kháng cự và hỗ trợ của rsi dựa vào đỉnh và đáy của rsi gần nhất (giá trị 2 hành lang đỏ và xanh sẽ linh hoạt chứ ko cố định như bài vĩnh đưa). Chiến lược của bài viết đó là đợi rsi phá vỡ vùng hỗ trợ và kháng cự, sau đó quay lại test vùng này, sau nữa là rsi ko thể phá vỡ vùng kháng cự hoặc hỗ trợ mà nó đang test, lúc này chúng ta sẽ tham gia vào giao dịch cùng hướng với hướng phá vỡ với lợi lợi thế giá đang có vị thế tốt hơn thời điểm phá vỡ (giá đang thấp so với lúc phá lên, giá đang cao so với lúc phá xuống). Chỉ cần logic đó cũng thấy là chiến lược này sẽ vô cùng ít lệnh rùiyes huhu nửa đêm nghe tin buồn quá bác ơi... https://facenim.blogspot.com/2020/03/chien-luoc-hai-hanh-lang.html?m=1 cái này lâu rồi nhưng mà e test trên mt4 thấy winrate cũng đk bác ạ cơ mà ít lệnh lắm k biet bác code dk k
hjhj bác mà làm cả vê thuyết trình dạy khoá học có khi lại đông khách keke diễn tả đâu vào đấy tại hạ khâm phụcCái này là sở trường của RSI. Chỉ báo tốt nhất về kháng cự và hỗ trợ. Chỉ cần vạch ra được vùng kháng cự và hỗ trợ của rsi dựa vào đỉnh và đáy của rsi gần nhất (giá trị 2 hành lang đỏ và xanh sẽ linh hoạt chứ ko cố định như bài vĩnh đưa). Chiến lược của bài viết đó là đợi rsi phá vỡ vùng hỗ trợ và kháng cự, sau đó quay lại test vùng này, sau nữa là rsi ko thể phá vỡ vùng kháng cự hoặc hỗ trợ mà nó đang test, lúc này chúng ta sẽ tham gia vào giao dịch cùng hướng với hướng phá vỡ với lợi lợi thế giá đang có vị thế tốt hơn thời điểm phá vỡ (giá đang thấp so với lúc phá lên, giá đang cao so với lúc phá xuống). Chỉ cần logic đó cũng thấy là chiến lược này sẽ vô cùng ít lệnh rùi![]()
Mình chạy từ 7h30, con woodies này thực sự quá ngon, đang cố rút xuống mỗi ngày chỉ 2 tín hiệu thôi, hiện tại trung bình nó từ 3-4 tín hiệu lận, nếu giảm đc số tín hiệu thì có thể yên tâm đi đều vốn, ko cần phải canh nữa, yên tâm để macro độc lập tác chiếnchạy từ 7h thì 3-0 r bác nhỉ kekechúc mừng bác nhe take profit dk rồi đó bác
vừa win 1 lệnh từ hôm qua đến h win 100% bác ạMình chạy từ 7h30, con woodies này thực sự quá ngon, đang cố rút xuống mỗi ngày chỉ 2 tín hiệu thôi, hiện tại trung bình nó từ 3-4 tín hiệu lận, nếu giảm đc số tín hiệu thì có thể yên tâm đi đều vốn, ko cần phải canh nữa, yên tâm để macro độc lập tác chiến![]()
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.
Tất cả nội dung trên website này đều vì mục đích cung cấp thông tin và không phải lời khuyên đầu tư.
Tại Việt Nam, giao dịch CFD forex có các rủi ro nhất định, trong đó bao gồm rủi ro về pháp lý. Độc giả nên tìm hiểu kỹ trước khi đưa ra quyết định tham gia.