متحرک حکمت عملی ایک ایسی حکمت عملی ہے جس میں قیمتوں میں تبدیلی کے رجحان کے مطابق تجارت کی جاتی ہے۔ یہ حکمت عملی ایک خاص دورانیے میں قیمتوں میں ہونے والی تبدیلیوں کا حساب کتاب کرکے قیمتوں کی نقل و حرکت کے رجحان کا تعین کرتی ہے ، اور پھر تجارتی سگنل پیدا کرتی ہے۔ جب قیمتوں میں اضافہ ہوتا ہے تو ، خریدنے کا سگنل پیدا ہوتا ہے۔ جب قیمتوں میں کمی کا رجحان ہوتا ہے تو ، فروخت کا سگنل پیدا ہوتا ہے۔ یہ حکمت عملی دوہری متحرک اشارے کے ساتھ کراس ٹریڈنگ سگنل پیدا کرتی ہے۔
یہ حکمت عملی قیمتوں کی حرکیات کا اندازہ لگانے کے لئے ایک خاص دورانیے کے دوران بند ہونے والی قیمتوں میں ہونے والی تبدیلیوں کا حساب لگاتی ہے۔ خاص طور پر ، بند ہونے والی قیمتوں میں N دورانیے سے پہلے بند ہونے والی قیمتوں میں ہونے والی تبدیلیوں کا حساب لگاتا ہے۔
سب سے پہلے، پہلی طاقت کے اشارے MOM0 کا حساب لگائیں، جس کا فارمولا ہے:
MOM0 = CLOSE - CLOSE[N]
اس میں، CLOSE موجودہ سائیکل اختتامی قیمت، CLOSE[N] N دور سے پہلے کی بندش کی قیمت کو ظاہر کرتا ہے۔ اس طرح MOM0>0 موجودہ دور کے مقابلے میں N دور سے پہلے کی بندش کی قیمت میں اضافہ ظاہر کرتا ہے ، اور MOM0 موجودہ دور کے مقابلے میں N دور سے پہلے کی بندش کی قیمت میں کمی ظاہر کرتا ہے۔
اس کے بعد دوسری قوت اشارے MOM1 کا حساب لگایا جاتا ہے، جس کا فارمولا یہ ہے:
MOM1 = MOM0 - MOM0[1]
یعنی MOM0 کی موجودہ دورانیے کی قدر کو پچھلے دورانیے کی قدر سے کم کریں۔ MOM1>0 کا مطلب ہے کہ MOM0 میں اضافہ ہوا ہے ، اور MOM1 کا مطلب ہے کہ MOM0 میں کمی ہوئی ہے۔
اسی وقت تیسری حرکیات اشارے MOM2 کا حساب لگائیں ، جس کا فارمولا ہے:
MOM2 = CLOSE - CLOSE[1]
یعنی ، موجودہ دور کے اختتامی قیمت کو پچھلے دور کی اختتامی قیمت سے کم کریں۔ MOM2>0 کا مطلب ہے کہ اختتامی قیمت میں اضافہ ہوا ہے ، MOM2 کا مطلب ہے کہ اختتامی قیمت میں کمی ہوئی ہے۔
جب MOM0>0 اور MOM1>0 ، تو اس کی نشاندہی کرتا ہے کہ اس کی رفتار مسلسل بڑھ رہی ہے ، جس سے خریدنے کا اشارہ ملتا ہے۔ جب MOM0 اور MOM2 ، تو اس کی نشاندہی کرتا ہے کہ اس کی رفتار مسلسل کم ہو رہی ہے ، جس سے فروخت کا اشارہ ملتا ہے۔
کوڈ میں وقت کی شرط time_cond بھی شامل کی گئی ہے ، جو صرف مقررہ ریٹرننگ ٹائم فریم کے اندر ہی تجارتی سگنل پیدا کرے گی۔ اس کے علاوہ ، آرڈر لگانے سے پہلے ایک بار پھر چیک کریں کہ آیا یہ شرط اب بھی قائم ہے یا نہیں ، تاکہ سگنل ختم ہونے کے بعد بھی آرڈر دیا جائے۔
حجم کی مدت کو کم کرنے ، رجحان کا فیصلہ متعارف کرانے ، یا اسٹاپ نقصان کی تشکیل کے ذریعہ خطرے کو کم کیا جاسکتا ہے۔ آپ کو تجارتی حجم کے اشارے میں شامل ہونے پر غور کرنا چاہئے تاکہ وہ فلٹر کرسکیں۔
متحرک حکمت عملی قیمتوں میں تبدیلی کے رجحانات کی بجائے قیمتوں کی پیروی کرکے ، مارکیٹ کے ہاٹ پوائنٹس کی سمت کا مؤثر اندازہ لگاسکتی ہے ، قیمتوں میں اضافے اور کمی کے مواقع کو پکڑ سکتی ہے۔ تاہم ، متحرک تاخیر کا شکار ہے ، پیرامیٹرز کا انتخاب اور مجموعہ کی اصلاح حکمت عملی کے اثر کے لئے بہت ضروری ہے۔ یہ حکمت عملی دو متحرک اشارے کے کراس پر مبنی ہے ، اور کچھ شور کو فلٹر کرسکتی ہے۔ پیرامیٹرز کو مستقل طور پر بہتر بنانے ، نئے تکنیکی اشارے شامل کرنے ، مشین لرننگ کا استعمال کرنے اور دیگر طریقوں سے حکمت عملی کے اثر کو مزید بڑھانے کے ذریعہ ، خطرے کو کنٹرول کیا جاسکتا ہے۔
/*backtest
start: 2022-09-25 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
time_cond = true
i_len = input(defval = 12, title = "Length", minval = 1)
i_src = input(defval = close, title = "Source")
i_percent = input(defval = true, title = "Percent?")
i_mom = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"])
momentum(seria, length, percent) =>
_mom = percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
_mom
mom0 = momentum(i_src, i_len, i_percent)
mom1 = momentum(mom0, 1, i_percent)
mom2 = momentum(i_src, 1, i_percent)
momX = mom1
if i_mom == "MOM2"
momX := mom2
if (mom0 > 0 and momX > 0 and time_cond)
strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
strategy.cancel("MomSE")
plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")