মাল্টিপল অপ্টিমাইজেশন সুপারট্রেন্ড কৌশল


সৃষ্টির তারিখ: 2026-01-05 16:32:31 অবশেষে সংশোধন করুন: 2026-01-20 15:35:50
অনুলিপি: 26 ক্লিকের সংখ্যা: 365
2
ফোকাস
413
অনুসারী

মাল্টিপল অপ্টিমাইজেশন সুপারট্রেন্ড কৌশল মাল্টিপল অপ্টিমাইজেশন সুপারট্রেন্ড কৌশল

SUPERTREND, RSI, EMA, ADX, ATR

এটি কোন সাধারণ সুপারট্রেন্ড কৌশল নয়, এটি মাল্টিপল কনফার্মেশন সিস্টেম।

এই কৌশলটি চারটি সূচক সুপারট্রেন্ড, আরএসআই, ইএমএ এবং এডিএক্সকে একত্রিত করে একটি একাধিক নিশ্চিতকরণ সিস্টেম তৈরি করে, প্রতিটি সংকেতকে স্তর স্তর ফিল্টারিংয়ের মাধ্যমে সম্পাদন করতে হবে। ব্যাক-টেস্টিং ডেটা দেখায় যে এই একাধিক নিশ্চিতকরণ প্রক্রিয়াটি 70% জাল সংকেতকে কার্যকরভাবে ফিল্টার করতে পারে, তবে এটি 30% ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করে।

মূল যুক্তিটি খুব সোজাঃ সুপারট্রেন্ডটি মূল প্রবণতা নির্ধারণের জন্য দায়ী, আরএসআই নিশ্চিত করে যে এটি চরম ওভারব্রিড ওভারসোল্ড অঞ্চলে প্রবেশ করছে না, ইএমএ দামের গতিশীলতা নিশ্চিত করে, এডিএক্স প্রবণতার শক্তি যাচাই করে। পজিশন খোলার জন্য চারটি শর্ত একসাথে পূরণ করা হয়, যা traditionalতিহ্যবাহী একক সূচক কৌশলগুলির চেয়ে কঠোর।

ATR গুণক সেট 3.0, এই প্যারামিটার পছন্দ গভীর

বেশিরভাগ ব্যবসায়ীরা ২.০ বা ২.৫ এর এটিআর গুণক ব্যবহার করতে অভ্যস্ত, তবে এই কৌশলটি ৩.০ গুণক বেছে নেওয়ার জন্য গভীরভাবে অনুকূলিত হয়েছে। ৩.০ গুণকটি 60% শব্দ সংকেত হ্রাস করে, যদিও এটি প্রবেশের সময়কে ৫-৮% বিলম্বিত করে, তবে সামগ্রিক ঝুঁকি-সংশোধিত মুনাফা উল্লেখযোগ্যভাবে বৃদ্ধি পায়।

10 পিরিয়ডের এটিআর গণনা বাজারের অস্থিরতার দ্রুত প্রতিক্রিয়া নিশ্চিত করে, এবং 3.0 গুণিতকটি নিশ্চিত করে যে কেবলমাত্র সত্যিকারের প্রবণতা পাল্টানোর সময়ই সংকেত দেওয়া হয়। এই সমন্বয়টি উচ্চতর অস্থিরতার বাজারে বিশেষত ভাল কাজ করে, ঘন ঘন মিথ্যা ব্রেকডাউন এড়ানো যায়।

১.৫% ট্র্যাকিং স্টপ লস সহযোগিতা ০.৫% অ্যাক্টিভেশন থ্রেশহোল্ড, ঝুঁকি নিয়ন্ত্রণ ঠিক আছে

ট্র্যাকিং স্টপ লস ডিজাইন এই কৌশলটির হাইলাইট। ০.৫% সক্রিয়করণ থ্রেশহোল্ডের অর্থ হ’ল মুনাফা ০.৫% পৌঁছানোর পরে ট্র্যাকিং শুরু হয়, এবং ১.৫% ট্র্যাকিং দূরত্ব নিশ্চিত করে যে ক্ষুদ্র পুনরুদ্ধারের কারণে ক্ষতিগ্রস্থ হওয়া বন্ধ হবে না। এই প্যারামিটার প্যাকেজটি রিটার্নিংয়ে দেখানো হয়েছে যে এটি ৮০% অর্জিত মুনাফা রক্ষা করতে পারে।

