
এই কৌশলটি একটি পরিমাণগত ট্রেডিং কৌশল যা দ্বি-সমান্তরাল ব্রেকিং সিগন্যাল এবং এটিআর অস্থিরতা ফিল্টার এবং এইচএমএ প্রবণতা বিচ্যুতি একত্রিত করে। এই কৌশলটি দুটি ভিন্ন সময়ের সমান্তরাল ট্রেডিং সিগন্যাল তৈরি করে, অস্থিরতার সূচক এটিআর ফিল্টারিংয়ের সাথে একত্রিত করে এবং এইচএমএ ব্যবহার করে প্রবণতার দিকনির্দেশের জন্য এবং বিপরীতমুখী অপারেশন এড়াতে।
কৌশলটি 37-চক্রের দৈর্ঘ্যের গড়কে একটি বেসলাইন হিসাবে ব্যবহার করে, যখন দামটি নীচের থেকে উত্তোলন করে তখন ক্রয় সংকেত উত্পন্ন করে এবং যখন এটি নীচে থেকে উত্তোলন করে তখন বিক্রয় সংকেত উত্পন্ন করে। ত্রুটিপূর্ণ সংকেতগুলি ফিল্টার করার জন্য, কৌশলটি নির্ধারণ করে যে দামটি বেসলাইনটি অতিক্রম করার পরে একই দিকে চলতে থাকে তবে এটিআর ওঠানামার দ্বিগুণেরও বেশি গতিতে চলতে থাকে। সংকেত উত্পাদনের কার্যকর নির্দেশনাটি নিশ্চিত করার জন্য কৌশলটি 11 টি চক্রের দৈর্ঘ্যের এইচএমএ ব্যবহার করে।
লাভজনক পদ্ধতিতে, কৌশলটি একটি স্টপ বা দুটি বা এমনকি তিনটি ভিন্ন মূল্যের স্টপ ব্যবহারের বিকল্পকে সমর্থন করে। স্টপ-ডাউন পদ্ধতিতে, কৌশলটি সরাসরি উপরে এবং নীচে ট্র্যাক লাইনের মতো দীর্ঘ এবং সংক্ষিপ্ত স্টপ-ডাউন হিসাবে কাজ করে।
একক সমান্তরাল ব্রেকিং কৌশলটির তুলনায়, এই কৌশলটি সিগন্যাল তৈরির সময় এটিআর ওভারল্যাপিং ফিল্টার যুক্ত করে, যা বেশিরভাগ অকার্যকর সংকেতগুলি ফিল্টার করতে পারে, যা ভিজ্যুয়ালের কে-লাইন আকৃতির কৌশলটির সাথে খুব মিল রয়েছে, তাই একটি উচ্চতর জয়লাভের সম্ভাবনা রয়েছে। একই সাথে, এইচএমএ বৃদ্ধি করে ট্রেন্ডের বিচ্যুতি বিচার করে, বিপরীতমুখী পজিশনিং এড়ানো যায় এবং অপ্রয়োজনীয় ক্ষতির পরিমাণ উল্লেখযোগ্যভাবে হ্রাস করা যায়। লাভের পথে, কৌশলটি একাধিক স্টপ পয়েন্ট সেটিং সমর্থন করে, যা কিছু পরিমাণে আরও বেশি লাভ লক করতে পারে।
এই কৌশলটির সবচেয়ে বড় ঝুঁকিটি হ’ল এটিআর অস্থিরতা ফিল্টারিং কার্যকর সংকেতগুলির একটি অংশকে মুছে ফেলতে পারে, যার ফলে কৌশলটি সময়মতো পজিশন তৈরি করতে পারে না। এছাড়াও, এইচএমএ বড় প্রবণতা বিচার করার কার্যকারিতা সুস্পষ্ট নয়, কখনও কখনও দামগুলি কেবলমাত্র স্বল্পমেয়াদী সমন্বয় নয় বরং একটি বড় প্রবণতা বিপরীত হয়, যা অপ্রয়োজনীয় ক্ষতির কারণ হতে পারে। উপরোক্ত ঝুঁকি হ্রাস করার জন্য, এটিআর অস্থিরতা ফিল্টারিংয়ের প্যারামিটারগুলি যথাযথভাবে হ্রাস করা যেতে পারে, অস্থিরতার পরিসরকে প্রসারিত করা যেতে পারে, যাচাইকরণের নির্দেশের মাধ্যমে আরও কে-লাইন আকৃতির সংকেত তৈরি করতে পারে। একই সাথে এইচএমএ চক্রের প্যারামিটারগুলিও সামঞ্জস্য করা যেতে পারে, বড় প্রবণতা বিচার করার জন্য আরও দীর্ঘ সময়কালীন এইচএমএ ব্যবহার করা যেতে পারে, যাতে স্বল্পমেয়াদী সমন্বয় দ্বারা ব্যাহত না হয়।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
আরও বিভিন্ন ধরণের প্যারামিটার সমন্বয় পরীক্ষা করুন, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন। যেমন বেঞ্চমার্ক গড় লাইন দৈর্ঘ্য, এটিআর চক্র, ওলটপালট ফিল্টারিং ফ্যাক্টর ইত্যাদি প্যারামিটারগুলি সামঞ্জস্যযোগ্য।
বাজার পরিস্থিতি সম্পর্কে আরও ফিল্টারিং সূচক বা দোলক সূচক যুক্ত করুন, কৌশলটির আরও দৃness়তা বাড়ান।
উপার্জন পদ্ধতির প্যারামিটার সেটিং অপ্টিমাইজ করুন। বিভিন্ন পরিমাণ এবং মূল্যের স্তরের স্টপপ সেটিংগুলি আরও পরীক্ষা করুন।
মেশিন লার্নিং মডেলের সাথে যুক্ত হয়ে আরও কার্যকর ট্রেডিং সিগন্যাল তৈরি করা।
এই কৌশলটি ডাবল সমান্তরাল ব্রেকডাউন মূল সংকেত, এটিআর অস্থিরতা ফিল্টার অকার্যকর সংকেত এবং এইচএমএ ব্যবহার করে বড় প্রবণতা বিচ্যুতি নির্ধারণ করে বিপরীত অবস্থান তৈরি করা এড়ানোর জন্য একটি খুব কার্যকর পরিমাণগত ট্রেডিং কৌশল। কৌশল পরামিতি অপ্টিমাইজেশনের জন্য অনেক জায়গা রয়েছে, প্রভাবটি এখনও বাড়ানোর জায়গা রয়েছে, এটি আরও গবেষণা এবং অপ্টিমাইজেশনের জন্য উপযুক্ত।
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sevencampbell
//@version=5
strategy(title="Baseline Cross Qualifier Volatility Strategy with HMA Trend Bias", overlay=true)
// --- User Inputs ---
// Baseline Inputs
baselineLength = input.int(title="Baseline Length", defval=20)
baseline = ta.sma(close, baselineLength)
// PBCQ Inputs
pbcqEnabled = input.bool(title="Post Baseline Cross Qualifier Enabled", defval=true)
pbcqBarsAgo = input.int(title="Post Baseline Cross Qualifier Bars Ago", defval=3)
// Volatility Inputs
atrLength = input.int(title="ATR Length", defval=14)
multiplier = input.float(title="Volatility Multiplier", defval=2.0)
rangeMultiplier = input.float(title="Volatility Range Multiplier", defval=1.0)
qualifierMultiplier = input.float(title="Volatility Qualifier Multiplier", defval=0.5)
// Take Profit Inputs
takeProfitType = input.string(title="Take Profit Type", options=["1 Take Profit", "2 Take Profits", "3 Take Profits"], defval="1 Take Profit")
// HMA Inputs
hmaLength = input.int(title="HMA Length", defval=50)
// --- Calculations ---
// ATR
atr = ta.atr(atrLength)
// Range Calculation
rangeHigh = baseline + rangeMultiplier * atr
rangeLow = baseline - rangeMultiplier * atr
rangeColor = rangeLow <= close and close <= rangeHigh ? color.yellow : na
bgcolor(rangeColor, transp=90)
// Qualifier Calculation
qualifier = qualifierMultiplier * atr
// Dot Calculation
isLong = close > baseline and (close - baseline) >= qualifier and close > ta.hma(close, hmaLength)
isShort = close < baseline and (baseline - close) >= qualifier and close < ta.hma(close, hmaLength)
colorDot = isLong ? color.green : isShort ? color.red : na
plot(isLong or isShort ? baseline : na, color=colorDot, style=plot.style_circles, linewidth=3)
// --- Strategy Logic ---
// PBCQ
pbcqValid = not pbcqEnabled or low[pbcqBarsAgo] > baseline
// Entry Logic
longCondition = isLong and pbcqValid
shortCondition = isShort and pbcqValid
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit Logic
if (takeProfitType == "1 Take Profit")
strategy.exit("TP/SL", "Long", limit=rangeHigh, stop=rangeLow)
strategy.exit("TP/SL", "Short", limit=rangeLow, stop=rangeHigh)
else if (takeProfitType == "2 Take Profits")
strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
strategy.exit("TP2", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh)
strategy.exit("TP1", "Short", qty=strategy.position_size * 0.5, limit=rangeLow / 2)
strategy.exit("TP2", "Short", qty=strategy.position_size * 0.5, limit=rangeLow)
else if (takeProfitType == "3 Take Profits")
strategy.exit("TP1", "Long", qty=strategy.position_size * 0.5, limit=rangeHigh / 2)
strategy.exit("TP2", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 0.75)
strategy.exit("TP3", "Long", qty=strategy.position_size * 0.25, limit=rangeHigh * 1.5)