وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متعدد مرحلے میں اتار چڑھاؤ کے مطابق ڈائنامک سپر ٹرینڈ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-11-29 16:57:19
ٹیگز:اے ٹی آرایس ایم اےSTDٹی پی

img

جائزہ

ملٹی اسٹیپ وایلیٹی ایڈجسٹڈ ڈائنامک سپر ٹرینڈ حکمت عملی ایک جدید تجارتی نظام ہے جو ویگاس چینل اور سپر ٹرینڈ اشارے کو جوڑتا ہے۔ حکمت عملی کی انفرادیت اس کی مارکیٹ کی اتار چڑھاؤ کے مطابق متحرک طور پر اپنانے کی صلاحیت اور خطرے سے فائدہ اٹھانے کے تناسب کو بہتر بنانے کے ل its اس کے ملٹی اسٹیپ ٹیک منافع میکانزم میں ہے۔ ویگاس چینل کے اتار چڑھاؤ کے تجزیے کو سپر ٹرینڈ کی رجحان کی پیروی کرنے کی صلاحیتوں کے ساتھ جوڑ کر ، حکمت عملی خود بخود اپنے پیرامیٹرز کو ایڈجسٹ کرتی ہے کیونکہ مارکیٹ کے حالات بدل جاتے ہیں ، جس سے زیادہ درست تجارتی سگنل ملتے ہیں۔

حکمت عملی کا اصول

یہ حکمت عملی تین بنیادی اجزاء پر کام کرتی ہے: ویگاس چینل کا حساب کتاب ، رجحان کا پتہ لگانے ، اور ملٹی مرحلہ منافع لینے کا طریقہ کار۔ ویگاس چینل قیمتوں کی اتار چڑھاؤ کی حدوں کی وضاحت کے لئے سادہ حرکت پذیر اوسط (ایس ایم اے) اور معیاری انحراف (ایس ٹی ڈی) کا استعمال کرتا ہے ، جبکہ سپر ٹرینڈ اشارے ایڈجسٹ شدہ اے ٹی آر اقدار کی بنیاد پر رجحان کی سمت کا تعین کرتا ہے۔ جب مارکیٹ کے رجحانات بدلتے ہیں تو تجارتی سگنل تیار کیے جاتے ہیں۔ ملٹی مرحلے کا منافع لینے کا طریقہ کار مختلف قیمتوں کی سطح پر جزوی باہر نکلنے کی اجازت دیتا ہے ، ایک ایسا طریقہ جو منافع میں تالے لگا دیتا ہے اور باقی پوزیشنوں کو ممکنہ فوائد حاصل کرنے کی اجازت دیتا ہے۔ حکمت عملی کی انفرادیت اس کی اتار چڑھاؤ ایڈجسٹمنٹ فیکٹر میں پڑتی ہے ، جو ویگاس چینل کی چوڑائی کی بنیاد پر سپر ٹرینڈ ضرب کو متحرک طور پر ایڈجسٹ کرتی ہے۔

حکمت عملی کے فوائد

  1. متحرک موافقت: حکمت عملی خود بخود اتار چڑھاؤ ایڈجسٹمنٹ فیکٹر کے ذریعے مختلف مارکیٹ کے حالات کو اپنانے.
  2. رسک مینجمنٹ: کثیر مرحلے کے منافع لینے کا طریقہ کار منافع کے حصول کے لئے ایک منظم نقطہ نظر فراہم کرتا ہے۔
  3. حسب ضرورت: مختلف تجارتی طرزوں کو ایڈجسٹ کرنے کے لئے متعدد پیرامیٹر کی ترتیبات پیش کرتا ہے۔
  4. مارکیٹ کا جامع احاطہ: طویل اور مختصر تجارت دونوں کی حمایت کرتا ہے۔
  5. بصری آراء: تجزیہ اور فیصلہ سازی کے لئے واضح گرافک انٹرفیس فراہم کرتا ہے۔