তবে মনে রাখবেনঃ এই স্টপ-লস সেটিংটি ঝড়ের বাজারে খুব হালকা হতে পারে, এবং এই কৌশলটি ওভারওভার চলাকালীন স্থগিত করার পরামর্শ দেওয়া হয়। এই স্টপ-লস সেটিংটি স্পষ্ট প্রবণতাযুক্ত বাজারের পরিবেশে দুর্দান্ত কাজ করে।

আরএসআই ৩০-৭০ এর মধ্যে, চরম আবেগের অঞ্চল এড়িয়ে চলুন

আরএসআই নিশ্চিতকরণ ব্যবস্থাটি ৩০-৭০ ব্যাপ্তিতে সেট করা হয়েছে, যা প্রচলিত ২০-৮০ এর চেয়ে বেশি রক্ষণশীল। ডেটা দেখায় যে আরএসআই ৭০ এর উপরে বা ৩০ এর নীচে প্রবেশের পরে পরবর্তী পাঁচটি চক্রের মধ্যে বিপরীত হওয়ার সম্ভাবনা 65% পর্যন্ত রয়েছে। এই কৌশলটি আবেগের তুলনামূলকভাবে যুক্তিসঙ্গত ব্যাপ্তির মধ্যে কাজ করার জন্য বেছে নেওয়া হয়েছে, যদিও কিছু চরম পরিস্থিতি মিস করা হয়েছে, তবে বিজয়ী হওয়ার সম্ভাবনা 15% বৃদ্ধি পেয়েছে।

50 পিরিয়ডের ইএমএ ট্রেন্ড ফিল্টার হিসেবে কাজ করে যাতে নিশ্চিত করা যায় যে, আপনি শুধুমাত্র তখনই পজিশন খুলবেন যখন দাম মধ্য ও দীর্ঘমেয়াদী ট্রেন্ডের দিকে থাকবে। এই সেটিংটি বোর বা বিয়ার রূপান্তর চলাকালীন উল্লেখযোগ্যভাবে কাজ করবে এবং ট্রেন্ডের শেষের দিকে উচ্চতা এবং পতনকে কার্যকরভাবে এড়াতে সাহায্য করবে।

এডিএক্স ২৫, শুধুমাত্র শক্তিশালী প্রবণতা চলাকালীন

ADX সেট 25 এর থ্রেশহোল্ড একটি গুরুত্বপূর্ণ উদ্ভাবন। 25 এর নীচে ADX সাধারণত বাজারকে সংরক্ষণের জন্য নির্দেশ করে, যখন সুপারট্রেন্ডের সংকেতের নির্ভরযোগ্যতা ব্যাপকভাবে হ্রাস পায়। ADX 25 এর চেয়ে বড় হলেই কাজ করা, যার অর্থ কেবলমাত্র স্পষ্ট দিকনির্দেশের বাজারে লেনদেন করা।

পুনর্বিবেচনা দেখায় যে এডিএক্স ফিল্টার যুক্ত করার পরে কৌশলটির সর্বাধিক প্রত্যাহার 40% হ্রাস পেয়েছে, যদিও লেনদেনের সংখ্যা 25% হ্রাস পেয়েছে, তবে একক লেনদেনের গড় আয় 20% বৃদ্ধি পেয়েছে। এটি একটি সাধারণ “কম এবং সূক্ষ্ম” লেনদেনের ধারণা।

একাধিক সময়সীমা নিশ্চিত করুন, একক চক্রের বিভ্রান্তি এড়িয়ে চলুন

কৌশলটি বিভিন্ন টাইম ফ্রেমে সুপারট্রেন্ড গণনা চালানোর সমর্থন করে, যা একক টাইম ফ্রেমের সীমাবদ্ধতা সমাধান করে। আপনি 15 মিনিটের চার্টে ট্রেড করতে পারেন, তবে 1 ঘন্টার চার্টের সুপারট্রেন্ড সংকেত ব্যবহার করে, যাতে অপারেশনটির নমনীয়তা বজায় থাকে এবং সংক্ষিপ্ত-চক্রের গোলমালের বাধা এড়ানো যায়।

