انکولی حرکت پذیر اوسط مقداری حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-17 17:14:36
ٹیگز:

جائزہ

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

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

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

خاص طور پر ، حکمت عملی CMA کو مدت پلس 1 (CMA_P1) اور مائنس 1 (CMA_M1) کے ساتھ جانچتی ہے ، جسم اور وِک کے لحاظ سے رابطوں کی تعداد گنتی ہے۔ اگر CMA میں CMA_P1 اور CMA_M1 سے کم رابطے ہیں تو ، موجودہ مدت کو برقرار رکھیں؛ اگر CMA_P1 میں کم رابطے ہیں تو ، مدت میں 1 کا اضافہ کریں۔ اگر CMA_M1 میں کم رابطے ہیں تو ، مدت میں 1 کی کمی کریں۔ اس سے سگنل لائن کے طور پر نسبتا smooth ہموار CMA ملتا ہے۔

جب قیمت CMA کے اوپر سے گزرتی ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔ جب قیمت CMA کے نیچے سے گزرتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔

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

اس موافقت پذیر حرکت پذیر اوسط حکمت عملی کے مندرجہ ذیل فوائد ہیں:

  1. خودکار طور پر زیادہ سے زیادہ پیرامیٹرز تلاش کریں۔ دستی طور پر حرکت پذیر اوسط مدت کا انتخاب کرنے کی ضرورت نہیں ہے ، حکمت عملی مختلف ادوار کی جانچ کرے گی اور زیادہ سے زیادہ تلاش کرے گی۔

  2. جھوٹے سگنل کو کم کریں۔ مقررہ مدت کے ایم اے کے مقابلے میں ، موافقت پذیر ایم اے زیادہ شور کو فلٹر کرسکتا ہے اور بہت سارے جھوٹے سگنل کو کم کرسکتا ہے۔

  3. مارکیٹ کی تبدیلیوں کے مطابق ڈھالیں۔ جب مارکیٹ رینج سے منسلک رجحانات میں تبدیل ہوتی ہے تو ، مارکیٹ کے رجحانات سے منسلک رجحانات میں تبدیلیاں ہوتی ہیں۔ جب مارکیٹ رجحانات سے رینج سے منسلک ہوتی ہے تو ، ایم اے کی مدت خود بخود کم ہوجاتی ہے۔ لہذا حکمت عملی متحرک طور پر مارکیٹ کی تبدیلیوں کے مطابق ڈھال سکتی ہے۔

  4. تجارتی نظام کو آسان بنائیں۔ یہ موافقت پذیر طریقہ دستی پیرامیٹر کی اصلاح کے بغیر پورے تجارتی نظام کو آسان بنا سکتا ہے۔

  5. اچھی توسیع پذیری۔ یہ تصور دیگر اشارے جیسے انکولی بولنگر بینڈ ، انکولی کے ڈی وغیرہ پر لاگو کیا جاسکتا ہے۔

خطرے کا تجزیہ

اس حکمت عملی کے لئے کچھ خطرات بھی ہیں:

  1. کال آپشن کا خطرہ۔ جب مارکیٹ میں کال آپشن کا نمونہ ہوتا ہے تو ، موم بتی کا جسم ایم اے لائن کو توڑنے میں ناکام ہوسکتا ہے ، جس کے نتیجے میں غلط سگنل پیدا ہوتے ہیں۔ اس طرح کے خطرے کو کم کرنے کے لئے فلٹر کی شرائط شامل کرنے کی ضرورت ہے۔

  2. ناکام بریک آؤٹ کا خطرہ۔ ایم اے بریک آؤٹ ہمیشہ جاری نہیں رہتا ، کچھ ناکام بریک آؤٹ ہوسکتے ہیں۔ کامیابی کی اعلی شرح کو یقینی بنانے کے لئے بریک آؤٹ کی توثیق کی ضرورت ہے۔

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

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

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

بہتری کی ہدایات

اس انکولی ایم اے حکمت عملی کو بہتر بنانے کے لئے کچھ ہدایات:

  1. غلط بریک آؤٹ کو فلٹر کرنے کے لئے مسلسل بریک آؤٹ کے ذریعے ٹرینڈ بریک آؤٹ کی توثیق شامل کریں۔

  2. سٹاپ نقصان کی حکمت عملی میں اضافہ، سٹاپ نقصان جب قیمت ایم اے کے دوسری طرف واپس منتقل.

  3. کال آپشن ظاہر ہونے پر غلط سگنل سے بچنے کے لئے آپشن فلٹر شامل کریں۔

  4. پیرامیٹر ٹیوننگ کو محدود کرنے اور اوور فٹنگ کو روکنے کے لئے آئی سی ، ایل آئی سی ، ایس آئی سی وغیرہ جیسے تشخیص میٹرکس متعارف کروائیں۔

  5. دیگر اشارے جیسے انکولی گولڈن کراس حکمت عملی، انکولی بولنگر بینڈ وغیرہ میں توسیع کریں۔

  6. زیادہ ہموار ایم اے حاصل کرنے کے لئے وزن والے ایم اے، ایکسپونینشل ایم اے وغیرہ کا استعمال کرتے ہوئے ایم اے حساب کو بہتر بنائیں.

خلاصہ

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

[/trans]


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636

//@version=5

strategy('Automatic Moving Average', overlay=true, max_bars_back=201, pyramiding=0, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)

// input
start = 20
lookback = input(20, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
smoothing = input(3, "Smoothing")
source = input(close, "Source")
startYear = input(2020, "Start year")
resp = 1

in_date_range = time >= timestamp(syminfo.timezone, startYear, 1, 1, 0, 0)

// global
var ix = -1
var mal = array.new_int(0)


// functions
avg(source, len) =>
    sum = 0.0
    for i = 0 to len-1
        sum += source[i]
    sum/len

bull = close > open

wick_touch(x) =>
    bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))

body_touch(x) =>
    bull ? (open < x and x < close) : (close < x and x < open)

touches(t) =>
    touches = 0
    for i = 0 to lookback-1
        touches += t[i] ? 1 : 0
    touches


// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start

cma = avg(source, prev_mal)
cma_p1 = avg(source, prev_mal+1)
cma_m1 = avg(source, prev_mal-1)

d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))

d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))

any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp : na))

up = cma > cma[1]
down = cma < cma[1]
against_trend = (up and close < cma) or (down and close > cma)

new_mal = no_wick_touch or against_trend ? prev_mal-resp : (any_body_touch ? prev_mal+resp : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal

array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))


// graph
scma = ta.ema(cma, smoothing)

uptrend = scma > scma[1]
downtrend = scma < scma[1]

plot(scma, "Automatic MA", color=uptrend ? color.green : color.red)

uptrending = close > scma and uptrend
downtrending = close < scma and downtrend

defy = not uptrending and not downtrending
defy_cross = defy and body_touch(scma)

barcolor(uptrending ? color.lime : (downtrending ? color.red : (defy_cross ? color.black : color.white)))


// strategy
change_to_uptrend = uptrending and downtrend[1]
change_to_downtrend = downtrending and uptrend[1]

long = in_date_range and change_to_uptrend
short = in_date_range and change_to_downtrend

if long
    strategy.entry("Long", strategy.long)
if short
    strategy.entry("Short", strategy.short)


مزید