Chiến lược giao dịch đảo ngược đáy định lượng thông minh

Tác giả:ChaoZhang, Ngày: 2023-12-08 10:45:49
Tags:

img

Tổng quan

Chiến lược này là một chiến lược giao dịch đảo ngược đáy định lượng thông minh được thiết kế cho tiền điện tử. Nó sử dụng công nghệ nhiều khung thời gian và chỉ số RSI thích nghi để xác định đáy ngắn hạn tiềm năng của thị trường, và đi vào đảo ngược gần đáy để đạt được lợi nhuận quá mức.

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

Đầu tiên, chiến lược sử dụng thay đổi giá và khối lượng giao dịch để tính toán chỉ số RSI thích nghi, đánh giá các đáy thị trường ngắn hạn có thể. Sau đó, kết hợp với công nghệ nhiều khung thời gian, nó xác nhận các tín hiệu đáy trên một khung thời gian lớn hơn.

Cụ thể, chỉ số RSI thích nghi được tính như sau: Đầu tiên tính toán sự thay đổi giá cho mỗi ngọn nến, sau đó tính toán khối lượng giao dịch của ngọn nến đó. Nâng hai để có được động lực định lượng cho ngọn nến đó. Áp dụng tính toán RSI trên động lực định lượng và lấy trung bình thời gian N để có được chỉ số RSI thích nghi cuối cùng. Chỉ số này có thể xác định rõ đáy thị trường.

Ngoài ra, chiến lược này kết hợp công nghệ nhiều khung thời gian để đánh giá tín hiệu trên khung thời gian cao hơn, tránh sự can thiệp của tiếng ồn thị trường ngắn hạn.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này nằm ở việc xác định chính xác đáy thị trường ngắn hạn bằng cách sử dụng chỉ số RSI thích nghi, cung cấp các tín hiệu hiệu quả cho giao dịch đảo ngược đáy.

So với các chỉ số RSI truyền thống, chỉ số RSI thích nghi giới thiệu động lực định lượng trong tính toán của nó, làm cho nó nhạy cảm hơn với thị trường tiền điện tử thay đổi nhanh chóng và do đó có thể xác định đáy sớm hơn và chính xác hơn, cung cấp một khởi đầu cho giao dịch đảo ngược đáy.

Ngoài ra, chiến lược này kết hợp cả hai lợi thế của việc theo xu hướng và giao dịch đảo ngược. Trong điều kiện thị trường không chắc chắn, nó có thể kiếm lợi từ giao dịch đảo ngược. Trong thị trường tăng rõ ràng, nó cũng có thể theo xu hướng.

Phân tích rủi ro

Rủi ro chính của chiến lược này là độ chính xác của việc xác định đáy không thể được đảm bảo 100%. Có thể có những biến động không hợp lý lớn trên thị trường trong ngắn hạn. Nếu đáy kéo dài xuống hơn, rủi ro dừng lỗ lớn sẽ phải đối mặt.

Ngoài ra, sự khác biệt có thể xảy ra giữa các khung thời gian khác nhau.

Để kiểm soát rủi ro, chiến lược này áp dụng các cơ chế dừng lỗ tương đối bảo thủ và lấy lợi nhuận theo lô, dần dần tối ưu hóa lợi nhuận. Ngoài ra, các tham số của chỉ số RSI thích nghi có thể được điều chỉnh để tối ưu hóa độ chính xác trong đánh giá đáy.

Hướng dẫn tối ưu hóa

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

  1. Tối ưu hóa các thông số của chỉ số RSI thích nghi để cải thiện độ chính xác trong phán đoán đáy thị trường. Các thông số giai đoạn khác nhau có thể được thử nghiệm.

  2. Thêm các chỉ số khác để xác nhận để tránh tín hiệu sai, chẳng hạn như kết hợp với các chỉ số âm lượng vv.

  3. Tối ưu hóa cơ chế dừng lỗ để cho phép phạm vi dừng lỗ rộng hơn trong khi đảm bảo tỷ lệ rủi ro-lợi nhuận tốt, để nắm bắt nhiều lợi nhuận xu hướng hơn.

  4. Tối ưu hóa lựa chọn khung thời gian để đảm bảo độ tin cậy tín hiệu trên quy mô lớn hơn.

  5. Kiểm tra chiến lược này trên các sản phẩm tiền điện tử khác nhau và chọn những sản phẩm có hiệu suất tốt nhất.

Tóm lại

Chiến lược giao dịch đảo ngược đáy định lượng thông minh này xác định đáy ngắn hạn tiềm năng bằng cách sử dụng chỉ số RSI thích ứng và công nghệ nhiều khung thời gian. Bản chất đảo ngược của nó cho phép lợi nhuận quá mức trong điều kiện thị trường không chắc chắn, đồng thời có thể theo dõi xu hướng rõ ràng. Với tối ưu hóa liên tục, chiến lược này có tiềm năng tạo ra các tín hiệu giao dịch đáng tin cậy hơn và đạt được lợi nhuận ổn định lâu dài.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Low Scanner strategy crypto", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(10)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("60", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(1)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("60", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
l = crossover(zx,0) or buy
        
if l 
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=10, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=1, minval=0.01)
tp2=input(title=" Take profit2", defval=2, minval=0.01)
tp3=input(title=" Take profit3", defval=3, minval=0.01)
tp4=input(title=" Take profit4", defval=5, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


Thêm nữa