حکمت عملی کے خطرات

  1. پیرامیٹر حساسیت: پیرامیٹر کے مختلف مجموعے کارکردگی میں نمایاں تغیرات کا باعث بن سکتے ہیں۔
  2. تاخیر: حرکت پذیر اوسط پر مبنی اشارے میں فطری تاخیر ہوتی ہے۔
  3. جھوٹا بریک آؤٹ کا خطرہ: مختلف مارکیٹوں میں جھوٹے سگنل پیدا کر سکتا ہے۔
  4. ٹیک منافع تجارت: ابتدائی ٹیک منافع بڑے رجحانات سے محروم ہوسکتے ہیں ، دیر سے منافع لینے والے جمع ہونے والے منافع کو کھونے کا خطرہ رکھتے ہیں۔

حکمت عملی کی اصلاح کی ہدایات

  1. مختلف مارکیٹ کے حالات میں حکمت عملی کے پیرامیٹرز کو ایڈجسٹ کرنے کے لئے مارکیٹ کے ماحول کے فلٹرز متعارف کروائیں۔
  2. سگنل کی وشوسنییتا کو بہتر بنانے کے لیے حجم تجزیہ شامل کریں۔
  3. فائدہ اٹھانے کے انکولی طریقہ کار تیار کریں جو مارکیٹ کی اتار چڑھاؤ کی بنیاد پر منافع کی سطح کو متحرک طور پر ایڈجسٹ کریں۔
  4. سگنل کی تصدیق کے لیے اضافی تکنیکی اشارے شامل کریں۔
  5. مارکیٹ کے خطرے کی بنیاد پر متحرک پوزیشن سائزنگ کو نافذ کریں۔

خلاصہ

ملٹی اسٹیپ وایلیٹی ایڈجسٹڈ ڈائنامک سپر ٹرینڈ حکمت عملی ایک جدید مقداری تجارتی نقطہ نظر کی نمائندگی کرتی ہے ، جس میں متعدد تکنیکی اشارے اور منافع کمانے کے جدید طریقہ کار کو یکجا کیا گیا ہے تاکہ تاجروں کو ایک جامع تجارتی نظام فراہم کیا جاسکے۔ اس کی متحرک موافقت اور رسک مینجمنٹ کی خصوصیات اسے مختلف مارکیٹ کے ماحول میں کام کرنے کے لئے خاص طور پر موزوں بناتی ہیں ، جس میں اچھی اسکیل ایبلٹی اور اصلاح کی صلاحیت ہے۔ مسلسل بہتری اور اصلاح کے ذریعے ، حکمت عملی مستقبل میں زیادہ مستحکم تجارتی کارکردگی فراہم کرنے کا وعدہ کرتی ہے۔


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Step Vegas SuperTrend - strategy [presentTrading]", shorttitle="Multi-Step Vegas SuperTrend - strategy [presentTrading]", overlay=true, precision=3, commission_value=0.1, commission_type=strategy.commission.percent, slippage=1, currency=currency.USD)

// Input settings allow the user to customize the strategy's parameters.
tradeDirectionChoice = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"]) // Option to select the trading direction
atrPeriod = input(10, "ATR Period for SuperTrend") // Length of the ATR for volatility measurement
vegasWindow = input(100, "Vegas Window Length") // Length of the moving average for the Vegas Channel
superTrendMultiplier = input(5, "SuperTrend Multiplier Base") // Base multiplier for the SuperTrend calculation
volatilityAdjustment = input.float(5, "Volatility Adjustment Factor") // Factor to adjust the SuperTrend sensitivity to the Vegas Channel width

// User inputs for take profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(3.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(6.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(12.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(21.0, title="Take Profit % Step 4", group="Take Profit Settings")

