
ایک متحرک سپر ٹرینڈ حکمت عملی جس میں متعدد مرحلے کی اتار چڑھاؤ کی شرح خود بخود ہوتی ہے۔ یہ ایک جدید تجارتی نظام ہے جو ویگاس چینل اور سپر ٹرینڈ اشارے کو جوڑتا ہے۔ اس حکمت عملی کی منفرد بات یہ ہے کہ یہ مارکیٹ میں اتار چڑھاؤ کو متحرک طور پر اپنانے کی صلاحیت رکھتی ہے ، اور اس کے ساتھ ساتھ اس میں منافع کے تناسب کو بہتر بنانے کے لئے ایک کثیر مرحلے کی روک تھام کا استعمال کرتی ہے۔ حکمت عملی ، ویگاس چینل کے اتار چڑھاؤ کے تجزیے کو سپر ٹرینڈ کے رجحان سے باخبر رہنے کی خصوصیت کے ساتھ جوڑ کر ، مارکیٹ کے حالات میں تبدیلی کے مطابق اپنے پیرامیٹرز کو خود بخود ایڈجسٹ کرتی ہے ، اور اس طرح زیادہ درست تجارتی سگنل فراہم کرتی ہے۔
حکمت عملی تین بنیادی اجزاء پر مبنی ہے: ویگاس چینل کا حساب کتاب ، رجحان کا پتہ لگانے اور ایک کثیر مرحلہ روکنے کا طریقہ۔ ویگاس چینل قیمتوں میں اتار چڑھاؤ کی حد کی وضاحت کے لئے سادہ حرکت پذیر اوسط ((SMA) اور معیاری فرق ((STD) کا استعمال کرتا ہے۔ سپر ٹرینڈ اشارے ایڈجسٹ شدہ اے ٹی آر کی قیمتوں پر مبنی رجحان کی سمت کا تعین کرتے ہیں۔ جب مارکیٹ میں رجحانات تبدیل ہوجاتے ہیں تو ، نظام تجارتی سگنل پیدا کرتا ہے۔ کثیر مرحلہ روکنے کا طریقہ کار مختلف قیمتوں کی سطحوں پر بیچوں میں باہر نکلنے کی اجازت دیتا ہے ، جس سے منافع کو لاک کیا جاسکتا ہے اور کچھ پوزیشنوں کو ممکنہ منافع حاصل کرنے کے لئے جاری رکھا جاسکتا ہے۔ حکمت عملی کی ایک خاص بات اس کی اتار چڑھاؤ کی شرح ایڈجسٹمنٹ فیکٹر ہے ، جو ویگاس چینل کی چوڑائی کی حرکیات کے مطابق سپر ٹرینڈ ضرب کو ایڈجسٹ کرتا ہے۔
متحرک اوور ٹرینڈ حکمت عملی کے ساتھ مل کر ایک اعلی درجے کی کوانٹومیٹڈ ٹریڈنگ کا طریقہ کار پیش کرتا ہے۔ متعدد تکنیکی اشارے اور جدید اسٹاپنگ میکانزم کے ساتھ مل کر ، یہ تاجروں کو ایک مکمل تجارتی نظام فراہم کرتا ہے۔ اس کی متحرک موافقت اور خطرے کے انتظام کی خصوصیات اس کو مختلف مارکیٹ کے ماحول میں کام کرنے کے لئے خاص طور پر موزوں بناتی ہیں ، اور اس میں اچھی طرح سے توسیع اور اصلاح کی گنجائش ہے۔ اس حکمت عملی میں مسلسل بہتری اور اصلاح کے ساتھ ، مستقبل میں زیادہ مستحکم تجارتی کارکردگی پیش کرنے کی امید ہے۔
/*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))