
この戦略は,複数の技術指標 (MACD,Supertrend,Parabolic SAR) を統合して市場動向と取引信号を識別する総合的な量化取引方法である.この戦略は,異なる市場環境に対応できる柔軟で厳格な取引意思決定の枠組みを提供することを目的としている.
戦略は3つの重要な技術指標の動的組み合わせに基づいています.
戦略は,次の論理で取引決定を行います.
Vishalの自己適応型多指数取引戦略は,MACD,Supertrend,Parabolic SARの協同作用により,包括的で柔軟な取引意思決定の枠組みを提供する革新的な量化取引方法である.リスクがあるにもかかわらず,その多指数検証と対称取引ロジックは,投資家に深入調査に値する取引モデルを提供します.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-27 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Vishal Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// **MACD Inputs & Calculation**
fast_length = input.int(13, title="MACD Fast Length")
slow_length = input.int(27, title="MACD Slow Length")
signal_length = input.int(9, title="MACD Signal Smoothing")
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = ta.ema(macd, signal_length)
hist = macd - signal
// **Supertrend Inputs & Calculation**
atrPeriod = input.int(11, "ATR Length", minval = 1)
factor = input.float(3.0, "Factor", minval = 0.01, step = 0.01)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
bullTrend = direction < 0 // Uptrend Condition
bearTrend = direction > 0 // Downtrend Condition
// **Parabolic SAR Inputs & Calculation**
sarStep = input.float(0.02, "Parabolic SAR Step")
sarMax = input.float(0.2, "Parabolic SAR Max")
sar = ta.sar(sarStep, sarStep, sarMax)
// **Trade Entry Conditions**
macdBullish = macd > signal // MACD in Bullish Mode
macdBearish = macd < signal // MACD in Bearish Mode
priceAboveSAR = close > sar // Price above SAR (Bullish)
priceBelowSAR = close < sar // Price below SAR (Bearish)
// **Boolean Flags to Track Conditions Being Met**
var bool macdConditionMet = false
var bool sarConditionMet = false
var bool trendConditionMet = false
// **Track if Each Condition is Met in Any Order**
if (macdBullish)
macdConditionMet := true
if (macdBearish)
macdConditionMet := false
if (priceAboveSAR)
sarConditionMet := true
if (priceBelowSAR)
sarConditionMet := false
if (bullTrend)
trendConditionMet := true
if (bearTrend)
trendConditionMet := false
// **Final Long Entry Signal (Triggers When All Three Flags Are True)**
longSignal = macdConditionMet and sarConditionMet and trendConditionMet
// **Final Short Entry Signal (Triggers When All Three Flags Are False)**
shortSignal = not macdConditionMet and not sarConditionMet and not trendConditionMet
// **Execute Full Equity Trades**
if (longSignal)
strategy.entry("Long", strategy.long)
if (shortSignal)
strategy.entry("Short", strategy.short)
// **Exit Logic - Requires 2 Consecutive Candle Closes Below/Above SAR**
var int belowSARCount = 0
var int aboveSARCount = 0
if (strategy.position_size > 0) // Long position is active
belowSARCount := close < sar ? belowSARCount + 1 : 0
if (belowSARCount >= 1)
strategy.close("Long")
if (strategy.position_size < 0) // Short position is active
aboveSARCount := close > sar ? aboveSARCount + 1 : 0
if (aboveSARCount >= 1)
strategy.close("Short")
// **Plot Indicators**
plot(supertrend, title="Supertrend", color=bullTrend ? color.green : color.red, linewidth=2, style=plot.style_linebr)
plot(sar, title="Parabolic SAR", color=color.blue, style=plot.style_cross, linewidth=2)
plot(macd, title="MACD Line", color=color.blue, linewidth=2)
plot(signal, title="MACD Signal", color=color.orange, linewidth=2)
plot(hist, title="MACD Histogram", style=plot.style_columns, color=hist >= 0 ? color.green : color.red)