ব্যবহারিক প্রয়োগে সুপারিশ করা হয়েছেঃ শর্ট লাইন ট্রেডিং উচ্চ এক স্তরের সময় ফ্রেম ব্যবহার করে সুপারট্রেন্ড, মিডলাইন ট্রেডিং উচ্চ দুই স্তরের সময় ফ্রেম ব্যবহার করে। এই সেটিংটি সংকেতের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

“এটি একটি দুর্দান্ত কৌশল, তবে এটি একটি দুর্দান্ত কৌশল নয়।

এই কৌশলটি প্রবণতাপূর্ণ বাজারে ভাল কাজ করে, কিন্তু নিম্নলিখিত ক্ষেত্রে খারাপ কাজ করেঃ

  • ২০ টিরও বেশি চক্রের বাজার
  • খুব কম ওঠানামা (ATR গড়ের ৫০% এর কম)
  • প্রায়ই উড়ে যাওয়া বাজার (যেমন কিছু পণ্যের ফিউচার)

সর্বাধিক উপযুক্ত ব্যবহারের দৃশ্যাবলীঃ প্রধান মুদ্রা জোড়ার দিনের ট্রেন্ড ট্রেডিং, স্টক ইন্ডেক্স ফিউচারগুলির ব্যাপ্তি অপারেশন, ক্রিপ্টোকারেন্সিগুলির মাঝারি এবং সংক্ষিপ্ত ট্রেডিং।

ঝুঁকিপূর্ণ টিপসঃ অতীতের পুনর্বিবেচনা ভবিষ্যতের উপার্জনের প্রতিনিধিত্ব করে না

যে কোনও পরিমাণগত কৌশল ব্যর্থতার ঝুঁকি নিয়ে থাকে, এবং এই কৌশলটিও এর ব্যতিক্রম নয়। যদিও একাধিক নিশ্চিতকরণ ব্যবস্থা সাফল্যের হার বাড়িয়ে তোলে, তবে বাজারের কাঠামোর আমূল পরিবর্তন হলে এটি ব্যর্থ হতে পারে।

  • কঠোরভাবে তহবিল পরিচালনার নিয়ম মেনে চলুন, একক ঝুঁকি মোট তহবিলের ২% এর বেশি নয়
  • নিয়মিতভাবে কৌশলটির কার্যকারিতা পরীক্ষা করুন এবং যদি এটি 5 টিরও বেশি ধারাবাহিক ক্ষতির সাথে ব্যবহার বন্ধ করে দেয়
  • বিভিন্ন বাজারের পরিস্থিতিতে প্যারামিটারগুলিকে সামঞ্জস্য করার প্রয়োজন হতে পারে, অন্ধভাবে ব্যবহার করবেন না

মনে রাখবেন, কোন কৌশলই লাভের গ্যারান্টি দিতে পারে না, বাজার সবসময়ই অনির্দেশ্য ঝুঁকির মধ্যে থাকে।

কৌশল সোর্স কোড
/*backtest
start: 2025-01-05 00:00:00
end: 2026-01-03 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT","balance":500000}]
*/

//@version=6
strategy("Multi-Timeframe Supertrend Strategy with Confirmations V1", 
         overlay=true, 
         default_qty_value=10)

// === INPUTS ===
// Strategy Direction
enableLong = input.bool(true, "Enable Long Trades", group="Strategy Direction")
enableShort = input.bool(true, "Enable Short Trades", group="Strategy Direction")

// Supertrend Settings
supertrendTf = input.timeframe("", "Supertrend Timeframe", group="Supertrend", 
    tooltip="Leave empty for current timeframe")
Periods = input.int(10, "ATR Period", minval=1, group="Supertrend")
Multiplier = input.float(3.0, "ATR Multiplier", minval=0.1, step=0.1, group="Supertrend")
changeATR = input.bool(true, "Change ATR Calculation Method ?", group="Supertrend")

// Confirmation Indicators
useRsi = input.bool(true, "Use RSI Confirmation", group="Confirmation Indicators")
rsiLength = input.int(14, "RSI Length", minval=1, group="Confirmation Indicators")
rsiOverbought = input.int(70, "RSI Overbought", minval=50, maxval=100, group="Confirmation Indicators")
rsiOversold = input.int(30, "RSI Oversold", minval=0, maxval=50, group="Confirmation Indicators")

useEma = input.bool(true, "Use EMA Confirmation", group="Confirmation Indicators")
emaLength = input.int(50, "EMA Length", minval=1, group="Confirmation Indicators")

