Chiến lược giao dịch dải lượng Bitcoin dựa trên nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-12-01 13:50:02
Tags:

img

Tổng quan

Chiến lược này xác định các dải giá của Bitcoin bằng cách kết hợp các chỉ số định lượng trên các khung thời gian khác nhau và thực hiện các giao dịch theo dõi xu hướng.

Chiến lược logic

  1. Chỉ số RSI được tính trên cơ sở khung thời gian hàng ngày cân nhắc dựa trên khối lượng giao dịch để lọc các sự đột phá sai.
  2. Chỉ số RSI hàng ngày được làm bằng bằng EMA để xây dựng một chỉ số dải định lượng.
  3. Khung thời gian 5 phút sử dụng sự kết hợp của các chỉ số hồi quy tuyến tính và HMA để tạo ra các tín hiệu giao dịch.
  4. Bằng cách kết hợp chỉ số dải lượng và tín hiệu giao dịch trên các khung thời gian, chiến lược xác định dải giá trung và dài hạn.

Phân tích lợi thế

  1. Chỉ số RSI có trọng lượng khối lượng có thể xác định hiệu quả các dải thực và lọc các đột phá sai.
  2. Chỉ số HMA nhạy cảm hơn với sự thay đổi giá và có thể bắt kịp thời.
  3. Kết hợp nhiều khung thời gian dẫn đến xác định chính xác hơn các dải trung bình đến dài hạn.
  4. Giao dịch trên khung thời gian 5 phút cho phép tần suất hoạt động cao hơn.
  5. Là một chiến lược theo dõi băng tần, nó không yêu cầu chọn chính xác các điểm và có thể giữ trong thời gian dài hơn.

Phân tích rủi ro

  1. Các chỉ số định lượng có thể tạo ra các tín hiệu sai, nên nên phân tích cơ bản.
  2. Các dải có thể thấy sự đảo ngược giữa, các cơ chế dừng lỗ nên được thực hiện.
  3. Sự chậm trễ của tín hiệu có thể dẫn đến việc bỏ lỡ các điểm vào tốt nhất.
  4. Các dải lợi nhuận cần thời gian giữ lâu hơn, đòi hỏi dung nạp áp lực vốn.

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

  1. Kiểm tra hiệu quả của các chỉ số RSI với các thông số khác nhau.
  2. Cố gắng giới thiệu các chỉ số băng tần phụ trợ khác.
  3. Tối ưu hóa các thông số chiều dài của chỉ số HMA.
  4. Thêm chiến lược dừng lỗ và lấy lợi nhuận.
  5. Điều chỉnh chu kỳ giữ cho giao dịch băng.

Kết luận

Chiến lược này có hiệu quả nắm bắt xu hướng trung và dài hạn của Bitcoin bằng cách ghép nối khung thời gian và theo dõi băng tần. So với giao dịch ngắn hạn, giao dịch băng tần trung và dài hạn có giảm nhỏ hơn và tiềm năng lợi nhuận lớn hơn.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title='Pyramiding BTC 5 min', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.075)
//the pyramide based on this script  https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/
//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
//
//Backtest dates
fromMonth = input(defval=1, title="From Month")
fromDay = input(defval=10, title="From Day")
fromYear = input(defval=2020, title="From Year")
thruMonth = input(defval=1, title="Thru Month")
thruDay = input(defval=1, title="Thru Day")
thruYear = input(defval=2112, title="Thru Year")

showDate = input(defval=true, title="Show Date Range")

start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false


leng=1
p1=close[1]

len55 = 10
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
HTF = input("1D", type=input.resolution)
ti = change( time(HTF) ) != 0
T_c = fixnan( ti ? close : na )

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

d=(vrsi[1]-pp[1])
len100 = 10
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange

//

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

length = input(50, 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)

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)


filter=input(true)

buy=crossover(linear_reg, b)

longsignal = (v1 > v2 or filter == false ) and buy and window()

//set take profit

ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick

//set take profit

LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick


//Order Placing

strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)

strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)

strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)

strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)

strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)





if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    



Thêm nữa