Strategy vault / Trend following
WaveTrend Cross LazyBear Strategy
The WaveTrend Cross LazyBear strategy is a trading strategy based on the WaveTrend indicator. The strategy uses two WaveTrend indicator lines with different periods. When the faster-period WaveTrend indicator line…

Overview
The WaveTrend Cross LazyBear strategy is a trading strategy based on the WaveTrend indicator. The strategy uses two WaveTrend indicator lines with different periods. When the faster-period WaveTrend indicator line crosses above the slower-period WaveTrend indicator line, it generates a buy signal. When the faster-period WaveTrend indicator line crosses below the slower-period WaveTrend indicator line, it generates a sell signal. The strategy also sets overbought and oversold zones to assist in judging market conditions.
Strategy Principle
The core of this strategy is the WaveTrend indicator, which is calculated by the following steps:
- Calculate the typical price (AP), which is equal to the average of the high, low, and close prices.
- Calculate the exponential moving average (ESA) of AP with a period of n1.
- Calculate the exponential moving average d of the absolute value of the difference between AP and ESA with a period of n1.
- Calculate the indicator CI, which is equal to (AP - ESA) / (0.015 * d).
- Calculate the exponential moving average TCI of CI with a period of n2 to get the WaveTrend indicator.
The strategy uses two WaveTrend indicator lines with different periods (default is 10 and 21), denoted as WT1 and WT2 respectively. When WT1 crosses above WT2, it generates a buy signal; when WT1 crosses below WT2, it generates a sell signal. In addition, the strategy also sets 4 auxiliary levels: overbought level 1, overbought level 2, oversold level 1, and oversold level 2, to assist in judging market conditions.
Strategy Advantages
- The WaveTrend indicator combines the characteristics of momentum and volatility, which can better capture market trends.
- The dual-period WaveTrend indicator can effectively filter out some noise signals.
- The setting of overbought and oversold levels can prevent the strategy from trading frequently when the market fluctuates greatly to a certain extent.
- The strategy logic is clear and easy to understand and implement.
Strategy Risks
- The strategy may generate more false signals in a oscillating market.
- The choice of parameters has a great impact on the strategy performance, and different parameters may lead to large differences in strategy performance.
- The strategy does not consider risk control and may experience large drawdowns in extreme market conditions.
Strategy Optimization Directions
- Consider adding trend filtering conditions, such as the direction of the long-term moving average, to reduce false signals in oscillating markets.
- Optimize the setting of overbought and oversold levels to make them more dynamically adapt to different market conditions.
- Add stop-loss and take-profit mechanisms to control the risk of a single transaction.
- Find the optimal parameter combination through parameter optimization.
Summary
The WaveTrend Cross LazyBear strategy is a trend-tracking strategy based on the WaveTrend indicator. Through the design of dual-period indicators and the auxiliary judgment of overbought and oversold levels, it captures trends while also taking into account certain risk control. However, the strategy may generate more false signals in oscillating markets and lacks strict risk management measures. Further optimization and improvement are needed in practical applications.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | 10 | Channel Length |
| v_input_2 | 21 | Average Length |
| v_input_3 | 60 | Over Bought Level 1 |
| v_input_4 | 53 | Over Bought Level 2 |
| v_input_5 | -60 | Over Sold Level 1 |
| v_input_6 | -53 | Over Sold Level 2 |
Source Pine Script
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © burakaydingr
//@version=5
strategy("WaveTrend with Crosses [LazyBear]", shorttitle="WT_CROSS_LB", overlay=true)
// Kullanıcı girişleri
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-60, title="Over Sold Level 1")
osLevel2 = input(-53, title="Over Sold Level 2")
// Temel hesaplamalar
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
// WaveTrend göstergeleri
wt1 = tci
wt2 = ta.sma(wt1, 4)
// Al ve Sat Sinyalleri
buySignal = ta.crossover(wt1, wt2)
sellSignal = ta.crossunder(wt1, wt2)
// Alım ve Satım pozisyonları
if (buySignal)
if (strategy.position_size <= 0) // Eğer şu anda açık bir satış pozisyonu varsa, onu kapat
strategy.close("Sell")
strategy.entry("Buy", strategy.long, comment="Buy Signal: Price crossed above WT2")
if (sellSignal)
if (strategy.position_size >= 0) // Eğer şu anda açık bir alım pozisyonu varsa, onu kapat
strategy.close("Buy")
strategy.entry("Sell", strategy.short, comment="Sell Signal: Price crossed below WT2")
// Renkler ve diğer görseller
plot(0, color=color.new(color.gray, 0), title="Zero Level")
plot(obLevel1, color=color.new(color.red, 0), title="Overbought Level 1")
plot(osLevel1, color=color.new(color.green, 0), title="Oversold Level 1")
plot(obLevel2, color=color.new(color.purple, 0), title="Overbought Level 2")
plot(osLevel2, color=color.new(color.orange, 0), title="Oversold Level 2")
plot(wt1, color=color.new(color.red, 0), title="WT1")
plot(wt2, color=color.new(color.blue, 0), title="WT2")
plot(wt1-wt2, color=color.new(color.purple, 80), style=plot.style_area, title="WT1-WT2 Area")
// İşaretler
plotshape(buySignal, location=location.absolute, color=color.new(color.yellow, 0), style=shape.circle, size=size.small, title="Buy Signal")
plotshape(sellSignal, location=location.absolute, color=color.new(color.red, 0), style=shape.circle, size=size.small, title="Sell Signal")
Published by ChaoZhang on the FMZ strategy square · last modified 2024-04-28. 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/WaveTrend-Cross-LazyBear-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
- ADX MA and EMA Long Only Trend Tracking StrategyPine Script · Trend following · 1d
- ATR and Moving Average Crossover Hybrid StrategyPine Script · Trend following · 1h
- Bollinger Band Moving Average Crossover StrategyPine Script · Trend following · 1h
- Bollinger Bands and EMA Trend Following StrategyPine Script · Trend following · 1h
- Bollinger Bands and RSI Trend Following StrategyPine Script · Trend following · 1h
- Candlestick Pattern Trend Filter StrategyPine Script · Trend following · 1d