Chiến lược dài hạn Bull-Bear dài hạn


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

Chiến lược dài hạn Bull-Bear dài hạn

Tổng quan

Chiến lược này xác định thời điểm mua thích hợp bằng cách tìm kiếm sự lệch nhiều đầu của chỉ số RSI để đánh giá thời điểm giá Bitcoin có thể tăng trở lại trong thời gian ngắn.

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

  1. Sử dụng chỉ số RSI để xác định sự lệch nhiều đầu

    • Định nghĩa tham số chỉ số RSI (tạm dịch: 14 chu kỳ)
    • Tính RSI hiện tại
    • Đánh giá sự khác biệt sau:
      • Chỉ số RSI có điểm thấp hơn
      • Giá cả đã giảm xuống thấp.
      • Sau đó là RSI.
      • Đây là thời điểm mà giá cả tăng và giảm.
  2. Xác định RSI dưới ngưỡng

    • Định nghĩa RSI điểm thấp xác định ngưỡng giới hạn ((bạn mặc định là 40)
    • Nếu RSI hiện tại thấp hơn ngưỡng này, có thể là thời điểm để mua
  3. Xác định giá đóng cửa thấp hơn mức thấp bắt đầu

    • Nếu có, hãy xác minh thêm từ tín hiệu mua
  4. Xác định điều kiện thoát lỗ

    • Thiết lập Stop Loss Percentage (bằng mặc định là 5%)
    • Nếu rút ra đạt đến tỷ lệ phần trăm đó, bạn sẽ dừng lỗ và rút ra
  5. Xác định điều kiện rút lợi nhuận

    • Thiết lập RSI cao điểm xác định ngưỡng giới hạn ((75 mặc định)
    • Nếu RSI tăng đến ngưỡng này, lợi nhuận sẽ rút ra.

Phân tích lợi thế

  1. Sử dụng chỉ số RSI để đánh giá độ lệch nhiều đầu, có thể nắm bắt hiệu quả thời gian của giá trong thời gian ngắn

  2. Kết hợp với RSI đánh giá điểm thấp, bạn có thể xác định vị trí mua cụ thể trước khi hồi phục

  3. Thiết lập các điều kiện dừng lỗ và ngăn chặn để quản lý rủi ro và lợi nhuận của giao dịch

  4. Chiến lược này tham khảo các đặc điểm của chỉ số RSI trong một số lượng lớn giao dịch Bitcoin thực và rất phù hợp cho Bitcoin short.

  5. Cài đặt tham số chiến lược hợp lý, có thể thích ứng với các tình huống thị trường khác nhau, có lợi cho ứng dụng trên thực tế

Phân tích rủi ro

  1. RSI có thể không hiệu quả, nếu sai, sẽ dẫn đến tổn thất giao dịch

  2. Chỉ số kỹ thuật đơn lẻ dễ tạo ra tín hiệu sai và nên được sử dụng kết hợp với các chỉ số khác

  3. Cần chọn giá trị tham số phù hợp, nếu thiết lập không đúng sẽ ảnh hưởng đến lợi nhuận của chiến lược

  4. Giao dịch đa chiều, cần chú ý đến xu hướng lớn, tránh hoạt động ngược

  5. Cần chú ý đến chi phí giao dịch, giao dịch quá thường xuyên sẽ ảnh hưởng đến thu nhập cuối cùng

  6. Các tham số tối ưu hóa nên được đánh giá lại thường xuyên, điều chỉnh chiến lược theo thị trường khác nhau

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

  1. Có thể xem xét thêm các chỉ số khác như đường trung bình di chuyển, thiết lập các điều kiện lọc, giảm tín hiệu giả

  2. Có thể thử nghiệm các thiết lập tham số của các chu kỳ khác nhau để tìm kiếm sự kết hợp tham số tốt nhất

  3. Bạn có thể kết hợp các đánh giá về xu hướng ở cấp độ lớn hơn để tránh làm nhiều hơn khi xu hướng đảo ngược

  4. Có thể thiết lập dừng động, khi lợi nhuận đạt đến một mức độ nhất định, điểm dừng sẽ tăng dần

  5. Có thể thiết lập mức dừng lỗ khác nhau tùy thuộc vào tình huống nắm giữ vị trí cụ thể

  6. Có thể giới thiệu các công nghệ như học máy để tự động tối ưu hóa các tham số

Tóm tắt

Chiến lược này xác định thời điểm mua bằng cách nắm bắt các chỉ số RSI đa đầu, đánh giá khả năng Bitcoin sẽ tăng trở lại trong thời gian ngắn. Chiến lược này đơn giản và hiệu quả, dựa trên nhiều kinh nghiệm thực tế, rất phù hợp với đường ngắn của Bitcoin. Tuy nhiên, chỉ số kỹ thuật đơn lẻ dễ tạo ra tín hiệu giả, cần được sử dụng với các chỉ số khác, đồng thời chú ý đến các vấn đề như tối ưu hóa tham số, thiết lập dừng lỗ, chi phí giao dịch.

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

//@version=5
strategy("Bullish Divergence Short-term Long Trade Finder", overlay=false)

max_range = 50 
min_range = 5
///pivot_left = 25
pivot_right = 5

//Inputs
src = input(close, title="Source")
rsiBearCondMin = input.int(50, title="RSI Bearish Condition Minimum")
rsiBearCondSellMin = input.int(60, title="RSI Bearish Condition Sell Min")
rsiBullCondMin = input.int(40, title="RSI Bull Condition Minimum")
pivot_left = input.int(25, title="Look Back this many candles")
SellWhenRSI = input.int(75, title="RSI Sell Value")
StopLossPercent = input.int(5, title="Stop loss Percentage")
rsiPeriod = input.int(14, title="RSI Length")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiOverbought = input.int(70, title="RSI Overbought Level")

//RSI Function/ value 
rsi_value = ta.rsi(src, rsiPeriod)
rsi_hour = request.security(syminfo.tickerid,'60',rsi_value)
rsi_4hour = request.security(syminfo.tickerid,'240',rsi_value)
rsi_Day = request.security(syminfo.tickerid,'D',rsi_value)
plot(rsi_value, title="RSI", linewidth = 2, color = color.black, display =display.all)
hline(50, linestyle = hline.style_dotted)
rsi_ob = hline(70, linestyle=hline.style_dotted)
rsi_os = hline(30, linestyle=hline.style_dotted)
fill(rsi_ob, rsi_os, color.white)
SL_percent = (100-StopLossPercent)/100 

pivot_low_true = na(ta.pivotlow(rsi_value, pivot_left, pivot_right)) ? false : true

//create a function that returns truee/false
confirm_range(x) => 
    bars = ta.barssince(x == true) //counts the number of bars since thee last time condition was true
    min_range <= bars and bars <= max_range // makees sure bars is less than max_range(50) and greater than min_range(5) 


// RSI higher check / low check
RSI_HL_check = rsi_value<rsiBullCondMin and rsi_value > ta.valuewhen(pivot_low_true and rsi_value<rsiBullCondMin, rsi_value,1) and confirm_range(pivot_low_true[1]) 

// price check for lower low
price_ll_check = low < ta.valuewhen(pivot_low_true, low, 1)

bullCond = price_ll_check and RSI_HL_check and pivot_low_true

//pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))  ? false : true
pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))   ? false : true

