ملٹی فیکٹر ماڈل مومینٹم ریورسل حکمت عملی


تخلیق کی تاریخ: 2023-12-21 16:26:10 آخر میں ترمیم کریں: 2023-12-21 16:26:10
کاپی: 0 کلکس کی تعداد: 663
1
پر توجہ دیں
1623
پیروکار

ملٹی فیکٹر ماڈل مومینٹم ریورسل حکمت عملی

جائزہ

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

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

ملٹی فیکٹر ماڈل حرکیات کی الٹ حکمت عملی دو ذیلی حکمت عملیوں پر مشتمل ہے: 123 الٹ حکمت عملی اور ہم آہنگی اشارے کی حکمت عملی

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

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

آخر میں ، حکمت عملی ایک ہی وقت میں ایک سے زیادہ یا خالی سر پوزیشن قائم کرنے کا انتخاب کرتی ہے۔

طاقت کا تجزیہ

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

  1. 123 ریورسنگ حکمت عملی ریورسنگ سگنل کا ذریعہ ہے ، جو مختصر مدت کے ریورسنگ کو پکڑ سکتا ہے جس سے اضافی آمدنی ہوتی ہے۔

  2. ریورسورس اشارے رجحان کی سمت اور طاقت کا اندازہ لگاتے ہیں ، اور الٹ جانے والے خلا میں زیادہ سے زیادہ نقصان کے خطرے سے بچتے ہیں۔

  3. دونوں کو ملا کر ، کچھ حد تک ایک دوسرے کی طاقت کو پورا کریں ، کمی کو پورا کریں ، اور سگنل کے معیار کو بہتر بنائیں۔

  4. ایک واحد ماڈل کے مقابلے میں، ایک سے زیادہ عوامل کو یکجا کرنے سے حکمت عملی کی استحکام میں اضافہ ہوتا ہے.

خطرے کا تجزیہ

اگرچہ ملٹی فیکٹر ماڈل کی حرکیات کی تبدیلی کی حکمت عملی کے کچھ فوائد ہیں ، لیکن اس کے کچھ خطرات بھی ہیں:

  1. ریورس مکمل نہیں ہوا ، قیمت ایک بار پھر پیچھے ہٹ گئی۔ نقصان کی روک تھام کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے۔

  2. دونوں سگنل متضاد ہونے پر سمت کا تعین نہیں کیا جاسکتا۔ پیرامیٹرز کو ایڈجسٹ کرکے دونوں کی مماثلت کو زیادہ سے زیادہ بنایا جاسکتا ہے۔

  3. ماڈل بہت پیچیدہ ہے، بہت سے پیرامیٹرز، آسانی سے ایڈجسٹ اور بہتر بنانے کے لئے.

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

اصلاح کی سمت

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

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

  2. ہم آہنگی کے اشارے کے پیرامیٹرز کو ایڈجسٹ کریں تاکہ فیصلے کے رجحانات کو حقیقی رجحانات کے قریب لایا جاسکے۔

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

  4. پوزیشن مینجمنٹ ماڈیول شامل کریں تاکہ پوزیشن ایڈجسٹمنٹ کو زیادہ مقدار اور منظم بنایا جاسکے۔

  5. اسٹاپ نقصان ماڈیول شامل کریں۔ اسٹاپ نقصان کی قیمت کو پہلے سے طے کرکے انفرادی نقصان کو مؤثر طریقے سے کنٹرول کریں۔

خلاصہ کریں۔

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

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 11/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This is modified version of Dale Legan's "Confluence" indicator written by Gary Fritz.
// ================================================================
// Here is Gary`s commentary:
// Since the Confluence indicator returned several "states" (bull, bear, grey, and zero), 
// he modified the return value a bit:
// -9 to -1 = Bearish
// -0.9 to 0.9 = "grey" (and zero)
// 1 to 9 = Bullish
// The "grey" range corresponds to the "grey" values plotted by Dale's indicator, but 
// they're divided by 10.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

