Chiến lược theo dõi đảo ngược dựa trên bộ dao động dải biến động


Ngày tạo: 2023-11-23 13:42:03 sửa đổi lần cuối: 2023-11-23 13:42:03
sao chép: 0 Số nhấp chuột: 670
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi đảo ngược dựa trên bộ dao động dải biến động

Tổng quan

Chiến lược này dựa trên các chỉ số CCT Bollinger Band Oscillator của Steve Karnish, để thực hiện giao dịch đảo ngược bằng cách xác định mức giá phá vỡ đường trung bình và kết hợp với cơ chế rút lui.

Nguyên tắc chiến lược

Chiến lược này sử dụng giá cao làm dữ liệu nguồn, sau đó tính giá trị của dao động băng tần CCT. Giá trị của dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động dao động

Phân tích lợi thế

  • Sử dụng chỉ số vibrator CCT có ảnh hưởng đến thị trường, có thể giảm tín hiệu giả
  • Kết hợp tín hiệu lọc EMA trung bình và điều kiện biên để tránh quá nhiều giao dịch vô hiệu trong quá trình chấn động
  • Sử dụng cơ chế dừng lỗ rút lại, có thể dừng lỗ kịp thời khi lỗ quá lớn

Phân tích rủi ro

  • Các máy biến động CCT tự nó tạo ra một sự chậm trễ, do đó bỏ lỡ thời điểm tốt nhất để giá đảo ngược
  • Thiết lập biên quá lớn và thời gian EMA quá ngắn đều làm tăng tần suất giao dịch và rủi ro
  • Việc rút lại các thiết lập dừng lỗ quá lỏng lẻo sẽ làm tăng nguy cơ thua lỗ.

Phương pháp kiểm soát rủi ro:

  • Điều chỉnh chu kỳ đường trung bình của EMA, sử dụng bộ lọc chu kỳ dài hơn
  • Điều chỉnh phù hợp mức biên để cân bằng rủi ro và lợi nhuận
  • Giảm tỷ lệ vị trí để kiểm soát tổn thất đơn
  • Giảm phạm vi rút lỗ một cách thích hợp, tăng tốc độ dừng lỗ

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thay thế các chỉ số biến động khác, chẳng hạn như chỉ số BRI, Keltner Channel, để xác định điểm mua và bán
  2. Thêm các chỉ số lọc khác như MACD, RSI, v.v. để đảm bảo tín hiệu giao dịch đáng tin cậy
  3. Sử dụng thuật toán học máy để tự động tối ưu các tham số như chu kỳ EMA, giá trị biên, v.v.
  4. Tăng cơ chế quản lý vị trí, như vị trí tỷ lệ cố định, Martingale, để kiểm soát rủi ro giao dịch
  5. Tối ưu hóa các cơ chế dừng rút lỗ, sử dụng các phương pháp như dừng biến động hoặc dừng ATR

Tóm tắt

Chiến lược này nói chung là một chiến lược giao dịch định lượng dựa trên chỉ số CCT để xác định giá đảo ngược. Nó có một số lợi thế, nhưng cũng có chỗ để cải thiện. Bằng cách tối ưu hóa tham số, thêm các chỉ số lọc, sử dụng kỹ thuật tính năng, giới thiệu máy học, các phương pháp khác, có thể tăng cường sự ổn định và lợi nhuận của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)