
মাল্টি ফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণ কৌশলটি মাল্টি ফ্যাক্টর মডেল এবং গতিশীলতা বিপরীতকরণের কৌশলগুলির সমন্বয় দ্বারা আরও স্থিতিশীল এবং উচ্চতর রিটার্ন অর্জন করে। এই কৌশলটি 123 বিপরীতকরণ এবং সংলাপের সূচককে দুটি স্বতন্ত্র সংকেত হিসাবে ব্যবহার করে এবং যখন উভয় সংকেত একত্রিত হয় তখন অবস্থান স্থাপন করে।
মাল্টিফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণ কৌশলটি দুটি উপ কৌশল নিয়ে গঠিতঃ 123 বিপরীতকরণ কৌশল এবং সংহতি সূচক কৌশল।
123 বিপরীতমুখী কৌশলটি 2 দিনের মধ্যে দামের ক্রমাগত উত্থান বা পতনের উপর ভিত্তি করে ট্রেডিং সংকেত তৈরি করে এবং স্টোক সূচকগুলির সাথে বাজারের অত্যধিক ঠান্ডা বা অত্যধিক গরম কিনা তা নির্ধারণ করে। বিশেষত, যখন দাম 2 দিনের জন্য ক্রমাগত উত্থিত হয় এবং 9 দিনের স্টোক ধীর লাইনটি 50 এর নীচে থাকে; যখন দাম 2 দিনের জন্য ক্রমাগত হ্রাস পায় এবং 9 দিনের স্টোক দ্রুত লাইনটি 50 এর উপরে থাকে।
সংহতি সূচক কৌশলটি প্রবণতার দিকনির্দেশ এবং শক্তি নির্ধারণের জন্য বিভিন্ন পর্যায়ের গড় এবং ঝাঁকুনি সূচকগুলির আঠালো ব্যবহার করে। এতে লাইনারি ওজন, সংকেত সংযোজন ইত্যাদি পদ্ধতি অন্তর্ভুক্ত রয়েছে। এই সূচকটি স্তরবিন্যাসের পরে, 1 থেকে 9 পর্যন্ত ফিরে আসে যা দৃ strong়তা এবং -1 থেকে -9 এর জন্য দৃ strong়তা।
অবশেষে, কৌশলটি যখন দুটি সংকেত একত্রিত হয় তখন একটি মাল্টি-হেড বা খালি হেড পজিশন তৈরি করতে বেছে নেয়।
মাল্টিফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণ কৌশলটি বিপরীতকরণ ফ্যাক্টর এবং গতিশীল ফ্যাক্টরকে একত্রিত করে, বিপরীতকরণের সুযোগকে একই সাথে ক্যাপচার করতে পারে, যাতে মিথ্যা বিরতি এড়ানো যায়, যার ফলে উচ্চতর বিজয়ী হার রয়েছে। কৌশলটির সুবিধাগুলি বিশেষভাবে প্রকাশ করা হয়েছেঃ
123 বিপরীতমুখী কৌশল একটি বিপরীতমুখী সংকেত উৎস হিসাবে কাজ করে, যা একটি স্বল্পমেয়াদী বিপরীতমুখী কৌশলকে অতিরিক্ত মুনাফা অর্জনের জন্য ব্যবহার করে।
সংহতি সূচকগুলি প্রবণতার দিকনির্দেশ এবং শক্তি নির্ধারণ করে, বিপরীত স্থানগুলির অত্যধিক ক্ষতির ঝুঁকি এড়াতে।
এই দুটি সংমিশ্রণ, একটি নির্দিষ্ট পরিমাণে পরস্পরের সুবিধা, ত্রুটি পূরণ এবং সংকেতের গুণমান উন্নত করে।
একক মডেলের তুলনায়, একাধিক ফ্যাক্টর সমন্বয় কৌশলগত স্থিতিশীলতা উন্নত করতে পারে।
মাল্টি-ফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণের কৌশলগুলির কিছু সুবিধা থাকলেও, নিম্নলিখিত ঝুঁকিগুলি রয়েছেঃ
বিপরীতমুখীতা সম্পন্ন না হলে, মূল্য আবারও ফিরে যাওয়ার ক্ষতি। ক্ষতি প্রতিরোধের ব্যবস্থা যথাযথভাবে সামঞ্জস্য করা যেতে পারে।
যখন দুটি সিগন্যালের মিল না থাকে তখন দিকনির্দেশনা নির্ধারণ করা যায় না। প্যারামিটারগুলি সামঞ্জস্যের মাধ্যমে দুটি মিলকে আরও উচ্চতর করা যেতে পারে।
মডেলগুলি জটিল, অনেকগুলি প্যারামিটার রয়েছে, যা সহজেই সামঞ্জস্য করা এবং অনুকূলকরণ করা যায় না।
একই সময়ে একাধিক উপ-মডেলের উপর নজর দেওয়া প্রয়োজন, রিয়েল-ডিস্ক অপারেশনটি কঠিন এবং মানসিক চাপ বেশি। কিছু স্বয়ংক্রিয় লেনদেনের উপাদানগুলি অপারেশনাল বোঝা হ্রাস করতে পারে।
মাল্টিফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণ কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
১২৩ বিপরীতমুখী নীতির প্যারামিটারগুলি সংশোধন করা হয়েছে যাতে বিপরীতমুখী সংকেত আরও নির্ভুল এবং নির্ভরযোগ্য হয়।
সংলাপ সূচকের পরামিতিগুলিকে সংশোধন করুন যাতে বিচার করা প্রবণতা প্রকৃত প্রবণতার আরও কাছাকাছি থাকে।
মেশিন লার্নিং অ্যালগরিদমের স্বয়ংক্রিয় অপ্টিমাইজেশান প্যারামিটার প্যাকেজ প্রবর্তন করা।
পজিশন ম্যানেজমেন্ট মডিউল যোগ করা হয়েছে, যাতে পজিশন সমন্বয় আরও পরিমাণগত এবং পদ্ধতিগত করা যায়।
স্টপ লস মডিউল যুক্ত করা হয়েছে। স্টপ লস মূল্য নির্ধারণের মাধ্যমে একক ক্ষতির কার্যকর নিয়ন্ত্রণ করা হয়েছে।
মাল্টিফ্যাক্টর মডেলের গতিশীলতা বিপরীতকরণ কৌশলটি বিপরীতকরণ ফ্যাক্টর এবং গতিশক্তি ফ্যাক্টর ব্যবহার করে, উচ্চ সংকেত মানের গ্যারান্টি দেওয়ার ভিত্তিতে, মাল্টিফ্যাক্টর ওভারল্যাপিংয়ের মাধ্যমে উচ্চতর বিজয়ী হার অর্জন করে। এই কৌশলটি বিপরীতকরণের সুযোগগুলি ক্যাপচার করার দ্বৈত সুবিধা রয়েছে, এটি একটি উচ্চ কার্যকর স্থিতিশীলতা কৌশল। ভবিষ্যতে প্যারামিটার সামঞ্জস্য, ঝুঁকি নিয়ন্ত্রণ ইত্যাদির ক্ষেত্রে ক্রমাগত অপ্টিমাইজ করা যেতে পারে, যাতে কৌশলটির উপার্জনের ঝুঁকির অনুপাত আরও বাড়ানো যায়।
/*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 )