Super BitMoon quantitative momentum trading strategy
This strategy is called Super BitMoon. It is a short-term quantitative momentum trading strategy suitable for Bitcoin. The strategy has both long and short capabilities, allowing it to trade when Bitcoin breaks…
This strategy is called Super BitMoon. It is a short-term quantitative momentum trading strategy suitable for Bitcoin. The strategy has both long and short capabilities, allowing it to trade when Bitcoin breaks through key support or resistance levels.
How the strategy works:
- Use the ATR indicator to calculate recent volatility range and stop loss levels. When the price breaks through the previous candle's stop loss level, it signals a trend reversal.
- Use the Weighted Moving Average (WVF) and Bollinger Bands to determine if Bitcoin is overbought or oversold. If the WVF crosses below the Bollinger upper band, the market may be oversold and present a long opportunity.
- Use the RSI indicator to check if Bitcoin is oversold. If the RSI is below two oversold lines, it presents an opportunity to buy the dip.
Specific trading rules:
- If WVF crosses below Bollinger upper band, and price is above ATR stop loss level, go long Bitcoin.
- If RSI goes below 50 or 30 oversold lines, go short Bitcoin.
Advantages of this strategy:
- Has both long and short capabilities for two-way trading.
- Uses ATR stops to control risk and limit losses.
- Uses WVF, Bollinger Bands and RSI together to improve signal accuracy.
Risks of this strategy:
- Incorrect Bollinger and RSI parameters may generate bad signals.
- Sudden price spikes or crashes may trigger stop loss.
- Transaction costs impact profitability.
In summary, Super BitMoon is a solid quantitative momentum strategy ideal for short-term Indicators combos trading, with both trend following and mean reversion characteristics. With proper parameter tuning, it can achieve good risk-reward ratio. But traders still need to consider cost control and money management to reduce risks in live trading.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | true | From Month |
| v_input_2 | true | From Day |
| v_input_3 | 2011 | From Year |
| v_input_4 | 12 | To Month |
| v_input_5 | 31 | To Day |
| v_input_6 | 2018 | To Year |
| v_input_7 | 5 | ATR Stop's Length |
| v_input_8 | true | ATR Stop's Multiple |
| v_input_9 | 10 | Synthetic VIX's Length |
| v_input_10 | 2 | Synthetic VIX's Bollinger Band's Length |
| v_input_11 | 0.01 | Synthetic VIX's Bollinger Band's Std Dev |
| v_input_12 | 10 | RSI's Length |
| v_input_13 | 50 | RSI's Oversold Level 1 |
| v_input_14 | 50 | RSI's Oversold Level 2 |
| v_input_15 | true | Strategy Direction |
Source Pine Script
/*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 RULESPublished by ChaoZhang on the FMZ strategy square · last modified 2023-09-15. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Super-BitMoon-quantitative-momentum-trading-strategy.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- Multi Indicator Trend Momentum Trading Strategy An Optimized Quantitative Trading System Based on Bollinger Bands Fibonacci and ATRPine Script · Momentum · 1h
- Multi Trend Momentum Crossover Strategy with Volatility Optimization SystemPine Script · Momentum · 1d
- Momentum Trading Strategy Based on Multi factor ModelPine Script · Momentum · 1d
- Multi Indicator Comprehensive Analysis Quantitative Trading Strategy Trend Momentum and Volatility Collaborative Prediction ModelPine Script · Momentum · 3m
- Multi Indicator Dynamic Stop Loss Momentum Trend Trading StrategyPine Script · Momentum · 1h
- SSL Momentum Combo Trading StrategyPine Script · Momentum · 2h