// RSI Lower check / high check ensuring that the RSI dips below 30 to start divergence 
RSI_LH_check = rsi_value < ta.valuewhen(pivot_high_true and rsi_value>rsiBearCondMin, rsi_value,1) and confirm_range(pivot_high_true[1]) //and rsi_value[pivot_right] >= 65

// price check for lower low
price_hh_check = high > ta.valuewhen(pivot_high_true, high, 1)

bearCond = price_hh_check and RSI_LH_check and pivot_high_true and rsi_value[3] > rsiBearCondSellMin

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bullCond ? color.green : color.new(color.white, 100)))

plotshape(bullCond ? rsi_value : na , text = "BUY", style =  shape.labelup, location = location.absolute, color = color.green, offset =0, textcolor = color.white )

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bearCond ? color.red : color.new(color.white, 100)))

plotshape(bearCond ? rsi_value : na , text = "Sell", style =  shape.labelup, location = location.absolute, color = color.red, offset =0, textcolor = color.white )
//[bbUpperBand, bbMiddleBand, bbLowerBand] = ta.bb(src, bbPeriod, bbDev)

//Entry Condition
longCondition = false

//bullEntry = bullCond and RSI_HL_check and confirm_range(pivot_low_true[1])
if bullCond and close < ta.valuewhen(pivot_low_true, low, 1) and rsi_hour <40 ///and rsi_4hour<40 //and rsi_Day<50
    strategy.entry("Long", strategy.long)
    
//Exit Condition
if (strategy.position_size > 0 and close < strategy.position_avg_price*SL_percent)
    strategy.close("Long")
if (strategy.position_size > 0 and (rsi_value > SellWhenRSI or bearCond))
    strategy.close("Long")