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


Ngày tạo: 2023-10-07 15:12:08 sửa đổi lần cuối: 2023-10-07 15:12:08
sao chép: 0 Số nhấp chuột: 782
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này cho phép giao dịch ngắn hạn với Bitcoin bằng cách tính toán chỉ số sức mạnh thực sự của Bitcoin (True Strength Index, TSI) để xác định xu hướng thị trường và kết hợp với bộ lọc chỉ số RSI để thực hiện nhiều thời gian ngắn hạn. Chiến lược này phù hợp với các nhà đầu tư giao dịch theo quy trình trên thị trường Bitcoin.

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

Chiến lược này chủ yếu dựa trên chỉ số sức mạnh thực sự (TSI). Chỉ số TSI đo lường kích thước và hướng của giá cả thay đổi bằng tỷ lệ biến đổi giá bằng hai đường trượt, để xác định sức mạnh tuyệt đối của giá tăng và giảm. Các phương pháp tính toán cụ thể như sau:

  1. Tính toán tỷ lệ thay đổi giá
  2. PC được làm mịn đôi, sử dụng EMA dài và EMA ngắn, tạo ra double_smoothed_pc
  3. Double-smoothed_abs_pc được tạo ra bằng cách làm mịn đôi giá trị tuyệt đối PC
  4. Giá trị TSI là double_smoothed_pc chia cho double_smoothed_abs_pc nhân 100

Ngoài ra, chiến lược này cũng kết hợp các chỉ số RSI để lọc tín hiệu giao dịch TSI, chỉ tạo ra tín hiệu đa khi giá trị RSI lớn hơn 50 và tín hiệu trống khi giá trị RSI nhỏ hơn 50, để lọc một số tín hiệu giả.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Chỉ số TSI có khả năng nhận biết cường độ và hướng tuyệt đối của biến động giá và nhạy cảm hơn với xu hướng bắt.
  2. Tỷ lệ thay đổi giá của EMA kép được làm mịn, có thể loại bỏ hiệu quả tiếng ồn thay đổi giá, không nhạy cảm với sự kiện bất ngờ.
  3. Kết hợp với bộ lọc chỉ số RSI, bạn có thể tránh thêm các giao dịch sai do tiếng ồn.
  4. Sử dụng phương thức giao dịch ngắn hạn để nắm bắt cơ hội ngắn hạn trên thị trường.
  5. Các tham số chiến lược có nhiều chỗ để tối ưu hóa, có thể được tối ưu hóa bằng cách điều chỉnh các tham số như chu kỳ EMA.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

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

Có thể làm giảm hiệu ứng sóng và sự chậm trễ bằng cách nới lỏng các điều kiện lọc RSI, rút ngắn chu kỳ EMA. Đồng thời, tối ưu hóa chiến lược dừng lỗ và kiểm soát chặt chẽ rủi ro giao dịch đơn 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. Tối ưu hóa các tham số của TSI và RSI, tìm ra sự kết hợp tốt nhất của các tham số. Bạn có thể điều chỉnh chu kỳ EMA dài hoặc ngắn, tham số RSI, v.v.

  2. Thêm các chỉ số khác để tạo ra mô hình đa yếu tố. Ví dụ: có thể thêm các chỉ số như MA, KD để tận dụng tối đa các lợi thế của các chỉ số.

  3. Tối ưu hóa các điều kiện nhập cảnh, tránh nhiều thị trường bị va chạm, nhiều thị trường bị va chạm. Bạn có thể đánh giá hướng theo xu hướng chu kỳ lớn.

  4. Tối ưu hóa các chiến lược dừng lỗ, chẳng hạn như dừng di chuyển, dừng thời gian, phá vỡ dừng lỗ.

  5. Tối ưu hóa điều kiện ra sân, ngăn chặn thiệt hại ra sân quá sớm hoặc quá muộn. Bạn có thể kết hợp với chỉ số tỷ lệ dao động để xác định khi ra sân.

  6. Tối ưu hóa các loại và thời điểm giao dịch, tập trung vào các loại và thời điểm giao dịch hiệu quả nhất.

Tóm tắt

Chiến lược này sử dụng các chỉ số thực sự mạnh mẽ để xác định xu hướng ngắn hạn của bitcoin và được hỗ trợ bởi các tín hiệu lọc của chỉ số RSI, có thể thực hiện giao dịch lập trình ngắn hạn của bitcoin một cách hiệu quả. Chiến lược này có lợi thế trong việc xác định xu hướng nhạy cảm, loại bỏ tiếng ồn, nhưng cũng có một số vấn đề và rủi ro giao dịch. Bằng cách tối ưu hóa nhiều mặt, bạn có thể nâng cao hơn nữa hiệu suất của chiến lược và phát triển một cố vấn chuyên gia giao dịch bitcoin đáng tin cậy.

Mã nguồn chiến lược
/*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)