مومنٹم بریک آؤٹ حکمت عملی کے بعد رجحان


تخلیق کی تاریخ: 2023-11-15 11:09:21 آخر میں ترمیم کریں: 2023-11-15 11:09:21
کاپی: 0 کلکس کی تعداد: 584
1
پر توجہ دیں
1617
پیروکار

مومنٹم بریک آؤٹ حکمت عملی کے بعد رجحان

جائزہ

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

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

یہ حکمت عملی بنیادی طور پر متحرک اشارے پر مبنی ہے۔ متحرک اشارے موجودہ دور کے اختتامی قیمت کو N دور سے پہلے کے اختتامی قیمت سے کم کرتے ہیں۔ جب تازہ ترین K لائن کی اختتامی قیمت N دور سے پہلے کی قیمت سے زیادہ ہوتی ہے تو ، متحرک مثبت ہوتا ہے ، اور یہ بڑھتی ہوئی رفتار کی نشاندہی کرتا ہے۔ جب تازہ ترین K لائن کی اختتامی قیمت N دور سے پہلے کی قیمت سے کم ہوتی ہے تو ، متحرک منفی ہوتا ہے ، اور اس کی نشاندہی کرتا ہے۔

حکمت عملی سب سے پہلے 18 سائیکلوں کی لمبائی کی حرکیات کا حساب لگاتی ہے ، یعنی موجودہ اختتامی قیمت کو 18 سائیکلوں سے پہلے کی اختتامی قیمت سے کم کرکے mom0 ◄ حاصل کی جاتی ہے۔ پھر mom0 کی ایک سائیکل کی حرکیات کا حساب لگایا جاتا ہے ، جس سے mom1 ◄ حاصل ہوتا ہے۔

جب mom0>0 اور mom1>0 زیادہ سگنل پیدا کرتے ہیں تو ، اس وقت قیمت میں اضافے کی رفتار مضبوط ہوتی ہے۔ جب mom0 اور mom1 کم سگنل پیدا کرتے ہیں تو ، اس وقت قیمت میں کمی کی رفتار مضبوط ہوتی ہے۔

حکمت عملی تازہ ترین زیادہ اور کم سگنل کے اوقات کو ریکارڈ کرتی ہے ، جب زیادہ سگنل کا وقت کم سگنل کے وقت سے زیادہ ہوتا ہے تو وہ زیادہ پوزیشن رکھتا ہے ، جب کم سگنل کا وقت زیادہ سگنل کے وقت سے زیادہ ہوتا ہے تو وہ کم پوزیشن رکھتا ہے۔

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

  1. حکمت عملی واضح اور آسان ہے ، اور اس پر عمل درآمد آسان ہے ، اور یہ مقدار میں تجارت کرنے والے ابتدائی افراد کے لئے موزوں ہے۔

  2. متحرک اشارے مارکیٹ کے رجحانات اور طاقت کو پکڑنے کے قابل ہیں ، اور طویل اور درمیانے درجے کے رجحانات کی پیروی کرنے میں اعلی جیت کی شرح ہے۔

  3. ڈبل ٹرانسمیشن فلٹرنگ کا استعمال کرتے ہوئے، جعلی توڑنے کے نتیجے میں ہونے والے نقصانات کو فلٹر کیا جا سکتا ہے.

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

  5. بروقت اسٹاپ نقصان سے باہر نکلنے سے انفرادی نقصان کو کنٹرول کیا جاسکتا ہے ، اور الٹ جانے سے زیادہ نقصان سے بچا جاسکتا ہے۔

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے:

  1. کثیر سر رویے میں قلیل مدتی ایڈجسٹمنٹ روکنے کے خاتمے کا سبب بنتا ہے ، پورے سائیکل کی رویے کو نہیں پکڑ سکتا۔ روکنے کی حد کو مناسب طریقے سے نرمی دی جاسکتی ہے۔

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

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

  4. پیرامیٹرز کو غلط ترتیب دینے سے ٹریڈنگ سگنل کی غلطی ہوسکتی ہے یا غلط سگنل پیدا ہوسکتے ہیں۔ مختلف مارکیٹوں کے لئے پیرامیٹرز کو ایڈجسٹ کرنے کی ضرورت ہے۔

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

  2. دوسرے اشارے جیسے MACD ، KD ، وغیرہ کو فلٹر کریں تاکہ رجحان کے الٹ جانے سے بچنے کے لئے نقصان ہو۔

  3. ٹریڈنگ کے رجحان میں مناسب طریقے سے کھونے کی روک تھام کو روکنے کے لئے نقصان کی حکمت عملی کو بہتر بنائیں۔ غیر رجحان مارکیٹ میں مناسب طریقے سے بند کریں.

  4. پوزیشن مینجمنٹ کی حکمت عملی میں اضافہ کریں ، غیر رجحانات میں پوزیشنوں کو کم کریں ، رجحانات میں زیادہ سے زیادہ منافع حاصل کرنے کے لئے پوزیشنوں کو بڑھائیں۔

  5. مختلف اقسام کے لئے پیرامیٹرز کو بہتر بنانے اور پیرامیٹرز کی موافقت کو بہتر بنانا۔

  6. مشین لرننگ الگورتھم شامل کریں تاکہ حکمت عملی کو متحرک طور پر بہتر بنایا جاسکے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Momentum BF 🚀", overlay=true, precision=2, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
