Chiến lược giao dịch ngắn hạn Bitcoin dựa trên chỉ số sức mạnh thực sự

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

Tổng quan

Chiến lược này xác định xu hướng thị trường bitcoin bằng cách tính toán chỉ số True Strength Index (TSI) và nhập các vị trí dài / ngắn được lọc bởi chỉ số RSI để thực hiện giao dịch thuật toán của bitcoin. Nó phù hợp với các nhà đầu tư muốn giao dịch dữ liệu tick bitcoin theo chương trình.

Chiến lược logic

Cốt lõi của chiến lược này là Chỉ số Sức mạnh thực sự (TSI). TSI đo lường mức độ tuyệt đối và hướng thay đổi giá bằng cách làm bằng đôi tỷ lệ thay đổi giá phần trăm, do đó xác định sức mạnh tuyệt đối của chuyển động giá lên và xuống.

  1. Tính toán tỷ lệ thay đổi giá Pc
  2. Double smooth Pc sử dụng EMA dài hạn và EMA ngắn hạn để tạo double_smoothed_pc
  3. Đơn giản gấp đôi giá trị tuyệt đối của Pc để tạo double_smoothed_abs_pc
  4. Giá trị TSI bằng double_smoothed_pc chia cho double_smoothed_abs_pc nhân 100

Khi TSI vượt qua đường tín hiệu tsi2, một tín hiệu dài được tạo ra. Khi TSI vượt qua dưới tsi2, một tín hiệu ngắn được tạo ra. Ngoài ra, chiến lược lọc tín hiệu TSI với RSI - chỉ lấy tín hiệu dài khi RSI trên 50 và tín hiệu ngắn khi RSI dưới 50, để tránh một số tín hiệu sai.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. TSI có thể phát hiện sức mạnh tuyệt đối và hướng của chuyển động giá, và nhạy cảm trong việc nắm bắt xu hướng.
  2. EMA đôi làm mịn mượt tỷ lệ thay đổi giá và có khả năng chống lại tiếng ồn thị trường và tăng cao.
  3. Bộ lọc RSI tiếp tục tránh các giao dịch sai do tiếng ồn.
  4. Giao dịch ngắn hạn cho phép nắm bắt các cơ hội tạm thời trên thị trường.
  5. Chiến lược có không gian điều chỉnh tham số lớn để tối ưu hóa, như thời gian EMA, tham số RSI v.v.

Phân tích rủi ro

Những rủi ro của chiến lược này bao gồm:

  1. Là một chỉ số theo xu hướng, TSI có phát hành chậm và có thể bỏ lỡ các điểm đảo ngược giá.
  2. Điều kiện lọc RSI quá nghiêm ngặt và có thể bỏ lỡ một số cơ hội giao dịch.
  3. Bộ lọc EMA đôi cũng có thể lọc một số tín hiệu hợp lệ.
  4. Tần suất giao dịch cao của giao dịch ngắn hạn mang lại chi phí giao dịch cao hơn và rủi ro trượt.

Việc phát hành chậm và hiệu ứng lọc có thể được giảm bằng cách nới lỏng các quy tắc lọc RSI và rút ngắn thời gian EMA. Chiến lược dừng lỗ thích hợp nên được sử dụng để kiểm soát chặt chẽ rủi ro trên mỗi giao dịch.

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

Chiến lược 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ố TSI và RSI để tìm sự kết hợp tốt nhất.

  2. Tạo thêm các chỉ số kỹ thuật để xây dựng một mô hình đa yếu tố. MA, KD vv có thể được thêm vào để tận dụng lợi thế của mỗi chỉ số.

  3. Tối ưu hóa các quy tắc nhập cảnh để tránh dài trong xu hướng giảm và ngắn trong xu hướng tăng.

  4. Tối ưu hóa các chiến lược dừng lỗ như dừng lỗ sau, dừng lỗ dựa trên thời gian, dừng lỗ đột phá vv

  5. Tối ưu hóa các quy tắc thoát để tránh thoát sớm hoặc muộn Các chỉ số biến động có thể giúp xác định các điểm thoát thích hợp.

  6. Tối ưu hóa các sản phẩm giao dịch, các phiên giao dịch để tập trung vào những sản phẩm hiệu quả nhất.

Kết luận

Chiến lược này xác định xu hướng ngắn hạn của bitcoin với Chỉ số Sức mạnh Thực sự và lọc tín hiệu với RSI cho giao dịch bitcoin thuật toán. Nó có lợi thế nắm bắt các xu hướng và lọc tiếng ồn một cách nhạy cảm, nhưng cũng có một số vấn đề chậm trễ và rủi ro giao dịch.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// strategy("True Strength Indicator BTCUSD 15p", shorttitle="TSI BTCUSD 15p",initial_capital=1000, commission_value=0.15, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity)

//BASED ON True Strength Indicator MTF
resCustom = input(title="Timeframe",  defval="15" )
long = input(title="Long Length",  defval=25)
short = input(title="Short Length",  defval=13)
signal = input(title="Signal Length",  defval=13)
price = request.security(syminfo.tickerid,resCustom,close)


double_smooth(src, long, short) =>
    fist_smooth = ta.ema(src, long)
    ta.ema(fist_smooth, short)
pc = ta.change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi2=ta.ema(tsi_value, signal)
plot(tsi_value, color=color.lime,linewidth=2)
plot(tsi2, color=color.red,linewidth=2)




rsiserie = ta.rsi(price,7)
cciserie = ta.cci(price,14)
stochserie = ta.stoch(price,14,3,3)

plot(rsiserie,color=color.purple)



hline(30, title="Zero")
hline(50, title="Zero",linestyle=hline.style_solid, linewidth=2)
hline(70, title="Zero")

buy = ta.crossover(tsi_value, tsi2) //and rsiserie[1]<25 //and cciserie<-100 and stochserie<20
sell = ta.crossunder(tsi_value, tsi2) //and rsiserie[1]>85 //and cciserie>100 and stochserie>80


alertcondition(buy, title='TSI system', message='Buy signal at!' )
alertcondition(sell, title='TSI system', message='Sell signal at!' )

strategy.entry("BUY", strategy.long, 1, when = buy)
strategy.entry("SELL", strategy.short, 1, when = sell ) 

greentsi =tsi_value
redtsi = tsi2

bgcolor( greentsi>redtsi and rsiserie > 50 ? color.lime : na, transp=90)
bgcolor( greentsi<redtsi and rsiserie < 50 ? color.red : na, transp=90)

yellow1= redtsi > greentsi and rsiserie > 50 
yellow2 = redtsi < greentsi and rsiserie < 50 
bgcolor( yellow1 ? yellow : na, transp=80)
bgcolor( yellow2  ? yellow : na, transp=50)

bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70)
bgcolor( yellow2  and yellow2[2] ? yellow : na, transp=70)

bgcolor( rsiserie > 70 ? color.lime : na, transp=60)
bgcolor( rsiserie < 30  ? color.red : na, transp=60)


Thêm nữa