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

اعلی درجے کی لچکدار کثیر دورانیہ چلتی اوسط کراس اوور حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-11-28 15:18:47
ٹیگز:ایم اےایس ایم اےای ایم اےڈبلیو ایم اےایچ ایم اےایس ایم ایم اے

img

جائزہ

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

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

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

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

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

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

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

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

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

خلاصہ

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Flexible Moving Average Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input to select the review frequency (Daily, Weekly, Monthly)
check_frequency = input.string("Weekly", title="Review Frequency", options=["Daily", "Weekly", "Monthly"])

// Input to select the Moving Average method (SMA, EMA, WMA, HMA, SMMA)
ma_method = input.string("EMA", title="Moving Average Method", options=["SMA", "EMA", "WMA", "HMA", "SMMA"])

// Input to select the length of the Moving Average
ma_length = input.int(30, title="Moving Average Length", minval=1)

// Input to select the timeframe for Moving Average calculation
ma_timeframe = input.string("W", title="Moving Average Timeframe", options=["D", "W", "M"])

// Calculate all Moving Averages on the selected timeframe
sma_value = request.security(syminfo.tickerid, ma_timeframe, ta.sma(close, ma_length), lookahead=barmerge.lookahead_off)
ema_value = request.security(syminfo.tickerid, ma_timeframe, ta.ema(close, ma_length), lookahead=barmerge.lookahead_off)
wma_value = request.security(syminfo.tickerid, ma_timeframe, ta.wma(close, ma_length), lookahead=barmerge.lookahead_off)
hma_value = request.security(syminfo.tickerid, ma_timeframe, ta.hma(close, ma_length), lookahead=barmerge.lookahead_off)
smma_value = request.security(syminfo.tickerid, ma_timeframe, ta.rma(close, ma_length), lookahead=barmerge.lookahead_off) // Smoothed Moving Average (SMMA)

// Select the appropriate Moving Average based on user input
ma = ma_method == "SMA" ? sma_value : 
     ma_method == "EMA" ? ema_value :
     ma_method == "WMA" ? wma_value :
     ma_method == "HMA" ? hma_value :
     smma_value  // Default to SMMA

// Variable initialization
var float previous_close = na
var float previous_ma = na
var float close_to_compare = na
var float ma_to_compare = na

// Detect the end of the period (Daily, Weekly, or Monthly) based on the selected frequency
var bool is_period_end = false

if check_frequency == "Daily"
    is_period_end := ta.change(time('D')) != 0
else if check_frequency == "Weekly"
    is_period_end := ta.change(time('W')) != 0
else if check_frequency == "Monthly"
    is_period_end := ta.change(time('M')) != 0

// Store the close and Moving Average values at the end of the period
if is_period_end
    previous_close := close[0]  // Closing price of the last day of the period
    previous_ma := ma[0]  // Moving Average value at the end of the period

// Strategy logic
is_period_start = is_period_end

// Check if this is the first bar of the backtest
is_first_bar = barstate.isfirst

if (is_period_start or is_first_bar)
    // If the previous period values are not available, use current values
    close_to_compare := not na(previous_close) ? previous_close : close[0]
    ma_to_compare := not na(previous_ma) ? previous_ma : ma[0]
    
    if close_to_compare < ma_to_compare
        // Close price below the MA -> Sell
        if strategy.position_size > 0
            strategy.close("Long")
    else
        // Close price above the MA -> Buy/Hold
        if strategy.position_size == 0
            strategy.entry("Long", strategy.long)

// Close all positions at the end of the backtest period
if barstate.islastconfirmedhistory
    strategy.close_all(comment="Backtest End")

// Plot the previous period's close price for comparison
plot(previous_close, color=color.red, title="Previous Period Close", style=plot.style_stepline)
plot(close_to_compare, color=color.blue, title="Close to Compare", style=plot.style_line)

// Plot the selected Moving Average
plot(ma, color=color.white, title="Moving Average", style=plot.style_line, linewidth=3)

متعلقہ

مزید