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

بولنگر بینڈ اور موم بتی کے نمونوں پر مبنی متحرک اتار چڑھاؤ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-11-29 16:29:01
ٹیگز:بی بیایس ایم اےاے ٹی آرآر ایس آئیآر او سیایم ٹی ایف

img

جائزہ

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

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

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

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

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

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

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

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

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

خلاصہ

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


/*backtest
start: 2023-11-29 00:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trade Entry Detector, based on Wick to Body Ratio when price tests Bollinger Bands", overlay=true, default_qty_type=strategy.fixed)

// Input for primary analysis time frame
timeFrame = "D"  // Daily time frame

// Bollinger Band settings
length = input.int(20, title="Bollinger Band Length", minval=1)
mult = input.float(2.0, title="Standard Deviation Multiplier", minval=0.1)
source = input(close, title="Source")

// Entry ratio settings
wickToBodyRatio = input.float(1.0, title="Minimum Wick-to-Body Ratio", minval=0)

// Order Fill Timing Option
fillOption = input.string("Daily Close", title="Order Fill Timing", options=["Daily Close", "Daily Open", "HOD", "LOD"])

// Account and risk settings
accountBalance = 100000  // Account balance in dollars
riskPercentage = 1.0     // Risk percentage per trade
riskAmount = (riskPercentage / 100) * accountBalance // Fixed 1% risk amount

// Request daily data for calculations
dailyHigh = request.security(syminfo.tickerid, timeFrame, high)
dailyLow = request.security(syminfo.tickerid, timeFrame, low)
dailyClose = request.security(syminfo.tickerid, timeFrame, close)
dailyOpen = request.security(syminfo.tickerid, timeFrame, open)

// Calculate Bollinger Bands on the daily time frame
dailyBasis = request.security(syminfo.tickerid, timeFrame, ta.sma(source, length))
dailyDev = mult * request.security(syminfo.tickerid, timeFrame, ta.stdev(source, length))
dailyUpperBand = dailyBasis + dailyDev
dailyLowerBand = dailyBasis - dailyDev

// Calculate the body and wick sizes on the daily time frame
dailyBodySize = math.abs(dailyOpen - dailyClose)
dailyUpperWickSize = dailyHigh - math.max(dailyOpen, dailyClose)
dailyLowerWickSize = math.min(dailyOpen, dailyClose) - dailyLow

// Conditions for a candle with an upper wick or lower wick that touches the Bollinger Bands
upperWickCondition = (dailyUpperWickSize / dailyBodySize >= wickToBodyRatio) and (dailyHigh > dailyUpperBand)
lowerWickCondition = (dailyLowerWickSize / dailyBodySize >= wickToBodyRatio) and (dailyLow < dailyLowerBand)

// Define the swing high and swing low for stop loss placement
var float swingLow = na
var float swingHigh = na

if (ta.pivothigh(dailyHigh, 5, 5))
    swingHigh := dailyHigh[5]

if (ta.pivotlow(dailyLow, 5, 5))
    swingLow := dailyLow[5]

// Determine entry price based on chosen fill option
var float longEntryPrice = na
var float shortEntryPrice = na

if lowerWickCondition
    longEntryPrice := fillOption == "Daily Close" ? dailyClose :
                      fillOption == "Daily Open" ? dailyOpen :
                      fillOption == "HOD" ? dailyHigh : dailyLow

if upperWickCondition
    shortEntryPrice := fillOption == "Daily Close" ? dailyClose :
                       fillOption == "Daily Open" ? dailyOpen :
                       fillOption == "HOD" ? dailyHigh : dailyLow

// Execute the long and short entries with expiration
var int longOrderExpiry = na
var int shortOrderExpiry = na

if not na(longEntryPrice)
    longOrderExpiry := bar_index + 2  // Order expires after 2 days

if not na(shortEntryPrice)
    shortOrderExpiry := bar_index + 2  // Order expires after 2 days

// Check expiration and execute orders
if (longEntryPrice and bar_index <= longOrderExpiry and high >= longEntryPrice)
    longStopDistance = close - nz(swingLow, close)
    longPositionSize = longStopDistance > 0 ? riskAmount / longStopDistance : na
    if (not na(longPositionSize))
        strategy.entry("Long", strategy.long, qty=longPositionSize)
    longEntryPrice := na  // Reset after entry

if (shortEntryPrice and bar_index <= shortOrderExpiry and low <= shortEntryPrice)
    shortStopDistance = nz(swingHigh, close) - close
    shortPositionSize = shortStopDistance > 0 ? riskAmount / shortStopDistance : na
    if (not na(shortPositionSize))
        strategy.entry("Short", strategy.short, qty=shortPositionSize)
    shortEntryPrice := na  // Reset after entry

// Exit logic: hit the opposing Bollinger Band
if (strategy.position_size > 0) // Long position
    strategy.exit("Exit Long", "Long", limit=dailyUpperBand)
else if (strategy.position_size < 0) // Short position
    strategy.exit("Exit Short", "Short", limit=dailyLowerBand)

if (strategy.position_size > 0) // Long position
    strategy.exit("Stop Loss Long", "Long", stop=swingLow)
else if (strategy.position_size < 0) // Short position
    strategy.exit("Stop Loss Short", "Short", stop=swingHigh)

// Plot daily Bollinger Bands and levels on the chosen time frame
plot(dailyUpperBand, color=color.blue, linewidth=1, title="Daily Upper Bollinger Band")
plot(dailyLowerBand, color=color.blue, linewidth=1, title="Daily Lower Bollinger Band")
plot(dailyBasis, color=color.gray, linewidth=1, title="Daily Middle Bollinger Band")


متعلقہ

مزید