Chiến lược này được gọi là Super BitMoon. Đây là một chiến lược giao dịch động lượng định lượng ngắn hạn phù hợp với Bitcoin. Chiến lược có cả khả năng dài và ngắn, cho phép nó giao dịch khi Bitcoin vượt qua các mức hỗ trợ hoặc kháng cự chính.
Chiến lược hoạt động như thế nào:
Các quy tắc giao dịch cụ thể:
Ưu điểm của chiến lược này:
Rủi ro của chiến lược này:
Tóm lại, Super BitMoon là một chiến lược động lực định lượng vững chắc lý tưởng cho giao dịch hợp đồng chỉ số ngắn hạn, với cả hai đặc điểm theo xu hướng và đảo ngược trung bình. Với điều chỉnh tham số thích hợp, nó có thể đạt được tỷ lệ rủi ro-lợi nhuận tốt. Nhưng các nhà giao dịch vẫn cần xem xét kiểm soát chi phí và quản lý tiền bạc để giảm rủi ro trong giao dịch trực tiếp.
/*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