Стратегия торговли фьючерсами BankNifty, основанная на скользящей средней


Дата создания: 2024-03-28 18:15:32 Последнее изменение: 2024-03-28 18:15:32
Копировать: 0 Количество просмотров: 605
1
Подписаться
1617
Подписчики

Стратегия торговли фьючерсами BankNifty, основанная на скользящей средней

Обзор

Эта стратегия является стратегией торговли фьючерсами BankNifty, основанной на простой движущейся средней (SMA). Основная идея стратегии заключается в использовании SMA в качестве индикатора тренда, делая больше, когда цена проходит через SMA, и делая пустоту, когда цена проходит через SMA. В то же время, эта стратегия также устанавливает условия стоп-лосса и стоп-стоп для контроля риска и блокирования прибыли.

Стратегический принцип

В основе этой стратегии лежит использование SMA в качестве индикатора тренда. В частности, стратегия сначала рассчитывает SMA на заданный период (задается 200), а затем определяет направление тренда в зависимости от относительной позиции цены к SMA. Когда цена пересекает SMA, считается, что восходящая тенденция уже сформировалась, и тогда делается больше; когда цена пересекает SMA, считается, что нисходящая тенденция уже сформировалась, и тогда делается пусто. Кроме того, стратегия устанавливает условия стоп-лосса и стоп-стопа для контроля риска и блокирования прибыли.

Стратегические преимущества

  1. Простые и понятные: Стратегия основана на классическом техническом показателе SMA, принципы простые, легко понятные и реализуемые.
  2. Адаптируемость: стратегия может быть адаптирована к различным рыночным условиям и торговым видам путем корректировки параметров
  3. Контроль риска: в этой стратегии установлены множественные условия стоп-лосса, которые позволяют эффективно контролировать потенциальные потери. В то же время, установка условий стоп-лосса также помогает своевременно блокировать прибыль.
  4. Следить за тенденциями: SMA является отсталым показателем, но именно поэтому он может хорошо подтвердить формирование тенденций. Эта стратегия использует эту особенность SMA, чтобы эффективно улавливать среднесрочные и долгосрочные тенденции рынка.

Стратегический риск

  1. Чувствительный к параметрам: эффективность стратегии в значительной степени зависит от выбора параметров. Различные параметры могут привести к совершенно разным результатам. Поэтому параметры должны быть оптимизированы и протестированы в реальных приложениях.
  2. Во время рыночных потрясений цена часто пересекает SMA, что может привести к частым сделкам, что увеличивает стоимость и риск торгов.
  3. Переворот тренда: когда рыночная тенденция меняется, стратегия может задерживать реакцию, что приводит к потенциальным потерям.
  4. Волатильность в середине серии: эта стратегия может вызвать торговый сигнал в любое время серии, в то время как фьючерсы BankNifty могут иметь большую волатильность в середине серии, что может привести к большим провалам и потенциальным потерям.

Направление оптимизации стратегии

  1. Параметровая оптимизация: можно найти параметровую настройку, наиболее подходящую для текущей рыночной среды, путем отбора и оптимизации различных комбинаций параметров.
  2. В сочетании с другими показателями: можно рассмотреть возможность объединения SMA с другими техническими показателями (например, RSI, MACD и т. Д.) для повышения надежности и точности стратегии.
  3. Динамические стоп-убытки: можно рассмотреть возможность использования динамических стоп-стратегий (например, отслеживание стоп-убытков) для лучшего контроля риска.
  4. Ограничение времени торговли: можно рассмотреть возможность ограничения времени торговли в периоды времени с меньшей волатильностью (например, перед открытием и после закрытия), чтобы уменьшить влияние волатильности в диапазоне.

Подвести итог

Эта стратегия является простой торговой стратегией на основе 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")