Strategy vault / Trend following
Trend Following Strategy Based on 200 Day Moving Average and Stochastic Oscillator
This strategy is a trend-following strategy based on the 200-day moving average and the Stochastic Oscillator. The main idea behind the strategy is to use the 200-day moving average to determine the current long-term…

Overview
This strategy is a trend-following strategy based on the 200-day moving average and the Stochastic Oscillator. The main idea behind the strategy is to use the 200-day moving average to determine the current long-term market trend, while using the Stochastic Oscillator to capture short-term market fluctuations and overbought/oversold signals. When the price is below the 200-day moving average and the Stochastic Oscillator crosses above 20 from the oversold area, the strategy opens a long position. When the price is above the 200-day moving average and the Stochastic Oscillator crosses below 80 from the overbought area, the strategy opens a short position. The strategy aims to capture the long-term market trend while taking advantage of short-term fluctuations to generate additional profits.
Strategy Principles
- Calculate the 200-day exponential moving average (EMA) to determine the current long-term market trend.
- Calculate the Stochastic Oscillator to capture short-term market fluctuations and overbought/oversold signals. The Stochastic Oscillator consists of two lines: the %K line and the %D line. The %K line represents the current closing price's position relative to the highest high and lowest low over the past N days, while the %D line is the M-day moving average of the %K line.
- Record the value of the previous %K line to determine whether the Stochastic Oscillator has crossed the 20 and 80 levels.
- When the closing price is below the 200-day EMA and the %K line of the Stochastic Oscillator crosses above 20 from below, the strategy opens a long position.
- When the closing price is above the 200-day EMA and the %K line of the Stochastic Oscillator crosses below 80 from above, the strategy opens a short position.
- Set stop-loss and take-profit levels to control risk and lock in profits.
Strategy Advantages
- Combines long-term trend and short-term fluctuations: The strategy utilizes the 200-day EMA to capture the long-term market trend while using the Stochastic Oscillator to capture short-term fluctuations, enabling it to profit from both trends and fluctuations.
- Clear entry and exit signals: The strategy uses well-defined entry and exit conditions, reducing the influence of subjective judgment and improving the consistency of operations.
- Risk control: The strategy sets stop-loss and take-profit levels, effectively controlling the risk exposure of individual trades while locking in partial profits.
Strategy Risks
- False signal risk: During periods of high market volatility or unclear trends, the Stochastic Oscillator may generate numerous false signals, leading to frequent trading and losses.
- Trend reversal risk: When the market trend reverses, the strategy may delay its judgment, leading to missed optimal entry opportunities or larger drawdowns.
- Parameter optimization risk: The performance of the strategy may be sensitive to parameter selection, and different parameter combinations may result in significant differences in strategy performance.
Strategy Optimization Directions
- Dynamic parameter adjustment: Dynamically adjust the parameters of the Stochastic Oscillator based on changes in market conditions to adapt to different market environments. This can be achieved by introducing adaptive mechanisms or machine learning algorithms.
- Introduce additional indicators: Build upon the existing strategy by introducing other technical indicators or fundamental factors, such as trading volume or volatility, to improve the reliability and stability of signals.
- Optimize risk management: Optimize the setting of stop-loss and take-profit levels, such as using dynamic stop-loss or volatility-based stop-loss, to better control risk and lock in profits.
- Consider trading costs: In practical applications, consider the impact of trading costs on strategy performance and optimize the strategy accordingly to reduce trading frequency and costs.
Summary
This strategy combines the 200-day moving average and the Stochastic Oscillator to capture the long-term market trend while taking advantage of short-term fluctuations to generate additional profits. The strategy has clear entry and exit signals and risk control measures, but also faces risks such as false signals, trend reversals, and parameter optimization. In the future, the strategy can be optimized by dynamically adjusting parameters, introducing additional indicators, optimizing risk management, and considering trading costs to improve its stability and profitability.
Source Pine Script
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("WWCD Bot", overlay=true)
// Calculate the 200-day moving average
ema200 = ta.ema(close, 200)
// Calculate Stochastic Oscillator
length = input(2, title="Stochastic Length")
smoothK = input(3, title="Stochastic Smoothing")
smoothD = input(3, title="Stochastic D Smoothing")
k = ta.stoch(close, high, low, length)
d = ta.ema(k, smoothD)
// Variable to store previous value of k
var float prev_k = na
// Check if current k is above 20 and previous k was below 20
crossed_above_20 = k >= 20 and prev_k < 20
crossed_above_80 = k <= 80 and prev_k > 80
// Condition for buy and sell signals
buy_signal_condition = close < ema200 and crossed_above_20
sell_signal_condition = close > ema200 and crossed_above_80
// Store current k for the next bar
prev_k := k
// Strategy
lot_size = 1 // Position size
if (buy_signal_condition)
strategy.entry("Buy", strategy.long, qty=lot_size)
strategy.exit("Take Profit/Stop Loss", "Buy", stop=close - 1.00, limit=close + 16)
if (sell_signal_condition)
strategy.entry("Sell", strategy.short, qty=lot_size)
strategy.exit("Take Profit/Stop Loss", "Sell", stop=close + 1.00, limit=close - 16)
Published by ChaoZhang on the FMZ strategy square · last modified 2024-06-14. 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/Trend-Following-Strategy-Based-on-200-Day-Moving-Average-and-Stochastic-Oscillator.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
- EMA AROON ASHPine Script · Trend following · 3m
- EMA SMA Multi Indicator Comprehensive Trend Following StrategyPine Script · Trend following · 1h
- EMA200 and Stochastic RSI StrategyPine Script · Trend following · 1h
- Intraday Stochastic Oscillator with Double Moving Average Crossover StrategyPine Script · Trend following · 1d
- Multi Indicator Trend Divergence Quantitative Trading StrategyPine Script · Trend following · 1d
- Multifactor Driven Trend Trading StrategyPine Script · Trend following · 1m