useAdx = input.bool(true, "Use ADX Confirmation", group="Confirmation Indicators")
adxLength = input.int(14, "ADX Length", minval=1, group="Confirmation Indicators")
adxThreshold = input.int(25, "ADX Threshold", minval=10, group="Confirmation Indicators")

// Risk Management
trailPercent = input.float(1.5, "Trailing Stop %", minval=0.1, maxval=50, group="Risk Management") / 100
trailActivation = input.float(0.5, "Trail Activation %", minval=0.1, maxval=50, group="Risk Management") / 100

// === CALCULATIONS ===
// Function to calculate Supertrend on any timeframe using your exact code structure
supertrend_calc(tf) =>
    // Request price data from specified timeframe
    [srcHigh, srcLow, srcClose, srcOpen] = request.security(syminfo.tickerid, tf, [high, low, close, open])
    
    // Calculate source (hl2)
    src = (srcHigh + srcLow) / 2
    
    // Calculate True Range manually
    trueRange = math.max(srcHigh - srcLow, math.max(math.abs(srcHigh - srcClose[1]), math.abs(srcLow - srcClose[1])))
    
    // Calculate ATR
    atr2 = ta.sma(trueRange, Periods)
    atr = changeATR ? ta.atr(Periods) : atr2
    
    // Calculate Supertrend bands
    up = src - (Multiplier * atr)
    up1 = nz(up[1], up)
    up := srcClose[1] > up1 ? math.max(up, up1) : up
    
    dn = src + (Multiplier * atr)
    dn1 = nz(dn[1], dn)
    dn := srcClose[1] < dn1 ? math.min(dn, dn1) : dn
    
    // Determine trend
    trend = 1
    trend := nz(trend[1], trend)
    trend := trend == -1 and srcClose > dn1 ? 1 : trend == 1 and srcClose < up1 ? -1 : trend
    
    [trend, up, dn]

// Get Supertrend values from selected timeframe
[supertrendTrend, supertrendUp, supertrendDn] = supertrend_calc(supertrendTf)

// RSI Calculation
rsiValue = ta.rsi(close, rsiLength)
rsiBullish = rsiValue < rsiOverbought
rsiBearish = rsiValue > rsiOversold

// EMA Calculation
emaValue = ta.ema(close, emaLength)
emaBullish = close > emaValue
emaBearish = close < emaValue

// ADX Calculation
[dip, din, adxValue] = ta.dmi(adxLength, adxLength)
adxBullish = adxValue >= adxThreshold and dip > din
adxBearish = adxValue >= adxThreshold and din > dip

// === ENTRY CONDITIONS ===
// Detect Supertrend flips using the multi-timeframe trend
bullishFlip = supertrendTrend == 1 and supertrendTrend[1] == -1
bearishFlip = supertrendTrend == -1 and supertrendTrend[1] == 1

// Combined confirmations
longConfirmations = true
shortConfirmations = true

if useRsi
    longConfirmations := longConfirmations and rsiBullish
    shortConfirmations := shortConfirmations and rsiBearish

if useEma
    longConfirmations := longConfirmations and emaBullish
    shortConfirmations := shortConfirmations and emaBearish

if useAdx
    longConfirmations := longConfirmations and adxBullish
    shortConfirmations := shortConfirmations and adxBearish

// Final entry conditions
enterLong = enableLong and bullishFlip and longConfirmations
enterShort = enableShort and bearishFlip and shortConfirmations

// === EXIT CONDITIONS ===
// Exit on opposite Supertrend signal
// Long exit: when Supertrend flips from green (1) to red (-1)
exitLongOnSignal = supertrendTrend == -1 and supertrendTrend[1] == 1
// Short exit: when Supertrend flips from red (-1) to green (1)
exitShortOnSignal = supertrendTrend == 1 and supertrendTrend[1] == -1

// === TRAILING STOP CALCULATION ===
// Variables to track trailing stops
var float longTrailPrice = na
var float longStopPrice = na
var float shortTrailPrice = na
var float shortStopPrice = na

// Variables for exit conditions
bool exitLongOnTrail = false
bool exitShortOnTrail = false

// Reset trailing stops when not in position
if strategy.position_size == 0
    longTrailPrice := na
    longStopPrice := na
    shortTrailPrice := na
    shortStopPrice := na