Confluence(Harmonic, BuyBand, SellBand) =>
    pos = 0.0
    Price = close
    STL = round((Harmonic * 2) - 1 - 0.5)
    ITL = round((STL * 2) - 1 - 0.5)
    LTL = round((ITL * 2) - 1 - 0.5)
    HOFF = round(Harmonic / 2 - 0.5)
    SOFF = round(STL / 2 - 0.5)
    IOFF = round(ITL / 2 - 0.5)
    xHavg = sma(Price, Harmonic)
    xSavg = sma(Price, STL)
    xIavg = sma(Price, ITL)
    xLavg = sma(Price, LTL)
    xvalue2 = xSavg - xHavg[HOFF]
    xvalue3 = xIavg - xSavg[SOFF]
    xvalue12 = xLavg - xIavg[IOFF]
    xmomsig = xvalue2 + xvalue3 + xvalue12
    xLavgOHLC = sma(ohlc4, LTL - 1)
    xH2 = sma(Price, Harmonic - 1)
    xS2 = sma(Price, STL - 1)
    xI2 = sma(Price, ITL - 1)
    xL2 = sma(Price, LTL - 1)
    DerivH = (xHavg * 2) - xHavg[1]
    DerivS = (xSavg * 2) - xSavg[1]
    DerivI = (xIavg * 2) - xIavg[1]
    DerivL = (xLavg * 2) - xLavg[1]
    SumDH = Harmonic * DerivH
    SumDS = STL * DerivS
    SumDI = ITL * DerivI
    SumDL = LTL * DerivL
    LengH = Harmonic - 1
    LengS = STL - 1
    LengI = ITL - 1
    LengL = LTL - 1
    N1H = xH2 * LengH
    N1S = xS2 * LengS
    N1I = xI2 * LengI
    N1L = xL2 * LengL
    DRH = SumDH - N1H
    DRS = SumDS - N1S
    DRI = SumDI - N1I
    DRL = SumDL - N1L
    SumH = xH2 * (Harmonic - 1)
    SumS = xS2 * (STL - 1)
    SumI = xI2 * (ITL - 1)
    SumL = xLavgOHLC * (LTL - 1)
    xvalue5 = (SumH + DRH) / Harmonic
    xvalue6 = (SumS + DRS) / STL
    xvalue7 = (SumI + DRI) / ITL
    xvalue13 = (SumL + DRL) / LTL
    value9 = xvalue6 - xvalue5[HOFF]
    value10 = xvalue7 - xvalue6[SOFF]
    value14 = xvalue13 - xvalue7[IOFF]
    xmom = value9 + value10 + value14
    HT = sin(xvalue5 * 2 * 3.14 / 360) + cos(xvalue5 * 2 * 3.14 / 360)
    HTA = sin(xHavg * 2 * 3.14 / 360) + cos(xHavg * 2 * 3.14 / 360)
    ST = sin(xvalue6 * 2 * 3.14 / 360) + cos(xvalue6 * 2 * 3.14 / 360)
    STA = sin(xSavg * 2 * 3.14 / 360) + cos(xSavg * 2 * 3.14 / 360)
    IT = sin(xvalue7 * 2 * 3.14 / 360) + cos(xvalue7 * 2 * 3.14 / 360)
    ITA = sin(xIavg * 2 * 3.14 / 360) + cos(xIavg * 2 * 3.14 / 360)
    xSum = HT + ST + IT
    xErr = HTA + STA + ITA
    Condition2 = (((xSum > xSum[SOFF]) and (xHavg < xHavg[SOFF])) or ((xSum < xSum[SOFF]) and (xHavg > xHavg[SOFF])))
    Phase = iff(Condition2 , -1 , 1)
    xErrSum = (xSum - xErr) * Phase
    xErrSig = sma(xErrSum, SOFF)
    xvalue70 = xvalue5 - xvalue13
    xvalue71 = sma(xvalue70, Harmonic)
    ErrNum = iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, 1,
                  iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, 2, 
                     iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, 2,
                         iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, 3,
                          iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, -1,
                             iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, -2,
                              iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, -2,
                                 iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, -3, 0))))))))

    momNum = iff (xmom > 0 and xmom < xmom[1] and xmom < xmomsig , 1,
              iff (xmom > 0 and xmom < xmom[1] and xmom > xmomsig, 2,
               iff (xmom > 0 and xmom > xmom[1] and xmom < xmomsig, 2,
                 iff (xmom > 0 and xmom > xmom[1] and xmom > xmomsig, 3,
                  iff (xmom < 0 and xmom > xmom[1] and xmom > xmomsig, -1,
                   iff (xmom < 0 and xmom < xmom[1] and xmom > xmomsig, -2,
                     iff (xmom < 0 and xmom > xmom[1] and xmom < xmomsig, -2,
                      iff (xmom < 0 and xmom < xmom[1] and xmom < xmomsig, -3, 0))))))))
    
    TCNum =  iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, 1,
              iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, 2,
               iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, 2,
                 iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, 3,
                  iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, -1,
                   iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, -2,
                     iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, -2,
                      iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, -3,0))))))))
    
    value42 = ErrNum + momNum + TCNum
    Confluence = iff (value42 > 0 and xvalue70 > 0, value42,
                  iff (value42 < 0 and xvalue70 < 0, value42,
                   iff ((value42 > 0 and xvalue70 < 0) or (value42 < 0 and xvalue70 > 0), value42 / 10, 0)))
    Res1 = iff (Confluence >= 1, Confluence, 0)
    Res2 = iff (Confluence <= -1, Confluence, 0)
    Res3 = iff (Confluence == 0, 0, iff (Confluence > -1 and Confluence < 1, 10 * Confluence, 0))
    pos := iff(Res2 >= SellBand and Res2 != 0, -1,
	         iff(Res1 <= BuyBand and Res1 != 0, 1, 
    	      iff(Res3 != 0, 2, nz(pos[1], 0))))
    pos

strategy(title="Combo Backtest 123 Reversal & Confluence", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Harmonic = input(10, minval=1)
BuyBand = input(9)
SellBand = input(-9)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posConfluence = Confluence(Harmonic, BuyBand, SellBand)
pos = iff(posReversal123 == 1 and posConfluence == 1 , 1,
	   iff(posReversal123 == -1 and posConfluence == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )