ہال موونگ ایوریج فلٹر کی حکمت عملی


تخلیق کی تاریخ: 2024-01-04 15:16:34 آخر میں ترمیم کریں: 2024-01-04 15:16:34
کاپی: 0 کلکس کی تعداد: 623
1
پر توجہ دیں
1621
پیروکار

ہال موونگ ایوریج فلٹر کی حکمت عملی

جائزہ

یہ حکمت عملی تجارتی سگنل پیدا کرنے اور فلٹر کرنے کے لئے مختصر اور طویل مدتی دونوں ہال منتقل اوسط کا استعمال کرتی ہے۔ مختصر ہال منتقل اوسط سگنل پیدا کرنے کے لئے استعمال کیا جاتا ہے ، جبکہ طویل مدتی ہال منتقل اوسط سگنل فلٹر کرنے کے لئے استعمال کیا جاتا ہے ، اور تجارتی سگنل صرف اس وقت پیدا ہوتا ہے جب مختصر ہال اوسط اور طویل مدتی ہال اوسط میں ہم آہنگی ہوتی ہے۔

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

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

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

طویل مدتی ہال منتقل اوسط قیمتوں کے مجموعی رجحان کا اندازہ لگانے کے لئے استعمال کیا جاتا ہے۔ مثال کے طور پر ، جب طویل مدتی ہال منتقل اوسط کی سمت اوپر کی طرف ہے تو ، اس کا مطلب یہ ہے کہ قیمتیں مجموعی طور پر اوپر کی طرف ہیں۔

تجارت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب ہال کی مختصر مدت کی اوسط حرکت پذیر ہوتی ہے اور اس کا رخ طویل مدتی ہال کی اوسط حرکت پذیر اوسط کی مجموعی حرکت کی سمت سے ملتا ہے۔ یعنی ، اس مختصر مدت کے اشارے پر صرف اس وقت تجارت کی جاتی ہے جب قیمتوں میں مختصر مدت کے رجحانات میں تبدیلی آتی ہے اور مجموعی طور پر اسی سمت میں حرکت ہوتی ہے۔ یہ مختصر مدت کے بازار میں شور کی وجہ سے غلط سگنل کو مؤثر طریقے سے فلٹر کرسکتا ہے۔

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

طاقت کا تجزیہ

اس حکمت عملی میں قلیل مدتی سگنل اور طویل مدتی فلٹرنگ کا امتزاج کیا گیا ہے تاکہ قیمتوں میں درمیانی مدت کے رجحانات کو مؤثر طریقے سے پہچانا جاسکے اور ٹرن آؤٹ کو بروقت پکڑ لیا جاسکے۔

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

ہال کی چلتی اوسط کی مدد سے ، قیمتوں کی نقل و حرکت کو زیادہ لچکدار اور درست اندازہ لگایا جاسکتا ہے ، اور اس میں عام طور پر چلتی اوسط کے مقابلے میں زیادہ مضبوط ٹریکنگ کی کارکردگی ہے۔

خطرے کا تجزیہ

یہ حکمت عملی مختصر اور طویل مدتی میں ہال کی دو حرکت پذیر اوسط کی کراسنگ پر انحصار کرتی ہے ، اور اگر دو حرکت پذیر اوسط کے مابین جعلی کراسنگ ہوتی ہے تو ، اس سے غلط اندراج کا سبب بن سکتا ہے۔ اس وقت ، طویل مدتی مارکیٹ کی ساخت کے مطابق ، اس سگنل کو فلٹر کرنے کا فیصلہ کرنے کی ضرورت ہے۔

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

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

اصلاح کی سمت

دوسرے قلیل مدتی اشارے کے ساتھ مل کر سگنل کے فیصلے میں معاون سگنل پر غور کیا جاسکتا ہے ، جیسے RSI جیسے اوورلوڈ اوورلوڈ اشارے ، تاکہ فلٹرنگ کا اثر بڑھایا جاسکے۔

طویل اور قلیل مدتی ہال منتقل اوسط کے مابین فلٹرنگ کے منطقی تعلقات کو بڑھا یا بہتر بنایا جاسکتا ہے ، تاکہ فلٹرنگ کے قواعد کو زیادہ سخت بنایا جاسکے اور غلط سگنل سے بچا جاسکے۔

حکمت عملی کی استحکام اور منافع بخش صورتحال پر مختلف پیرامیٹرز کی ترتیبات کے اثرات کا مطالعہ کیا جاسکتا ہے۔ مثال کے طور پر ، منتقل اوسط پیرامیٹرز ، اے ٹی آر پیرامیٹرز وغیرہ کے مختلف مجموعے مختلف تجارتی کارکردگی کا باعث بن سکتے ہیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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)