Cette stratégie s'appelle Super BitMoon. C'est une stratégie de trading quantitative à court terme adaptée au Bitcoin. La stratégie a des capacités à la fois longues et courtes, lui permettant de trader lorsque Bitcoin franchit les niveaux de support ou de résistance clés.
Comment fonctionne la stratégie:
Règles commerciales spécifiques:
Avantages de cette stratégie:
Les risques de cette stratégie:
En résumé, Super BitMoon est une stratégie de dynamique quantitative solide idéale pour le trading de combinaisons d'indicateurs à court terme, avec à la fois des caractéristiques de suivi de tendance et de réversion moyenne.
/*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