یہ حکمت عملی تجارتی سگنل تیار کرنے اور فلٹر کرنے کے لئے قلیل مدتی اور طویل مدتی ہل چلتی اوسط کا استعمال کرتی ہے۔ سگنل تیار کرنے کے لئے قلیل مدتی ہل چلتی اوسط کا استعمال کیا جاتا ہے ، جبکہ سگنل فلٹر کرنے کے لئے طویل مدتی ہل چلتی اوسط کا استعمال کیا جاتا ہے۔ تجارت صرف اس وقت کی جاتی ہے جب قلیل مدتی ہل چلتی اوسط سمت بدلتی ہے اور طویل مدتی ہل چلتی اوسط ایک ہی مجموعی سمت میں چل رہی ہے۔
اسٹریٹجی میں اے ٹی آر اشارے کا بھی استعمال ہوتا ہے تاکہ تجارت میں داخل ہوتے وقت اسٹاپ نقصان کو متحرک طور پر ترتیب دیا جاسکے اور منافع کی سطح حاصل کی جاسکے۔
قلیل مدتی ہل چلتی اوسط قلیل مدتی قیمت کے رجحانات اور موڑ کے مقامات کو پکڑتا ہے۔ جب یہ سمت بدلتا ہے تو ، یہ قلیل مدتی قیمت کے رجحان میں تبدیلی کا اشارہ کرتا ہے۔
طویل مدتی ہل چلتی اوسط قیمت کے مجموعی رجحان کا تعین کرتی ہے۔ مثال کے طور پر ، جب یہ بڑھ رہا ہے تو ، قیمتیں مجموعی طور پر بڑھتی ہوئی رجحان میں ہیں۔
تجارت صرف اس وقت کی جاتی ہے جب قلیل مدتی ہل چلتی اوسط سمت بدل جاتی ہے ، اور اس کی نئی سمت طویل مدتی ہل چلتی اوسط کی سمت سے ہم آہنگ ہوتی ہے۔ اس سے ایسے سگنل فلٹر ہوجاتے ہیں جو مجموعی رجحان کے خلاف جاتے ہیں اور یہ صرف قلیل مدتی مارکیٹ شور ہوسکتا ہے۔
پوزیشنوں میں داخل ہونے کے بعد ، اسٹاپ نقصان اور منافع حاصل کرنے کی سطحیں اے ٹی آر اشارے کی قیمت کی بنیاد پر طے کی جاتی ہیں۔ اے ٹی آر مارکیٹ میں اتار چڑھاؤ اور رسک کی سطح کی عکاسی کرتا ہے۔ اسٹاپ نقصان کو قیمت کی کم ترین سطحوں سے نیچے رکھا جاتا ہے جبکہ منافع حاصل کرنے کے اہداف کی قیمتوں میں اضافہ ہوتا ہے ، جس میں موجودہ اے ٹی آر پڑھنے سے وابستہ حدود ہوتی ہیں۔
مختصر مدت کے سگنل اور طویل مدتی فلٹرز کو یکجا کرنے سے درمیانی مدت کے رجحانات اور موڑ کے مقامات کو مؤثر طریقے سے شناخت کیا جاسکتا ہے، مارکیٹ شور سے غلط سگنل سے بچنے کے لۓ.
اے ٹی آر پر مبنی متحرک اسٹاپ نقصان اور منافع حاصل کرنے کے لئے موجودہ اتار چڑھاؤ ، منافع لینے اور نقصان سے بچاؤ کے توازن پر مبنی معقول حد مقرر کرتا ہے۔
ہل چلتی اوسط معیاری چلتی اوسط کے مقابلے میں لچک اور درستگی کے فوائد ہیں، بہتر رجحان کی پیروی کے ساتھ.
حکمت عملی سگنل پیدا کرنے کے لئے ہل چلتی اوسط کے مابین کراسنگ پر انحصار کرتی ہے۔ غلط کراسنگ کے نتیجے میں خراب تجارت ہوسکتی ہے ، جس کے لئے مارکیٹ کی مجموعی ساخت کا تجزیہ ضروری ہے۔
اس طرح کے بازاروں کے دوران وسیع تر حالات کے ساتھ سگنل فلٹر کرکے اس سے بچا جاسکتا ہے۔
اسٹاپ نقصان اور اے ٹی آر پر منافع حاصل کرنے کا انحصار اس کا مطلب ہے کہ اتار چڑھاؤ کی غلط پڑھنے سے غلط جگہ کا نتیجہ نکلے گا۔ اس کو درست کرنے کے لئے اتار چڑھاؤ کے دیگر اقدامات اے ٹی آر کو بڑھا سکتے ہیں۔
اضافی قلیل مدتی اشارے جیسے آر ایس آئی کنورجنس کے ذریعے سگنل کی درستگی کو بہتر بنا سکتے ہیں۔
ہول چلتی اوسط کے درمیان فلٹر منطق کو بہتر بنایا جاسکتا ہے تاکہ غلط سگنل سے بچنے کے ل entry زیادہ سخت اندراج کی ضروریات ہوں۔
پیرامیٹر ٹیوننگ ریسرچ سے اوسط لمبائی ، اے ٹی آر ادوار وغیرہ میں ہونے والی تبدیلیوں سے استحکام اور منافع میں بہتری آسکتی ہے۔
یہ حکمت عملی قلیل مدتی سگنل جنریشن ، طویل مدتی سگنل فلٹرنگ ، اور اے ٹی آر پر مبنی اسٹاپ نقصان / منافع حاصل کرنے کو ایک مضبوط درمیانی مدتی رجحان کے بعد کے فریم ورک میں جوڑتی ہے۔ یہ قلیل مدتی شور کو فلٹر کرتے ہوئے درمیانی مدتی جھکاو پوائنٹس کی نشاندہی کرنے میں کامیاب ہے۔ پیرامیٹر اصلاحات اور اضافی فلٹرز کے ساتھ ، یہ اور بھی بہتر کارکردگی حاصل کرسکتا ہے۔
/*backtest start: 2023-12-04 00:00:00 end: 2024-01-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Hull Filtered Strategy", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity, default_qty_value = 10, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0) // Parameters for Hull Moving Averages src = input(close, title="Source") signal_period = input(50, title="Period of signal HMA") filter_period = input(200, title="Period of filter HMA") strat_dir_input = input(title="Strategy Direction", defval="all", options=["long", "short", "all"]) // Set allowed trading directions strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) // stop loss and take profit sl_factor = input(2,title="Stop Loss Factor") tp_factor = input(3,title="Take Profit Factor") atr_period = input(14, title="ATR Period (SL/TP)") // Testing Start dates testStartYear = input(2010, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // ----------------------------------------------------------------------------- // Global variables // ----------------------------------------------------------------------------- var float tp = na var float sl = na var float position = na // ----------------------------------------------------------------------------- // Functions // ----------------------------------------------------------------------------- testWindow() => time >= testPeriodStart and time <= testPeriodStop ? true : false // ----------------------------------------------------------------------------- // The engine // ----------------------------------------------------------------------------- hma_signal = hma(src, signal_period) hma_filter = hma(src, filter_period) // Used to determine exits and stop losses atr_e = atr(atr_period) // if hma_filter increases hma_trend is set to 1, if it decreases hma_trend is set to -1. If no trend is available, hma_trend is set to ß0 trend = hma_filter > hma_filter[1] ? 1 : hma_filter < hma_filter[1] ? -1 : 0 signal = hma_signal > hma_signal[1] ? 1 : hma_signal < hma_signal[1] ? -1 : 0 // ----------------------------------------------------------------------------- // signals // ----------------------------------------------------------------------------- if signal[0] == 1 and signal[1] != 1 and trend == 1 and testWindow() sl := close - sl_factor*atr_e tp := close + tp_factor*atr_e strategy.entry("HMA_LNG", strategy.long) strategy.exit("LE", "HMA_LNG", profit=100*tp_factor*atr_e, loss=100*sl_factor*atr_e) if signal[0] == -1 and signal[1] != -1 and trend == -1 and testWindow() sl := close + sl_factor*atr_e tp := close - tp_factor*atr_e strategy.entry("HMA_SHRT", strategy.short) strategy.exit("SE", "HMA_SHRT", profit=100*tp_factor*atr_e, loss=100*sl_factor*atr_e) if strategy.position_size != 0 sl := sl[1] tp := tp[1] // ----------------------------------------------------------------------------- // PLOT // ----------------------------------------------------------------------------- hma_s = plot(hma_signal, title="SIGNAL", color = signal == 1 ? color.green : color.red) hma_l = plot(hma_filter, title="TREND", color = trend == 1 ? color.green : color.red) plot(tp, title="TAKE PROFIT", color= strategy.position_size != 0 ? color.blue: na, linewidth=1) plot(sl, title="STOP LOSS", color= strategy.position_size != 0 ? color.red: na, linewidth = 1)