This strategy is an automated trading system based on Simple Moving Average (SMA) crossovers, combined with dynamic take-profit and stop-loss mechanisms. It uses two SMAs of different periods to generate buy and sell signals through their crossovers. Additionally, the strategy sets percentage-based take-profit and stop-loss levels to control risk and lock in profits.
This dual moving average crossover trading strategy provides a simple yet effective framework suitable for beginners entering automated trading. It combines elements of trend following and risk management by dynamically setting take-profit and stop-loss levels to protect capital. However, to achieve better results in actual trading, further optimization and refinement are necessary. Consider adding more technical indicators as filters, optimizing the method for setting take-profit and stop-loss levels, and introducing more sophisticated position management strategies. Simultaneously, thorough backtesting and validation across different market environments and timeframes are essential. Through continuous improvement and adaptation to market changes, this strategy has the potential to become a reliable trading system.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-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/ // © Pubgentleman //@version=5 //@version=5 strategy("TSLA 1-Hour SMA Crossover Strategy with Buy/Sell Signals", overlay=true) // Parameters shortSmaLength = input.int(50, title="Short SMA Length") longSmaLength = input.int(100, title="Long SMA Length") takeProfitPerc = input.float(5.0, title="Take Profit Percentage", step=0.1) // 5.0% take profit stopLossPerc = input.float(3.0, title="Stop Loss Percentage", step=0.1) // 3.0% stop loss // Calculate SMAs shortSma = ta.sma(close, shortSmaLength) longSma = ta.sma(close, longSmaLength) // Plot SMAs plot(shortSma, color=color.blue, title="Short SMA") plot(longSma, color=color.red, title="Long SMA") // Entry Conditions longCondition = ta.crossover(shortSma, longSma) shortCondition = ta.crossunder(shortSma, longSma) // Trade Management var float entryPrice = na var float takeProfitLevel = na var float stopLossLevel = na if (longCondition) entryPrice := close takeProfitLevel := entryPrice * (1 + takeProfitPerc / 100) stopLossLevel := entryPrice * (1 - stopLossPerc / 100) strategy.entry("Long", strategy.long) label.new(x=bar_index, y=low, text="Buy", style=label.style_label_up, color=color.green, textcolor=color.white) if (shortCondition) entryPrice := close takeProfitLevel := entryPrice * (1 - takeProfitPerc / 100) stopLossLevel := entryPrice * (1 + stopLossPerc / 100) strategy.entry("Short", strategy.short) label.new(x=bar_index, y=high, text="Sell", style=label.style_label_down, color=color.red, textcolor=color.white) // Exit Conditions if (strategy.position_size > 0) if (close >= takeProfitLevel or close <= stopLossLevel) strategy.close("Long") if (strategy.position_size < 0) if (close <= takeProfitLevel or close >= stopLossLevel) strategy.close("Short") // Plot Take Profit and Stop Loss Levels plot(strategy.position_size > 0 ? takeProfitLevel : na, title="Take Profit Level", color=color.green, style=plot.style_stepline) plot(strategy.position_size > 0 ? stopLossLevel : na, title="Stop Loss Level", color=color.red, style=plot.style_stepline) plot(strategy.position_size < 0 ? takeProfitLevel : na, title="Take Profit Level (Short)", color=color.green, style=plot.style_stepline) plot(strategy.position_size < 0 ? stopLossLevel : na, title="Stop Loss Level (Short)", color=color.red, style=plot.style_stepline)template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6