Chiến lược giao dịch động lượng định lượng Super BitMoon


Ngày tạo: 2023-09-15 16:13:05 sửa đổi lần cuối: 2023-09-15 16:13:05
sao chép: 1 Số nhấp chuột: 674
1
tập trung vào
1617
Người theo dõi

Chiến lược này được gọi là Super BitMoon, một chiến lược giao dịch động lượng định lượng ngắn hạn cho Bitcoin. Chiến lược này có khả năng giao dịch nhiều và ngắn, giao dịch khi Bitcoin phá vỡ mức hỗ trợ hoặc kháng cự quan trọng.

Chiến lược hoạt động như sau:

  1. Sử dụng chỉ số ATR để tính toán phạm vi biến động gần đây và điểm dừng. Khi giá vượt qua điểm dừng trên một đường K, đánh giá là xu hướng đảo ngược.
  2. Sử dụng trung bình di chuyển nặng WVF và chỉ số Bollinger Bands để xác định xem Bitcoin có đang mua quá mức hay bán quá mức không. Nếu WVF dưới mức Bollinger Bands trên đường, cho thấy thị trường có thể đang bán quá mức, bạn có thể làm nhiều hơn.
  3. Sử dụng chỉ số RSI để xác định Bitcoin có bị bán quá hay không. Nếu RSI thấp hơn hai đường bán quá, bạn có thể mua nhiều hơn khi giảm.

Chiến lược giao dịch cụ thể:

  1. Nếu WVF vượt qua đường dây Brin và giá cao hơn giá dừng ATR, hãy làm nhiều bitcoin.
  2. Nếu RSI thấp hơn 50 hoặc 30 đường bán quá mức, hãy giảm giá Bitcoin.

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

  1. Trong khi đó, có khả năng làm nhiều giao dịch ngoại hối, có thể giao dịch hai chiều.
  2. Sử dụng ATR Stop Loss để kiểm soát rủi ro và tránh thiệt hại.
  3. Đồng thời sử dụng chỉ số WVF, Brin và RSI để đánh giá, tăng độ chính xác của tín hiệu.

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

  1. Các tham số Brin và RSI được đặt không chính xác có thể dẫn đến tín hiệu sai.
  2. Các sự kiện bất ngờ gây ra giá tăng hoặc nhảy có thể dẫn đến việc dừng lỗ được kích hoạt.
  3. Chi phí giao dịch có thể ảnh hưởng đến lợi nhuận.

Tóm lại, Super BitMoon là một chiến lược động lượng định lượng rất phù hợp cho các Indicatorscombos ngắn, đồng thời có tính năng theo dõi xu hướng và đảo ngược giao dịch. Với tối ưu hóa tham số hợp lý, có thể đạt được tỷ lệ lợi nhuận rủi ro tốt hơn.

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

//@version=2
strategy("Super BitMoon v1", overlay=false, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2011, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2018, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 00, 00)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

//ATR STOPS TREND FILTER
length = input(5, title="ATR Stop's Length")
mult = input(1, minval=0.01, title="ATR Stop's Multiple")
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1

//SYNTHETIC VIX
pd = input(10, title="Synthetic VIX's Length")
bbl = input(2, title="Synthetic VIX's Bollinger Band's Length")
mult2 = input(0.01, minval=0.01, title="Synthetic VIX's Bollinger Band's Std Dev")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult2 * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
upperBand = midLine + sDev

//RSI
rsi = rsi(close, input(10,title="RSI's Length"))
os1 = input(50,title="RSI's Oversold Level 1")
os2 = input(50,title="RSI's Oversold Level 2")

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = crossunder(wvf, upperBand) and close > vstop and withinTimeRange
condition2 = crossunder(rsi, os1) and withinTimeRange
condition3 = crossunder(rsi, os2) and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2 or condition3)

/////////////////////////////////////////////////////////////
//END - TRADING RULES