
Chiến lược này sử dụng nhiều chỉ số kỹ thuật kết hợp với nhau để đưa ra quyết định giao dịch hai chiều dài và ngắn. Các chỉ số bao gồm các chỉ số như đường Brin, RSI, ADX, đồng thời kết hợp với đường cân bằng để đánh giá xu hướng.
Chiến lược này chủ yếu được dùng để đánh giá tình trạng biến động giá bằng đường Bollin, đường Bollin thu hẹp đại diện cho sự biến động giá giảm, có thể có đột phá; đồng thời kết hợp với RSI để đánh giá hiện tượng bán tháo quá mức, RSI cao hơn 70 là vùng mua quá mức, thấp hơn 30 là vùng bán tháo quá mức. Khi đường Bollin thu hẹp, khi chỉ số RSI gần vùng mua quá mức, giao dịch ngược lại.
Ngoài ra, chiến lược này cũng sử dụng ADX để xác định cường độ của xu hướng giá. Khi ADX cao, đại diện cho xu hướng mạnh mẽ, bạn có thể chọn giao dịch theo xu hướng; Khi ADX thấp, đại diện cho không có xu hướng rõ ràng, bạn có thể xem xét giao dịch ngược. Cuối cùng, kết hợp với đường ngang để xác định hướng xu hướng dài hạn, nếu giá trong xu hướng tăng, bạn có thể xem xét mua; Nếu giá trong xu hướng giảm, bạn có thể xem xét bán.
Cụ thể, khi Bollinger Bands thu hẹp, chỉ số RSI gần khu vực mua bán quá mức và giá giảm xuống đường, cho rằng thị trường có thể phục hồi, thì hãy xem xét nhiều hơn; khi Bollinger Bands thu hẹp, chỉ số RSI gần khu vực bán quá mức và giá phá vỡ đường đua, cho rằng thị trường có thể giảm xuống, thì hãy xem xét lỗ. Ngoài ra, nếu ADX cao, giá có xu hướng tăng, bạn có thể đặt nhiều hơn; nếu ADX thấp, giá có xu hướng giảm, bạn có thể đặt lỗ.
Chiến lược kết hợp nhiều chỉ số này có những lợi thế sau:
Cân nhắc tổng hợp nhiều chỉ số kỹ thuật, tăng độ chính xác và độ ổn định của tín hiệu giao dịch. Chỉ số đơn dễ bị lừa dối như phá vỡ giả, kết hợp nhiều chỉ số có thể xác minh tín hiệu, tránh giao dịch sai.
Cân nhắc cả xu hướng và biến động, có thể thích ứng với các tình huống thị trường khác nhau, có tính linh hoạt. Giao dịch theo xu hướng theo đuổi xu hướng lớn, mục tiêu giao dịch biến động nhỏ.
Trong khi đó, có thể giảm rủi ro vị trí của thị trường đơn phương và phòng ngừa tình huống cực đoan.
Thiết lập một điểm dừng lỗ để giới hạn một số lợi nhuận và tổn thất khi các vị trí đi sai.
Bằng cách tối ưu hóa các tham số, bạn có thể liên tục nâng cao hiệu quả chiến lược và thích ứng với sự thay đổi của thị trường.
Chiến lược này cũng có một số rủi ro cần lưu ý:
Sự kết hợp nhiều chỉ số làm tăng sự phức tạp của chiến lược, thiết lập tham số không đúng cách có thể làm giảm hiệu quả. Cần kiểm tra đầy đủ và tối ưu hóa.
Sự phụ thuộc quá nhiều vào các chỉ số kỹ thuật và bỏ qua các thông tin cơ bản có thể dẫn đến tín hiệu giao dịch không chính xác.
Khi chỉ số tạo ra tín hiệu, thị trường có thể đã có một số thay đổi, có nguy cơ theo đuổi đà tăng và giảm. Cần chờ đợi một cách thích hợp để gọi lại.
Multi-Stock Binary Options làm tăng tần suất giao dịch, chi phí phí và áp lực tài chính.
Có một số rủi ro phù hợp với đường cong, tốt nhất là thử nghiệm sức mạnh của chiến lược trong nhiều thị trường.
Có thể kiểm soát rủi ro bằng các phương pháp như dừng lỗ nghiêm ngặt, đặt cược thận trọng và kiểm soát vị trí hợp lý. Nhìn chung, chiến lược này có tính thực tế mạnh mẽ.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Kiểm tra các kết hợp tham số khác nhau để tìm tham số tối ưu. Các tham số có thể được tối ưu hóa bằng các phương pháp như tiến trình từng bước, tìm kiếm ngẫu nhiên, thuật toán di truyền.
Thêm nhiều chỉ số, như KDJ, William chỉ số, để tạo ra các nhóm chỉ số, tăng cường sự ổn định của chiến lược.
Tối ưu hóa quản lý vị thế, kiểm soát rủi ro bằng cách điều chỉnh vị thế động.
Kết hợp với các thuật toán học máy, sử dụng mô hình định lượng để đánh giá xu hướng giá cả và xu hướng trong tương lai.
Thử nghiệm trong các giống, thời gian và thị trường khác nhau để cải thiện khả năng thích ứng của chiến lược.
Tối ưu hóa thời gian nhập cảnh và thời gian xuất cảnh bằng cách chụp xu hướng ở giai đoạn đầu và thoát trước khi đảo ngược.
Sử dụng các phương pháp như Stop Loss Tracking, Move Stop để khóa lợi nhuận và kiểm soát rủi ro.
Thêm các yếu tố cơ bản, phân tích cấu trúc thị trường để lọc tín hiệu của các chỉ số kỹ thuật.
Chiến lược này có các lợi thế như xác nhận nhóm chỉ số, giao dịch hai chiều, dừng lỗ, và có thể cải thiện hiệu quả giao dịch. Tuy nhiên, cũng cần chú ý đến các vấn đề như tối ưu hóa, tín hiệu giả. Bằng cách liên tục tối ưu hóa thử nghiệm, chiến lược có thể trở thành một hệ thống giao dịch định lượng ổn định và thực tế. Nó đại diện cho hướng phát triển của thiết kế chiến lược giao dịch định lượng.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)
//RSI
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up1 = ta.change(high)
down1 = -ta.change(low)
plusDM = na(up1) ? na : (up1 > down1 and up1 > 0 ? up1 : 0)
minusDM = na(down1) ? na : (down1 > up1 and down1 > 0 ? down1 : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
out = ta.sma(close, 14)
sma1=ta.sma(close,55)
ema200=ta.ema(close,200)
longCondition = (out>sma1) and ta.crossover(source1, lower1)
if (longCondition )
strategy.entry("long", strategy.long)
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)
if (shortCondition )
strategy.entry("short", strategy.short)
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100
strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))
//if strategy.position_avg_price<0
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)