মাল্টি-ফ্যাক্টর মডেলের উপর ভিত্তি করে মুহূর্ত বিপরীত কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-২১ 16:26:10
ট্যাগঃ

img

সারসংক্ষেপ

মল্টি-ফ্যাক্টর মডেলের উপর ভিত্তি করে মন্টম্যান্ট বিপরীত কৌশলটি আরও স্থিতিশীল এবং উচ্চতর রিটার্ন অর্জনের জন্য মাল্টি-ফ্যাক্টর মডেল এবং গতি বিপরীত কৌশলকে একত্রিত করে। কৌশলটি 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 )

আরো