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

بولنگر بینڈ اور موم بتی کے نمونوں پر مبنی اعلی درجے کی رجحان ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-11-27 14:18:33
ٹیگز:بی بیاے ٹی آرRRپی ایس آرایم اےایس ڈیڈبلیو بی آر

img

جائزہ

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

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

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

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

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

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

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

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

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

خلاصہ

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-26 00:00:00
period: 12h
basePeriod: 12h
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")


متعلقہ

مزید