
Die Strategie ist eine BankNifty-Futures-Trading-Strategie, die auf einem einfachen Moving Average (SMA) basiert. Die Hauptidee der Strategie besteht darin, den SMA als Trendindikator zu nutzen, um zu viel zu machen, wenn der Preis den SMA überschreitet, und leer zu sein, wenn der Preis den SMA unterbricht. Gleichzeitig setzt die Strategie auch Stop-Loss- und Stop-Stop-Bedingungen, um das Risiko zu kontrollieren und Gewinne zu sperren.
Der Kern der Strategie ist die Verwendung von SMAs als Trendindikatoren. Konkret berechnet die Strategie zunächst den SMA für den angegebenen Zeitraum ([200] als Default), um dann die Richtung des Trends anhand der relativen Position des Preises gegenüber dem SMA zu bestimmen. Wenn der Preis den SMA überschreitet, wird der Aufwärtstrend als gebildet angesehen, und dies ist ein Plus. Wenn der Preis den SMA unterschreitet, wird der Abwärtstrend als gebildet angesehen, und dies ist ein Minus.
Die Strategie ist eine SMA-basierte einfache Handelsstrategie für BankNifty-Futures. Sie ist in ihrer Einfachheit und Anpassungsfähigkeit sowie mit Risikokontrollen ausgestattet. In der Praxis muss jedoch auf die potenziellen Risiken wie Parameteroptimierung, Marktschocks, Trendumkehr und Schwankungen in der Börse geachtet werden. In Zukunft können Optimierungen und Verbesserungen der Strategie in Bezug auf Parameteroptimierung in Verbindung mit anderen Indikatoren, dynamischen Stop-Loss- und Handelsbegrenzungen in Betracht gezogen werden.
// 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")