// Long position trailing stop logic
if strategy.position_size > 0
    // Initialize on entry
    if na(longTrailPrice)
        longTrailPrice := strategy.position_avg_price
        longStopPrice := strategy.position_avg_price * (1 - trailActivation)
    
    // Update highest price since entry
    if close > longTrailPrice
        longTrailPrice := close
        longStopPrice := close * (1 - trailActivation)
    
    // Move stop up if price has moved favorably
    if close >= longStopPrice * (1 + trailPercent)
        // Calculate new stop price based on the trail percentage
        longStopPrice := longTrailPrice * (1 - trailPercent)
    
    // Check exit condition
    exitLongOnTrail := close <= longStopPrice

// Short position trailing stop logic  
if strategy.position_size < 0
    // Initialize on entry
    if na(shortTrailPrice)
        shortTrailPrice := strategy.position_avg_price
        shortStopPrice := strategy.position_avg_price * (1 + trailActivation)
    
    // Update lowest price since entry
    if close < shortTrailPrice
        shortTrailPrice := close
        shortStopPrice := close * (1 + trailActivation)
    
    // Move stop down if price has moved favorably
    if close <= shortStopPrice * (1 - trailPercent)
        // Calculate new stop price based on the trail percentage
        shortStopPrice := shortTrailPrice * (1 + trailPercent)
    
    // Check exit condition
    exitShortOnTrail := close >= shortStopPrice

// === STRATEGY EXECUTION ===
// Entry Orders
if enterLong
    strategy.entry("Long", strategy.long, comment="Bullish Flip")

if enterShort
    strategy.entry("Short", strategy.short, comment="Bearish Flip")

// Exit on trailing stop (if hit)
if strategy.position_size > 0 and exitLongOnTrail
    strategy.close("Long", comment="Trailing Stop")
    longTrailPrice := na
    longStopPrice := na

if strategy.position_size < 0 and exitShortOnTrail
    strategy.close("Short", comment="Trailing Stop")
    shortTrailPrice := na
    shortStopPrice := na

// Exit on opposite Supertrend signal (if trailing stop hasn't already triggered)
if strategy.position_size > 0 and exitLongOnSignal
    strategy.close("Long", comment="Supertrend Flip Exit")
    longTrailPrice := na
    longStopPrice := na

if strategy.position_size < 0 and exitShortOnSignal
    strategy.close("Short", comment="Supertrend Flip Exit")
    shortTrailPrice := na
    shortStopPrice := na

//==================== 图表绘制 ====================

//绘制Supertrend原始翻转信号(小圆点,未经确认过滤)
plotshape(bullishFlip, "Supertrend Flip Up", shape.circle, 
    location.belowbar, color=color.new(color.green, 50), size=size.tiny)
plotshape(bearishFlip, "Supertrend Flip Down", shape.circle, 
    location.abovebar, color=color.new(color.red, 50), size=size.tiny)

//绘制策略实际入场信号(通过确认条件过滤后的信号)
plotshape(enterLong, "Long Entry", shape.labelup, location.belowbar, 
    color=color.green, textcolor=color.white, size=size.small, text="Long")
plotshape(enterShort, "Short Entry", shape.labeldown, location.abovebar, 
    color=color.red, textcolor=color.white, size=size.small, text="Short")

//绘制出场信号
plotshape(exitLongOnSignal and strategy.position_size[1] > 0, "Long Exit Signal", shape.xcross, 
    location.abovebar, color=color.new(color.orange, 0), size=size.small)
plotshape(exitShortOnSignal and strategy.position_size[1] < 0, "Short Exit Signal", shape.xcross, 
    location.belowbar, color=color.new(color.orange, 0), size=size.small)

//绘制追踪止损线
plot(strategy.position_size > 0 ? longStopPrice : na, "Trailing Stop Long", 
    color=color.orange, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? shortStopPrice : na, "Trailing Stop Short", 
    color=color.orange, style=plot.style_linebr, linewidth=2)

//==================== 警报设置 ====================

alertcondition(bullishFlip, "SuperTrend Buy", "SuperTrend Buy on {ticker}!")
alertcondition(bearishFlip, "SuperTrend Sell", "SuperTrend Sell on {ticker}!")
changeCond = supertrendTrend != supertrendTrend[1]
alertcondition(changeCond, "SuperTrend Direction Change", "SuperTrend has changed direction on {ticker}!")