This strategy is based on the 99-period Simple Moving Average (MA99) to determine trading signals. When the price touches the MA99, a position can be opened without requiring confirmation from two candles. The stop-loss uses a dynamic approach, meaning that when the price breaks through the MA99 and is confirmed in the next candle, the position is closed for stop-loss. This strategy aims to capture price fluctuations around the MA99 while controlling risk through dynamic stop-loss.
The MA99 Touch and Dynamic Stop-Loss Strategy opens positions based on the relationship between price and MA99 and uses dynamic stop-loss to control risk. This strategy is simple and easy to use, capable of following medium to long-term trends, but may face the problem of frequent trading in choppy markets. By introducing other indicators for filtering, optimizing parameters, managing positions, and considering costs, the performance and robustness of this strategy can be further improved.
/*backtest start: 2023-04-23 00:00:00 end: 2024-04-28 00:00:00 period: 1d basePeriod: 1h 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/ //@version=5 strategy("MA99 Temas ve Dinamik Stop-Loss Stratejisi", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // MA99 hesaplayalım ma99 = ta.sma(close, 99) plot(ma99, color=color.blue, title="MA99") // Fiyatın MA99'a temas edip etmediğini kontrol edelim priceTouchedMA99 = (low <= ma99 and high >= ma99) // Long ve short koşullarını tanımlayalım longCondition = priceTouchedMA99 and close > ma99 shortCondition = priceTouchedMA99 and close < ma99 var float longStopLoss = na var float shortStopLoss = na var int longStopTriggered = 0 var int shortStopTriggered = 0 // Alım veya satım sinyallerine göre işlemleri başlatalım ve stop-loss ayarlayalım if (longCondition) strategy.entry("Long Entry", strategy.long) longStopLoss := ma99 longStopTriggered := 0 if (shortCondition) strategy.entry("Short Entry", strategy.short) shortStopLoss := ma99 shortStopTriggered := 0 // Stop-loss koşullarını ve iki mum kuralını kontrol edelim if (not na(longStopLoss)) if (close < longStopLoss) longStopTriggered := 1 else longStopTriggered := 0 if (longStopTriggered[1] == 1 and close < longStopLoss) // Bir önceki mumda tetiklendi ve hala altında strategy.close("Long Entry", comment="Stop Loss Long") longStopLoss := na longStopTriggered := 0 if (not na(shortStopLoss)) if (close > shortStopLoss) shortStopTriggered := 1 else shortStopTriggered := 0 if (shortStopTriggered[1] == 1 and close > shortStopLoss) // Bir önceki mumda tetiklendi ve hala üstünde strategy.close("Short Entry", comment="Stop Loss Short") shortStopLoss := na shortStopTriggered := 0template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6