
यह रणनीति एक द्विआधारी ट्रेडिंग रणनीति है जिसमें एटीआर अस्थिरता फ़िल्टर और एचएमए रुझान विचलन के साथ द्विआधारी इक्विटी ब्रेकआउट सिग्नल शामिल हैं। यह रणनीति दो अलग-अलग चक्रों की इक्विटी का उपयोग करके ट्रेडिंग सिग्नल का निर्माण करती है, जो कि अस्थिरता संकेतक एटीआर के साथ अमान्य संकेतों का एक हिस्सा फ़िल्टर करती है, एचएमए का उपयोग करके प्रवृत्ति की दिशा का आकलन करने के लिए, उलट संचालन से बचने के लिए।
रणनीति 37 चक्रों की लंबाई की औसत रेखा का उपयोग करती है, जब कीमतें नीचे से ऊपर की ओर बढ़ती हैं, तो एक खरीद संकेत उत्पन्न करती हैं, और जब कीमतें ऊपर से नीचे की ओर बढ़ती हैं, तो एक बिक्री संकेत उत्पन्न करती हैं। गलत संकेतों को फ़िल्टर करने के लिए, रणनीति ने निर्धारित किया है कि कीमतें बीएसी को तोड़ने के बाद उसी दिशा में 2 गुना से अधिक एटीआर उतार-चढ़ाव के साथ आगे बढ़ें। इसके अलावा, रणनीति 11 चक्रों की लंबाई के एचएमए का उपयोग करती है।
जीतने के तरीके पर, रणनीति एक स्टॉप का उपयोग करने के विकल्प का समर्थन करती है या दो या तीन अलग-अलग कीमतों के स्टॉप का उपयोग करती है। हारने के तरीके के लिए, रणनीति सीधे ऊपर और नीचे की कक्षा के रूप में स्टॉप करती है।
एकल समानांतर तोड़ने की रणनीति की तुलना में, इस रणनीति में एटीआर अस्थिरता फ़िल्टर को सिग्नल उत्पन्न करते समय जोड़ा जाता है, जो अधिकांश अक्षम संकेतों को फ़िल्टर कर सकता है, जो कि दृश्य K-लाइन आकृति रणनीति के साथ बहुत मेल खाता है, इसलिए एक उच्च जीत की दर प्राप्त की जा सकती है। साथ ही, HMA को बढ़ाने से प्रवृत्ति विचलन को कम किया जा सकता है, प्रतिगामी स्थिति से बचा जा सकता है, और अनावश्यक नुकसान को काफी कम किया जा सकता है। लाभप्रद तरीके से, रणनीति कई स्टॉपपॉइंट सेटिंग्स का समर्थन करती है, जो कुछ हद तक अधिक लाभ को लॉक कर सकती है।
इस रणनीति का सबसे बड़ा जोखिम यह है कि एटीआर अस्थिरता फ़िल्टर कुछ प्रभावी संकेतों को बंद कर सकता है, जिससे रणनीति समय पर स्टॉक नहीं बना सकती है। इसके अलावा, एचएमए बड़े रुझानों का न्याय करने के लिए प्रभावशाली नहीं है, और कभी-कभी कीमतें केवल अल्पकालिक समायोजन होती हैं, न कि बड़े रुझानों के उलट, जो अनावश्यक नुकसान का कारण बन सकती हैं। उपरोक्त जोखिम को कम करने के लिए, एटीआर अस्थिरता फ़िल्टर के मापदंडों को उचित रूप से कम किया जा सकता है, अस्थिरता के दायरे को चौड़ा किया जा सकता है, और अधिक के-लाइन आकार के संकेतों को सत्यापन निर्देशों के माध्यम से उत्पन्न किया जा सकता है। साथ ही, एचएमए चक्र मापदंडों को समायोजित किया जा सकता है, जो बड़े रुझानों का न्याय करने के लिए लंबी अवधि के एचएमए का उपयोग करते हैं, ताकि अल्पकालिक समायोजन से बाधित न हों।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
अधिक प्रकार के पैरामीटर संयोजनों का परीक्षण करें, सबसे अच्छा पैरामीटर संयोजन ढूंढें। जैसे कि आधारभूत औसत रेखा लंबाई, एटीआर चक्र, अस्थिरता फ़िल्टरिंग गुणांक आदि सभी समायोज्य हैं।
बाजार की स्थिति का आकलन करने के लिए अधिक फ़िल्टर या ऑसिलेटर संकेतकों को जोड़ना, रणनीति की मजबूती को और बढ़ाता है।
लाभप्रदता पैरामीटर सेटिंग्स को अनुकूलित करें। विभिन्न मात्रा और मूल्य स्तरों के लिए स्टॉप पॉइंट सेटिंग्स का परीक्षण करें।
मशीन लर्निंग मॉडल के साथ अधिक कुशल ट्रेडिंग सिग्नल उत्पन्न करना।
इस रणनीति को एकीकृत द्वि-समान रेखा के माध्यम से तोड़ने के लिए कोर सिग्नल, एटीआर अस्थिरता फ़िल्टरिंग अक्षम सिग्नल, और एचएमए का उपयोग करने के लिए प्रवृत्ति के बड़े विचलन का आकलन करने के लिए विपक्ष के निर्माण से बचने के लिए, एक बहुत ही व्यावहारिक मात्रात्मक व्यापार रणनीति है। रणनीति पैरामीटर अनुकूलन के लिए जगह बड़ी है, प्रभाव अभी भी सुधार के लिए जगह है, आगे के अध्ययन और अनुकूलन के लिए लागू करने के लायक है।
/*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)