0bps

Strategy vault / Mean reversion

Bottom Catching Strategy

This strategy utilizes the RSI and EMA indicators to determine entries and exits. It performs well in bear markets and can catch bottom rebound opportunities.

Author
ChaoZhang
Complexity
Starter · 55 lines
Parameters
2
Backtest bar
1m · intraday
Tested on
BTC/USDT · futures

IMG

Overview

This strategy utilizes the RSI and EMA indicators to determine entries and exits. It performs well in bear markets and can catch bottom rebound opportunities.

Strategy Logic

The strategy is based on the following entry and exit conditions:

Entry conditions:

  1. RSI < 40
  2. RSI is 3 points lower than previous day
  3. 50-day EMA crosses below 100-day EMA

Exit conditions:

  1. RSI > 65
  2. 9-day EMA crosses above 50-day EMA

This allows buying on dips and selling at highs during bounces, catching bottom rebound opportunities.

Advantage Analysis

The strategy has the following advantages:

  1. Utilize RSI to catch oversold opportunities
  2. EMA patterns to spot trend change points
  3. Good backtesting results, especially resilience in bear markets
  4. Configurable parameters to adjust strategy

Risk Analysis

The strategy also has the following risks:

  1. Improper parameter tuning may cause premature entries or delayed exits
  2. Rebounds may not materialize or sustain
  3. Trading fees and slippage also affect actual profit

Parameters can be optimized, or other indicators combined to determine market structure.

Optimization Directions

The strategy can be improved in the following ways:

  1. Test parameter combinations separately for different coins
  2. Incorporate volume changes to confirm signals
  3. Add stop loss to limit single trade loss
  4. Consider dynamic position sizing

Conclusion

The bottom catching strategy has clear logic and works well in bear markets. More parameter tuning and optimizations can lead to better backtest results. But risks need to be monitored in live trading, and losses cannot be entirely avoided.

Parameters

NameDefaultWhat it controls
v_input_1trueShow Date Range
v_input_214length

Source Pine Script

/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=5
strategy("V3 - Catching the Bottom",
         overlay=true)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 4, 1, 0, 0)
notInTrade = strategy.position_size <= 0

//==================================Buy Conditions============================================

//RSI
length = input(14)
vrsi = ta.rsi(close, length)

buyCondition1 = vrsi < 40

//RSI decrease
decrease = 3
buyCondition2 = (vrsi < vrsi[1] - decrease)
//sellCondition1 = request.security(syminfo.tickerid, "15", buyCondition2)

//EMAs 
fastEMA = ta.sma(close, 50)
slowEMA = ta.sma(close, 100)
buyCondition3 = ta.crossunder(fastEMA, slowEMA)
//buyCondition2 = request.security(syminfo.tickerid, "15", buyCondition3)

if(buyCondition1 and buyCondition2 and buyCondition3 and timePeriod)
    strategy.entry(id='Long', direction = strategy.long)

//==================================Sell Conditions============================================

sellCondition1 = vrsi > 65

EMA9 = ta.sma(close, 9)
EMA50 = ta.sma(close, 50)
sellCondition2 = ta.crossover(EMA9, EMA50)

if(sellCondition1 and sellCondition2 and timePeriod)
    strategy.close(id='Long')

//Best on: ETH 5mins (7.59%), BNB 5mins (5.42%), MATIC 30mins (15.61%), XRP 45mins (10.14%) ---> EMA
//Best on: MATIC 2h (16.09%), XRP 15m (5.25%), SOL 15m (4.28%), AVAX 5m (3.19%)

Published by ChaoZhang on the FMZ strategy square · last modified 2023-11-22. 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.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Bottom-Catching-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. 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

esc

Try , , or .

↑↓ move↵ open