This strategy is an automated trading system based on a 5-minute timeframe, combining moving average trend following and volume analysis methods. The strategy uses a 50-period Simple Moving Average (SMA) to determine market trends while incorporating volume analysis to validate trading signals. The system implements fixed stop-loss and take-profit targets for fully automated trading.
The core logic includes the following key components: 1. Trend Identification: Uses 50-period SMA to determine market direction, considering uptrend when close is above MA and downtrend when below. Also confirms trends using price movement over the last 30 minutes (6 candles). 2. Volume Analysis: Calculates buy and sell volumes based on price movement, distributing volume within each candle according to closing price position. 3. Signal Generation: Generates long signals when buy volume exceeds sell volume in uptrends; generates short signals when sell volume exceeds buy volume in downtrends. 4. Risk Management: Implements 3% stop-loss and 29% take-profit targets to manage risk-reward ratio for each trade.
This strategy combines trend following and volume analysis to create a comprehensive high-frequency trading system. Its main strengths lie in multi-dimensional signal confirmation and robust risk control. While inherent risks exist, the proposed optimization directions can further enhance strategy stability and adaptability. The strategy is particularly suitable for trending market environments and can achieve stable trading results through proper parameter optimization and risk management.
/*backtest start: 2024-01-10 00:00:00 end: 2025-01-08 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Jerryorange //@version=6 //@version=6 strategy("Autonomous 5-Minute Robot", overlay=true, fill_orders_on_standard_ohlc=true) // --- Inputs --- maLength = input.int(50, title="Trend MA Length") // Moving average length for trend detection volumeLength = input.int(10, title="Volume Length") // Length for volume analysis stopLossPercent = input.float(3, title="Stop Loss (%)") // 3% stop loss takeProfitPercent = input.float(29, title="Take Profit (%)") // 29% take profit // --- Market Trend Detection --- ma = ta.sma(close, maLength) // Simple moving average for trend direction isBullish = close > ma // Market is bullish if the close is above the moving average isBearish = close < ma // Market is bearish if the close is below the moving average // --- Volume Analysis --- buyVolume = (high != low) ? volume * (close - low) / (high - low) : 0 sellVolume = (high != low) ? volume * (high - close) / (high - low) : 0 totalVolume = volume // --- Define Market Direction over Last 30 Minutes (6 candles in 5-minute chart) --- lookback = 6 // 30 minutes / 5 minutes = 6 bars prevClose = close[lookback] // Previous close 30 minutes ago currentClose = close // Current close uptrend = currentClose > prevClose and isBullish // Uptrend condition downtrend = currentClose < prevClose and isBearish // Downtrend condition // --- Strategy Logic --- longCondition = uptrend and buyVolume > sellVolume // Buy signal when trend is up and buy volume exceeds sell volume shortCondition = downtrend and sellVolume > buyVolume // Sell signal when trend is down and sell volume exceeds buy volume // --- Entry and Exit Strategy --- if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // --- Exit Strategy based on Stop Loss and Take Profit --- strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent / 100), limit=close * (1 + takeProfitPercent / 100)) strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent / 100), limit=close * (1 - takeProfitPercent / 100)) // --- Plotting for Visualization --- plot(ma, color=color.blue, title="50-period MA") // Trend line plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY") plotshape(shortCondition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL")