이 전략은 BankNifty 선물에 대한 SMA 기반의 거래 전략이다. 전략의 주요 아이디어는 SMA를 트렌드 지표로 사용하여 가격이 SMA 이상으로 넘어가면 길게, 가격이 SMA 이하로 넘어가면 짧게하는 것입니다. 동시에 전략은 위험을 제어하고 이익을 잠금하기 위해 스톱 로스 및 영업 조건을 설정합니다.
이 전략의 핵심은 트렌드 지표로 SMA를 사용하는 것입니다. 구체적으로, 전략은 먼저 지정된 기간의 SMA를 계산 (기본값은 200), 그리고 그 다음 가격과 SMA의 상대적 위치에 따라 트렌드 방향을 결정합니다. 가격이 SMA를 넘을 때 상승 추세가 형성되었다고 간주되고, 긴 지위가 취득됩니다; 가격이 SMA를 넘을 때 하락 추세가 형성되었다고 간주되며, 짧은 지위가 취득됩니다. 또한, 전략은 또한 위험을 제어하고 이익을 잠금하기 위해 스톱 로스 및 영업 조건을 설정합니다. 스톱 로스 조건에는: 가격이 SMA를 특정 범위 (
이 전략은 BankNifty 선물에 적합한 SMA를 기반으로 한 간단한 거래 전략이다. 이 전략의 장점은 간단한 원리, 강력한 적응력 및 위험 통제 조치에 있다. 그러나 실제 응용에서는 여전히 매개 변수 최적화, 오스실레이션 시장, 트렌드 역전 및 내일 변동성과 같은 잠재적 위험에주의를 기울여야 한다. 미래에는 매개 변수 최적화, 다른 지표와 결합, 동적 스톱-러스 및 거래 시간을 제한하는 등의 측면에서 전략을 최적화하고 개선할 수 있다.
// 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")