Overview: This strategy uses BitMEX bitcoin futures position data to guide trades. It goes short when short positions increase and goes long when short positions decrease. Suitable for following “smart money” trading behavior.
Strategy Logic:
Advantages Analysis:
Risk Analysis:
Optimization Directions:
Summary:
This strategy leverages BitMEX professional bitcoin futures traders to get timely signals. It helps investors gauge market sentiment and spot highs/lows. Also warns downside risks when whales are heavily short. Overall an interesting approach utilizing futures position data, but further refinement in parameters and risk control necessary before deploying live.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bitfinex Shorts Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2, initial_capital=1000, pyramiding=2, commission_value=0.05) //Backtest date range StartDate = input(timestamp("01 Jan 2021"), title="Start Date") EndDate = input(timestamp("01 Jan 2024"), title="Start Date") inDateRange = true symbolInput = input(title="Bitfinex Short Symbol", defval="BTC_USDT:swap") Shorts = request.security(symbolInput, "", open) // RSI Input Settings length = input(title="Length", defval=7, group="RSI Settings" ) overSold = input(title="High Shorts Threshold", defval=75, group="RSI Settings" ) overBought = input(title="Low Shorts Threshold", defval=30, group="RSI Settings" ) // Calculating RSI vrsi = ta.rsi(Shorts, length) RSIunder = ta.crossover(vrsi, overSold) RSIover = ta.crossunder(vrsi, overBought) // Stop Loss Input Settings longLossPerc = input.float(title="Long Stop Loss (%)", defval=25, group="Stop Loss Settings") * 0.01 shortLossPerc = input.float(title="Short Stop Loss (%)", defval=25, group="Stop Loss Settings") * 0.01 // Calculating Stop Loss longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // Strategy Entry if (not na(vrsi)) if (inDateRange and RSIover) strategy.entry("LONG", strategy.long, comment="LONG") if (inDateRange and RSIunder) strategy.entry("SHORT", strategy.short, comment="SHORT") // Submit exit orders based on calculated stop loss price if (strategy.position_size > 0) strategy.exit(id="LONG STOP", stop=longStopPrice) if (strategy.position_size < 0) strategy.exit(id="SHORT STOP", stop=shortStopPrice)