_0 = input(false,  "════════ Test Period ═══════")
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// Momentum /////////////
_1 = input(false, "═══════ Momentum ══════")
length = input(18)
price = close

momentum(seria, length) =>
    mom = seria - seria[length]
    mom

mom0 = momentum(price, length)
mom1 = momentum(mom0, 1)

/////////////// Strategy /////////////// 
long = mom0 > 0 and mom1 > 0
short = mom0 < 0 and mom1 < 0

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Stop Losses Long ///////////////
_5 = input(false,  "═══════ Stop Loss L ══════")
SL_typel = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inpl = input(8.0, title='Fixed Stop Loss %') / 100
atrLkbl = input(20, minval=1, title='ATR Stop Period')
atrMultl = input(1.5, step=0.25, title='ATR Stop Multiplier') 
atr1l = atr(atrLkbl)

longStop1l = 0.0
longStop1l := short_signal ? na : long_signal ? close - (atr1l * atrMultl) : longStop1l[1]

slLongl = in_long_signal ? strategy.position_avg_price * (1 - sl_inpl) : na
long_sll = in_long_signal ? slLongl : na

/////////////// Stop Losses Short ///////////////
_6 = input(false, "═══════ Stop Loss S ══════")
SL_types = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inps = input(7.0, title='Fixed Stop Loss %') / 100
atrLkbs = input(20, minval=1, title='ATR Stop Period')
atrMults = input(1.5, step=0.25, title='ATR Stop Multiplier') 
atr1s = atr(atrLkbs)

shortStop1s = 0.0
shortStop1s := long_signal ? na : short_signal ? close + (atr1s * atrMults) : shortStop1s[1]

slShorts = strategy.position_avg_price * (1 + sl_inps)
short_sls = in_short_signal ? slShorts : na

_7 = input(false, "══════ Longs or Shorts ═════")
useLongs = input(true, title="Use Longs")
useShorts = input(true, title="Use Shorts")

/////////////// Execution ///////////////
if testPeriod()
    if useLongs
        strategy.entry("L", strategy.long, when=long)
        strategy.exit("L SL", "L", stop = SL_typel == "Fixed" ? long_sll : longStop1l, when=since_longEntry > 0)
    if useShorts
        strategy.exit("S SL", "S", stop = SL_types == "Fixed" ? short_sls : shortStop1s, when=since_shortEntry > 0)
        strategy.entry("S", strategy.short, when=short)
    if not useShorts
        strategy.close("L", when=short)
    if not useLongs
        strategy.close("S", when=long)

/////////////// Plotting /////////////// 
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=40)
p0 = plot(close)
p1 = plot(strategy.position_size <= 0 ? na : SL_typel == "Fixed" ? long_sll : longStop1l, title="Long Stop Loss", color=color.yellow, style=plot.style_linebr, linewidth=2)
p2 = plot(strategy.position_size >= 0 ? na : SL_types == "Fixed" ? short_sls : shortStop1s, title="Short Stop Loss", color=color.orange, style=plot.style_linebr, linewidth=2)
p3 = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, style=plot.style_linebr, title="Long Entry", color=color.green, linewidth=2)
p4 = plot(strategy.position_size >= 0 ? na : strategy.position_avg_price, style=plot.style_linebr, title="Short Entry", color=color.red, linewidth=2)
fill(p0, p3, color = color.lime, transp=60)
fill(p0, p4, color = color.red, transp=60)