
この戦略は,5日指数移動平均 ((EMA) とブリン帯 ((BB)) を用いて市場の潜在的な取引機会を識別する.価格がブリン帯を突破して軌道上または下行し,特定の条件を満たしたときに,戦略は買ったり売ったりするシグナルを生成する.この戦略は,市場の顕著な価格変動を捕捉し,同時にリスク管理と利益の最大化するために,ストップとターゲット価格を使用する.
この戦略の核心は,5日のEMAとブリンを活用して市場の傾向と変動性を判断することです.価格がブリン帯を突破して軌道上になり,上K線が5日のEMAより高いとき,戦略は売り信号を生成します.逆に,価格がブリン帯を突破して軌道下になり,上K線が5日のEMAより低いとき,戦略は買い信号を生成します.この方法は,潜在的なトレンドの反転または突破点を識別するのに役立ちます.
入場取引が開始された時点で,戦略は,入場価格の反対方向にストップロスを設定し,ターゲット価格を設定します. 潜在的な損失を制限するために. ターゲット価格は,予想される収益をロックするために,固定ポイント数 (例えば1000ポイント) に基づいて計算されます. 価格がストップロスまたはターゲット価格に触れた場合,戦略は取引を終了します.
EMAとブリン帯突破策は,市場の顕著な価格変動を捉えるために2つのよく使用される技術指標を利用している.この戦略は,明確な入場条件,リスク管理措置,収益目標があり,容易に理解し,実行することができる.しかし,戦略のパフォーマンスは,市場の変動性およびトレンドの不明確さに影響され得る.自適性パラメータ,シグナルフィルタリング機構およびパラメータ最適化を導入することにより,戦略の安定性と収益性をさらに向上させることができる.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Nifty Bank Strategy", overlay=true)
// Parameters
lengthEMA = 5
lengthBB = 20
multBB = 1.5
targetPoints = 1000
// Calculate 5-day EMA
ema5 = ta.ema(close, lengthEMA)
// Calculate Bollinger Bands (length 20, multiplier 1.5)
basis = ta.sma(close, lengthBB)
dev = multBB * ta.stdev(close, lengthBB)
upperBB = basis + dev
lowerBB = basis - dev
// Define strategy variables
var float entryPrice = na
var float stopLoss = na
var float targetPrice = na
var bool inTrade = false
var bool isLong = false
var float triggerHigh = na
var float triggerLow = na
var float triggerClose = na
if not inTrade
// Short Entry Trigger Condition
if low > ema5 and low > upperBB and high > upperBB
triggerLow := low
triggerHigh := high
triggerClose := close
label.new(bar_index, high, "Waiting for short trigger", color=color.yellow)
// Long Entry Trigger Condition
else if high < ema5 and high < lowerBB and low < lowerBB
triggerHigh := high
triggerLow := low
triggerClose := close
label.new(bar_index, low, "Waiting for long trigger", color=color.yellow)
// Check for Short Entry
if not inTrade and na(triggerClose) == false and close < triggerClose
if low < triggerLow
entryPrice := close
stopLoss := triggerHigh
targetPrice := entryPrice - targetPoints
strategy.entry("Short", strategy.short)
label.new(bar_index, high, "Short", color=color.red, style=label.style_label_down)
inTrade := true
isLong := false
triggerLow := na
triggerHigh := na
triggerClose := na
// Check for Long Entry
if not inTrade and na(triggerClose) == false and close > triggerClose
if high > triggerHigh
entryPrice := close
stopLoss := triggerLow
targetPrice := entryPrice + targetPoints
strategy.entry("Long", strategy.long)
label.new(bar_index, low, "Long", color=color.green, style=label.style_label_up)
inTrade := true
isLong := true
triggerLow := na
triggerHigh := na
triggerClose := na
// Manage Short Trade
if inTrade and not isLong
if high >= stopLoss
strategy.close("Short", comment="SL Hit")
label.new(bar_index, high, "SL Hit", color=color.red, style=label.style_label_down)
inTrade := false
else if low <= targetPrice
strategy.close("Short", comment="Target Hit")
label.new(bar_index, low, "Target Hit", color=color.green, style=label.style_label_up)
inTrade := false
// Manage Long Trade
if inTrade and isLong
if low <= stopLoss
strategy.close("Long", comment="SL Hit")
label.new(bar_index, low, "SL Hit", color=color.red, style=label.style_label_down)
inTrade := false
else if high >= targetPrice
strategy.close("Long", comment="Target Hit")
label.new(bar_index, high, "Target Hit", color=color.green, style=label.style_label_up)
inTrade := false
// Plotting
plot(ema5, color=color.orange, title="5-day EMA")
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.purple, title="Lower Bollinger Band")
// Plot trade entry and exit points
plotshape(series=inTrade and isLong ? entryPrice : na, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=inTrade and not isLong ? entryPrice : na, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")