Эта стратегия является торговой стратегией, основанной на SMA для фьючерсов BankNifty. Основная идея стратегии заключается в использовании SMA в качестве индикатора тренда, идя длинный, когда цена пересекает выше SMA и идти короткий, когда цена пересекает ниже SMA. В то же время стратегия также устанавливает условия остановки потери и получения прибыли для контроля риска и блокировки прибыли.
Основой этой стратегии является использование SMA в качестве индикатора тренда. В частности, стратегия сначала рассчитывает SMA определенного периода (по умолчанию 200), а затем определяет направление тренда на основе относительной позиции цены и SMA. Когда цена пересекает SMA, считается, что сформировалась восходящая тенденция, и принимается длинная позиция; когда цена пересекает ниже SMA, считается, что сформировалась нисходящая тенденция, и принимается короткая позиция. Кроме того, стратегия также устанавливает условия остановки потери и получения прибыли для контроля риска и блокировки прибыли. Условия остановки потери включают: перерыв цены через SMA на определенный диапазон (установленный параметром
Эта стратегия является простой торговой стратегией, основанной на SMA, подходящей для фьючерсов BankNifty. Ее преимущества заключаются в простом принципе, сильной адаптивности и мерах контроля рисков. Однако в практическом применении все еще необходимо обратить внимание на потенциальные риски, такие как оптимизация параметров, колеблющиеся рынки, изменение тренда и волатильность внутридневная. В будущем стратегия может быть оптимизирована и улучшена с таких аспектов, как оптимизация параметров, сочетание с другими индикаторами, динамическая стоп-лосс и ограничение времени торговли.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bhasker_S //@version=5 strategy("Strategy BankNifty SMA", overlay=true, margin_long=100, margin_short=100) src = input(close, title="Source") timeFrame = input.timeframe(defval='5', title = "Select Chart Timeframe") typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) len = input.int(200, minval=1, title="Length", step = 10) alertPrecision = input.float(0, "Alert Precision", minval = 0, maxval = 50, step=1) slTimeFrame = input.timeframe(defval='1', title = "Select Stoploss Candle Timeframe") slBuffer = input.float(0, "Stop Loss Buffer", minval = 0, maxval = 50, step = 1) targetSlab = input.float(150, "Target Price", minval = 1, maxval = 2000, step = 10) Stoploss = input.float(20, "Stop Loss", minval = 1, maxval = 2000, step = 5) offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) //out = ta.sma(src, len) ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) tfSource = request.security(syminfo.tickerid, timeFrame, src, barmerge.gaps_on, barmerge.lookahead_off) mySMA = ma(tfSource, len, typeMA) plot(mySMA, color=color.rgb(243, 33, 89), title="MA", offset=offset, linewidth = 2) slClose = request.security(syminfo.tickerid, slTimeFrame, src, barmerge.gaps_on, barmerge.lookahead_off) highTravel = low > mySMA lowTravel = high < mySMA touchabove = (((high[1] + alertPrecision) > mySMA[1]) and (low[1] < mySMA[1])) //and (high[2] < mySMA[2]) touchbelow = (((low[1] - alertPrecision) < mySMA[1]) and (high[1] > mySMA[1])) //and (low[2] > mySMA[2]) crossabove = math.min(open, close) > mySMA crossbelow = math.max(open, close) < mySMA upalert = (touchabove or touchbelow) and crossabove downalert = (touchabove or touchbelow) and crossbelow h=hour(time('1'),"Asia/Kolkata") m=minute(time('1'),"Asia/Kolkata") startTime=h*100+m if upalert and strategy.position_size == 0 strategy.entry("buy", strategy.long, 15) if downalert and strategy.position_size == 0 strategy.entry("sell", strategy.short, 15) longexit = (slClose < (mySMA - slBuffer)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - Stoploss)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + targetSlab)) or (hour(time) == 15) shortexit = (slClose > (mySMA + slBuffer)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + Stoploss)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - targetSlab)) or (hour(time) == 15) if longexit strategy.close("buy") if shortexit strategy.close("sell")