مومنٹم بریک آؤٹ حکمت عملی

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

img

جائزہ

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

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

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

حکمت عملی سب سے پہلے mom0 میں ذخیرہ شدہ 18 دورانیہ رفتار کا حساب لگاتی ہے، جو کہ mom1 میں ذخیرہ شدہ mom0 کے 1 دورانیہ رفتار کا حساب لگاتی ہے۔

جب ماں0>0 اور ماں1>0 ، ایک لمبا سگنل تیار کیا جاتا ہے ، جس سے تیز رفتار رفتار کی نشاندہی ہوتی ہے۔ جب ماں0<0 اور ماں1<0 ، ایک مختصر سگنل تیار کیا جاتا ہے ، جس سے مضبوط نیچے کی رفتار کی نشاندہی ہوتی ہے۔

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

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

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

  1. منطق سادہ اور سمجھنے میں آسان ہے، مقداری تجارت میں beginners کے لئے موزوں.

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

  3. دوہری رفتار فلٹر غلط فرار سے نقصانات سے بچنے میں مدد ملتی ہے.

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

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

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات کو نوٹ کرنا:

  1. اپ ٹرینڈ میں قلیل مدتی pullbacks کے دوران سٹاپ نقصان سے باہر نکلنا ، پورے رجحان کو پکڑنے میں ناکام۔ سٹاپ نقصان کی حد کو بڑھانے پر غور کر سکتے ہیں۔

  2. مختلف مارکیٹوں میں کثرت سے کھلی اور بند تجارت کمیشن اور سلائیپج سے ہونے والی لاگت میں اضافہ کرتی ہے۔ تجارتی تعدد کو کم کرنے کے لئے فلٹر کو نرم کرنے پر غور کیا جاسکتا ہے۔

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

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

اصلاح کی ہدایات

حکمت عملی کو بہتر بنانے کے کچھ طریقے:

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

  2. دیگر اشارے فلٹرز جیسے ایم اے سی ڈی، کے ڈی شامل کریں تاکہ رجحان کی تبدیلی سے نقصانات سے بچنے کے لئے.

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

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

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

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

نتیجہ

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


/*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)

مزید