takeProfitAmount1 = input.float(25, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(20, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(10, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(15, title="Take Profit Amount % Step 4", group="Take Profit Settings")

numberOfSteps = input.int(4, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")

// Calculate the Vegas Channel using a simple moving average and standard deviation.
vegasMovingAverage = ta.sma(close, vegasWindow)
vegasChannelStdDev = ta.stdev(close, vegasWindow)
vegasChannelUpper = vegasMovingAverage + vegasChannelStdDev
vegasChannelLower = vegasMovingAverage - vegasChannelStdDev

// Adjust the SuperTrend multiplier based on the width of the Vegas Channel.
channelVolatilityWidth = vegasChannelUpper - vegasChannelLower
adjustedMultiplier = superTrendMultiplier + volatilityAdjustment * (channelVolatilityWidth / vegasMovingAverage)

// Calculate the SuperTrend indicator values.
averageTrueRange = ta.atr(atrPeriod)
superTrendUpper = hlc3 - (adjustedMultiplier * averageTrueRange)
superTrendLower = hlc3 + (adjustedMultiplier * averageTrueRange)
var float superTrendPrevUpper = na
var float superTrendPrevLower = na
var int marketTrend = 1

// Update SuperTrend values and determine the current trend direction.
superTrendPrevUpper := nz(superTrendPrevUpper[1], superTrendUpper)
superTrendPrevLower := nz(superTrendPrevLower[1], superTrendLower)
marketTrend := close > superTrendPrevLower ? 1 : close < superTrendPrevUpper ? -1 : nz(marketTrend[1], 1)
superTrendUpper := marketTrend == 1 ? math.max(superTrendUpper, superTrendPrevUpper) : superTrendUpper
superTrendLower := marketTrend == -1 ? math.min(superTrendLower, superTrendPrevLower) : superTrendLower
superTrendPrevUpper := superTrendUpper
superTrendPrevLower := superTrendLower

// Enhanced Visualization
// Plot the SuperTrend and Vegas Channel for visual analysis.
plot(marketTrend == 1 ? superTrendUpper : na, "SuperTrend Upper", color=color.green, linewidth=2)
plot(marketTrend == -1 ? superTrendLower : na, "SuperTrend Lower", color=color.red, linewidth=2)
plot(vegasChannelUpper, "Vegas Upper", color=color.purple, linewidth=1)
plot(vegasChannelLower, "Vegas Lower", color=color.purple, linewidth=1)

// Apply a color to the price bars based on the current market trend.
barcolor(marketTrend == 1 ? color.green : marketTrend == -1 ? color.red : na)

// Detect trend direction changes and plot entry/exit signals.
trendShiftToBullish = marketTrend == 1 and marketTrend[1] == -1
trendShiftToBearish = marketTrend == -1 and marketTrend[1] == 1

plotshape(series=trendShiftToBullish, title="Enter Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=trendShiftToBearish, title="Enter Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

// Define conditions for entering long or short positions, and execute trades based on these conditions.
enterLongCondition = marketTrend == 1
enterShortCondition = marketTrend == -1

// Check trade direction choice before executing trade entries.
if enterLongCondition and (tradeDirectionChoice == "Long" or tradeDirectionChoice == "Both")
    strategy.entry("Long Position", strategy.long)

if enterShortCondition and (tradeDirectionChoice == "Short" or tradeDirectionChoice == "Both")
    strategy.entry("Short Position", strategy.short)

// Close all positions when the market trend changes.
if marketTrend != marketTrend[1]
    strategy.close_all()

// Multi-Stage Take Profit Logic
if (strategy.position_size > 0)
    entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
    if numberOfSteps >= 1
        strategy.exit("Take Profit 1", from_entry="Long Position", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
    if numberOfSteps >= 2
        strategy.exit("Take Profit 2", from_entry="Long Position", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
    if numberOfSteps >= 3
        strategy.exit("Take Profit 3", from_entry="Long Position", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
    if numberOfSteps >= 4
        strategy.exit("Take Profit 4", from_entry="Long Position", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))

if (strategy.position_size < 0)
    entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
    if numberOfSteps >= 1
        strategy.exit("Take Profit 1", from_entry="Short Position", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
    if numberOfSteps >= 2
        strategy.exit("Take Profit 2", from_entry="Short Position", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
    if numberOfSteps >= 3
        strategy.exit("Take Profit 3", from_entry="Short Position", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
    if numberOfSteps >= 4
        strategy.exit("Take Profit 4", from_entry="Short Position", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))


متعلقہ

مزید