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

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

img

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق یہ ہے:

  1. ان پٹ کے طور پر چلتی اوسط مدت پیرامیٹر لے لو. SMA اور EMA کے درمیان انتخاب کریں.
  2. متغیر اوسط لائن ظاہر کرنے کا اختیار۔
  3. سگنل ماخذ کے طور پر کسی دوسرے ٹکر کی قریبی قیمت کا استعمال کرنے کا اختیار۔
  4. ماہانہ اختتامی قیمت اور حرکت پذیر اوسط کے درمیان تعلقات کی بنیاد پر تجارتی سگنل کا تعین کریں:
    • بند قیمت کے پار ہونے سے اوپر MA - طویل
    • بندش کی قیمت میں ایم اے سے نیچے کی کراسنگ - بندش کی طویل پوزیشن

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

فوائد

اس حکمت عملی کے اہم فوائد یہ ہیں:

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

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

خطرات

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

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

خطرات کو کم کرنے کے لئے تجویز کردہ طریقے:

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

بہتر مواقع

اس حکمت عملی میں بہتری کی بڑی صلاحیت ہے:

  1. منافع میں مقفل کرنے اور خطرات کو کنٹرول کرنے کے لئے سٹاپ نقصان کو شامل کریں
  2. سگنل کی درستگی کو بہتر بنانے کے لئے KD، MACD جیسے اضافی اشارے شامل کریں
  3. ایم اے پیرامیٹرز کو متحرک طور پر بہتر بنانے کے لئے مشینی سیکھنے کی تکنیکوں کا استعمال کریں
  4. رجحانات کے مطابق پوزیشن سائزنگ متعارف کروائیں
  5. مارکیٹ کے حالات کی بنیاد پر طویل / مختصر سوئچنگ کی صلاحیتوں میں تعمیر
  6. تیز رفتار ردعمل کے لئے تیز تر ٹائم فریم کی قیمتوں کے ساتھ ضم کریں

نتیجہ

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


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 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/
// © universique

//@version=4
strategy("Monthly MA Close ", shorttitle="MMAC", overlay=true, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100)
//MAY 6 2020 18:00

// No repaint function 
// Function to securely and simply call `security()` so that it never repaints and never looks ahead.
f_secureSecurity(_symbol, _res, _src) => security(_symbol, _res, _src[1], lookahead = barmerge.lookahead_on)
//sec10 = f_secureSecurity(syminfo.tickerid, higherTf, data)

// ————— Converts current chart resolution into a float minutes value.
f_resInMinutes() => 
    _resInMinutes = timeframe.multiplier * (
      timeframe.isseconds ? 1. / 60             :
      timeframe.isminutes ? 1.                  :
      timeframe.isdaily   ? 60. * 24            :
      timeframe.isweekly  ? 60. * 24 * 7        :
      timeframe.ismonthly ? 60. * 24 * 30.4375  : na)
// ————— Returns the float minutes value of the string _res.
f_tfResInMinutes(_res) =>
    // _res: resolution of any TF (in "timeframe.period" string format).
    // Dependency: f_resInMinutes().
    security(syminfo.tickerid, _res, f_resInMinutes())

// —————————— Determine if current timeframe is smaller that higher timeframe selected in Inputs.
// Get higher timeframe in minutes.
//higherTfInMinutes = f_tfResInMinutes(higherTf)
// Get current timeframe in minutes.
currentTfInMinutes = f_resInMinutes()
// Compare current TF to higher TF to make sure it is smaller, otherwise our plots don't make sense.
//chartOnLowerTf = currentTfInMinutes < higherTfInMinutes

// Input
switch1=input(true, title="Show MA")
exponential = input(true, title="Exponential MA")
ticker = input(false, title="Other ticker MA")

tic_ma = input(title="Ticker MA", type=input.symbol, defval="BTC_USDT:swap")
res_ma = input(title="Time MA (W, D, [min])", type=input.string, defval="M")
len_ma = input(8, minval=1, title="Period MA")

ma_cus = exponential?f_secureSecurity(tic_ma, res_ma, ema(close,len_ma)) : f_secureSecurity(tic_ma, res_ma, sma(close,len_ma))
ma_long = exponential?f_secureSecurity(syminfo.tickerid, res_ma, ema(close,len_ma)) : f_secureSecurity(syminfo.tickerid, res_ma, sma(close,len_ma))

cl1 = f_secureSecurity(syminfo.tickerid, 'M', close)
cl2 = f_secureSecurity(tic_ma, 'M', close)

// Input Backtest Range
showDate  = input(defval = false, title = "Show Date Range", type = input.bool)
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 1995, title = "From Year",       type = input.integer, minval = 1850)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1850)

// Funcion Example
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

// Calculation
bullish_cross = ticker?cl2>ma_cus : cl1>ma_long
bearish_cross = ticker?cl2<ma_cus : cl1<ma_long

MAColor = bullish_cross ? color.green : bearish_cross ? color.red : color.orange

// Strategy
strategy.entry("long", strategy.long, when = window() and bullish_cross)
strategy.close("long", when = window() and bearish_cross)

// Output
plot(switch1?ma_long:na,color = MAColor,linewidth=4)

// Alerts
alertcondition(bullish_cross, title='Bullish', message='Bullish')
alertcondition(bearish_cross, title='Bearish', message='Bearish')

مزید