
দ্বি-মুখী হলের চলমান গড় ট্রেডিং কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা দ্বি-মুখী হলের চলমান গড়কে ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করে। এই কৌশলটি প্রচলিত প্রযুক্তিগত বিশ্লেষণে একক চলমান গড় ব্যবহারের পদ্ধতির অনুকরণ করে, দ্বি-মুখী হলের চলমান গড় ব্যবহার করে, ব্রেকপয়েন্টগুলিতে কেনা-বেচা করে।
ডুয়াল হুল মুভিং এভারেজ হল ডুয়াল হুল মুভিং এভারেজ। ডুয়াল হুল মুভিং এভারেজ হল তিনটি রেখা যা মধ্যম, উপরের এবং নীচের ট্র্যাকের মধ্য দিয়ে গঠিত, যা বিভিন্ন মূল্যের গড়ের প্রতিনিধিত্ব করে। এর গণনা সূত্রটি হলঃ
মাঝের রেলঃMode{modeSwitch, src, len) ট্র্যাকঃ HULL[0] নীচের ট্র্যাকঃ HULL[2]
এখানে Mode ফাংশনটি Hull Moving Average এর বিভিন্ন রূপ নির্বাচন করতে পারে, যার মধ্যে HMA, EHMA এবং THMA অন্তর্ভুক্ত রয়েছে। src মূল্যের উৎস এবং len হল সময়ের দৈর্ঘ্য।
এই কৌশলটি দ্বি-দিকের হলের চলমান গড়ের মধ্যম ট্র্যাকটিকে বেঞ্চমার্ক করে, দামের মধ্যম ট্র্যাকের সাথে সম্পর্ক নির্ধারণ করে এবং ট্রেডিং সিগন্যাল তৈরি করেঃ
অর্থাৎ, যদি বর্তমান K লাইনটির সমাপ্তির মূল্য মধ্যম ট্রেলের মানের চেয়ে বেশি হয়, তবে পরবর্তী K লাইনটি খোলার সময় আরও বেশি করা হবে; যদি বর্তমান K লাইনটির সমাপ্তির মূল্য মধ্যম ট্রেলের মানের চেয়ে কম হয়, তবে পরবর্তী K লাইনটি খোলার সময় প্লেইন করা হবে।
দ্বি-মুখী হলের মুভিং এভারেজ ট্রেডিং কৌশলটির নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
একটি একক সমান্তরাল রেখার পরিবর্তে দ্বি-দিকের স্ট্রিপযুক্ত অঞ্চল ব্যবহার করা ভাল সমর্থন এবং প্রতিরোধের প্রভাব এবং প্রবণতা ট্র্যাকিংয়ের জন্য আরও সুবিধাজনক।
সাধারণ মুভিং এভারেজের তুলনায়, হালের মুভিং এভারেজ কম পিছিয়ে থাকে এবং দামের পরিবর্তনের প্রতি আরও দ্রুত প্রতিক্রিয়া জানাতে পারে।
ট্রেডিং অটোমেশনের জন্য প্রচলিত প্রযুক্তিগত বিশ্লেষণ পদ্ধতির সাহায্যে সহজেই বোঝা যায়।
কৌশলগত লজিকটি সহজ, স্পষ্ট এবং সহজেই বাস্তবায়িত, উচ্চ-ফ্রিকোয়েন্সি অ্যালগরিদম ট্রেডিংয়ের জন্য উপযুক্ত।
Hull Moving Average এর কাস্টমাইজযোগ্য প্রকার এবং প্যারামিটার, যা বিভিন্ন জাত এবং ট্রেডিং টাইম ফ্রেমের জন্য অপ্টিমাইজ করা যায়।
যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবে এর কিছু ঝুঁকি রয়েছেঃ
যখন দামের ঝড় হয়, তখন আরো বেশি ক্ষতি হতে পারে। আপনি উপযুক্তভাবে প্যারামিটারগুলি সামঞ্জস্য করতে পারেন, আংশিক গোলমাল বাণিজ্য ফিল্টার করতে পারেন।
এই কৌশলটি মূলত প্রবণতা অনুসরণের উপর ভিত্তি করে তৈরি করা হয়েছে এবং দামের হ্রাসের সময় এটি কার্যকর নয়। প্রবণতা নির্ধারণের জন্য অন্যান্য সূচক বা প্রক্রিয়া যুক্ত করা যেতে পারে।
Hull Moving Average নিজেই পিছিয়ে আছে, বিশেষ করে স্বল্প মেয়াদে। প্যারামিটার অপ্টিমাইজেশন এবং সমন্বয় সূচকগুলি আংশিকভাবে সমাধান করা যেতে পারে।
ট্রেডিং সিগন্যাল ঘন ঘন হয় এবং খুব বেশি ট্রেড করা যায়। পজিশন ম্যানেজমেন্ট এবং ট্রেডিং ফ্রিকোয়েন্সি যথাযথভাবে নিয়ন্ত্রণ করা যায়।
এছাড়াও, এই কৌশলটির কয়েকটি প্রধান অপ্টিমাইজেশান রয়েছেঃ
হালের চলমান গড়ের ধরন এবং প্যারামিটারগুলিকে অপ্টিমাইজ করুন, বিভিন্ন ট্রেডিং জাতের সাথে খাপ খাইয়ে নেওয়ার জন্য মিড-রেলের সংবেদনশীলতা সামঞ্জস্য করুন।
ট্রেলিং স্টপ বা ইনক্রিমেটিভ স্টপ যুক্ত করুন, যাতে একক ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করা যায়।
ট্রেন্ডের দিকনির্দেশনা এবং শক্তি নির্ণয় করার জন্য অন্যান্য সূচকগুলির সাথে মিলিত করুন। যেমন MACD, KD ইত্যাদি।
ট্রেডিং সংখ্যা বা রিটার্নের উপর ভিত্তি করে কৌশল সক্রিয়করণের শর্ত যুক্ত করুন। বন্ধের সংখ্যা নিয়ন্ত্রণ করুন, প্লেইন হ্রাস করুন।
মাল্টি টাইম ফ্রেম সংমিশ্রণ উচ্চতর টাইম ফ্রেম ব্যবহার করে ট্রেন্ডের দিকনির্দেশনা নির্ধারণ করুন এবং গোলমালের দ্বারা বিভ্রান্ত হওয়া এড়ান
প্রবেশের যুক্তিকে অনুকূলিতকরণ করুন। প্রবেশের নিশ্চিততা বাড়ানোর জন্য ক্যান্ডেল ফর্ম্যাট ভিত্তিক হতে পারে।
দ্বি-মুখী হলের চলমান গড় ট্রেডিং কৌশল সামগ্রিকভাবে একটি ট্রেডিং সংকেত নির্মাণের জন্য ট্রেডিং সূচক-আকারের চলমান গড় ব্যবহার করে একটি পরিমাণগত কৌশল। এটি ঐতিহ্যগত চলমান গড়ের তুলনায় দ্রুততর প্রতিক্রিয়াশীল এবং আরও ভাল ট্র্যাকিং কার্যকারিতা রয়েছে। এই কৌশলটির যুক্তিটি সহজ, পরিষ্কার এবং সহজেই বাস্তবায়নযোগ্য, স্বয়ংক্রিয় ব্যবসায়ের জন্য উপযুক্ত। অবশ্যই, কিছু গোলমালের ঝুঁকি এবং প্রবণতা অনুসরণের ত্রুটি রয়েছে। প্যারামিটার অপ্টিমাইজেশন, স্টপ লস প্রক্রিয়া এবং অন্যান্য সূচকগুলির সংমিশ্রণের মতো উপায়গুলি দ্বারা এই কৌশলটি ডিশের রিয়েল-টাইম পারফরম্যান্সকে শক্তিশালী করতে পারে।
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Basic Hull Ma Pack tinkered by InSilico
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)
//FUNCTIONS
//HMA
HMA(_src, _length) => wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA
EHMA(_src, _length) => ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA
THMA(_src, _length) => wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
//SWITCH
Mode(modeSwitch, src, len) =>
modeSwitch == "Hma" ? HMA(src, len) :
modeSwitch == "Ehma" ? EHMA(src, len) :
modeSwitch == "Thma" ? THMA(src, len/2) : na
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]
//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800
//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)
if HULL[0] > HULL[2] and testPeriod()
strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
strategy.close("long")