ہول فلٹر منتقل اوسط حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-04 15:16:34
ٹیگز:

img

جائزہ

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

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

حکمت عملی منطق

قلیل مدتی ہل چلتی اوسط قلیل مدتی قیمت کے رجحانات اور موڑ کے مقامات کو پکڑتا ہے۔ جب یہ سمت بدلتا ہے تو ، یہ قلیل مدتی قیمت کے رجحان میں تبدیلی کا اشارہ کرتا ہے۔

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

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

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

فوائد کا تجزیہ

مختصر مدت کے سگنل اور طویل مدتی فلٹرز کو یکجا کرنے سے درمیانی مدت کے رجحانات اور موڑ کے مقامات کو مؤثر طریقے سے شناخت کیا جاسکتا ہے، مارکیٹ شور سے غلط سگنل سے بچنے کے لۓ.

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

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

خطرے کا تجزیہ

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

اس طرح کے بازاروں کے دوران وسیع تر حالات کے ساتھ سگنل فلٹر کرکے اس سے بچا جاسکتا ہے۔

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

اصلاح

اضافی قلیل مدتی اشارے جیسے آر ایس آئی کنورجنس کے ذریعے سگنل کی درستگی کو بہتر بنا سکتے ہیں۔

ہول چلتی اوسط کے درمیان فلٹر منطق کو بہتر بنایا جاسکتا ہے تاکہ غلط سگنل سے بچنے کے ل 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)


مزید