0bps

Strategy vault / Mean reversion

Dual Cross Moving Average Reversal Strategy

This strategy combines the 123 reversal pattern strategy and the Bear Power indicator strategy. Trading signals are generated when both give buy or sell signals in the same direction. It belongs to the breakout…

Author
ChaoZhang
Complexity
Intermediate · 79 lines
Parameters
7
Backtest bar
10m · intraday
Tested on
BTC/USDT · futures

IMG Here is the article I tried to write based on your request:

Overview

This strategy combines the 123 reversal pattern strategy and the Bear Power indicator strategy. Trading signals are generated when both give buy or sell signals in the same direction. It belongs to the breakout reversal trading strategy.

Strategy Logic

The strategy consists of two parts:

  1. 123 Reversal Pattern Strategy

    It generates buy signals when the closing price breaks out upward after two consecutive days of decline and the low Stoch indicator bounces back from the low level; It generates sell signals when the closing price breaks down after two consecutive days of rise and the high Stoch indicator pulls back from the high level.

  2. Bear Power Indicator Strategy

    The Bear Power indicator reflects the comparison of bullish and bearish powers. It generates sell signals when above the set sell line and generates buy signals when below the set buy line.

When combining the signals, actual trading signals are generated if the two gives signals in the same direction.

Advantages

  1. Combining reversal signals and indicator filters avoids false breakouts and improves signal quality.

  2. Applicable to multiple timeframes, flexible in adapting to different market environments.

  3. The constituent strategies can be used alone or in combination, with modular design.

Risks

  1. Reversal signals may face large pullback depths.

  2. The Bear Power indicator parameters need repetitive testing and optimization.

  3. Multi-factor integrated strategies have complex parameter tuning and require large amounts of historical data for testing.

Optimization Directions

  1. Connect more data sources with the join Quant module to obtain longer time range and richer dataset.

  2. Apply machine learning methods to automatically search and evaluate parameter combinations.

  3. Add stop loss mechanisms to control single trade loss.

Conclusion

This strategy combines reversal technical analysis and quantitative indicators to improve signal quality through double confirmation. It has high modularity and expandability. Further optimization with advanced technologies can adapt it to more sophisticated market environments.

Parameters

NameDefaultWhat it controls
v_input_114Length
v_input_2trueKSmoothing
v_input_33DLength
v_input_450Level
v_input_530SellLevel
v_input_63BuyLevel
v_input_7falseTrade reverse

Source Pine Script

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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  Bear Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

BearPower(SellLevel, BuyLevel) =>
    value =  iff (close < open ,  
              iff (close[1] > open ,  max(close - open, high - low), high - low), 
               iff (close > open, 
                 iff(close[1] > open, max(close[1] - low, high - close), max(open - low, high - close)), 
                  iff(high - close > close - low, 
                   iff (close[1] > open, max(close[1] - open, high - low), high - low), 
                     iff (high - close < close - low, 
                      iff(close > open, max(close - low, high - close),open - low), 
                       iff (close > open, max(close[1] - open, high - close),
                         iff(close[1] < open, max(open - low, high - close), high - low))))))
    pos = 0.0
    pos := iff(value > SellLevel, -1,
	   iff(value <= BuyLevel, 1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Bear Power", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SellLevel = input(30)
BuyLevel = input(3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBearPower = BearPower(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBearPower == 1 , 1,
	   iff(posReversal123 == -1 and posBearPower == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Published by ChaoZhang on the FMZ strategy square · last modified 2023-11-21. 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/Dual-Cross-Moving-Average-Reversal-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