
डबल-वेव कंपन फ़िल्टरिंग रणनीति एक ट्रेडिंग रणनीति है जो कीमतों की अस्थिरता पर आधारित है। यह दो अलग-अलग पैरामीटर सेट के औसत अस्थिरता रेंज के संकेतकों का उपयोग करता है, जो कीमतों और अस्थिरता रेंज के बीच संबंधों को जोड़ती है और ट्रेडिंग सिग्नल उत्पन्न करती है। यह रणनीति बिटकॉइन जैसी उच्च अस्थिरता वाली डिजिटल परिसंपत्तियों के लिए उपयुक्त है।
इस रणनीति में दो अलग-अलग चक्रों की लम्बाई के साथ चिकनी अस्थिरता की सीमा का उपयोग किया जाता हैः तेजी से अस्थिरता की सीमा (डीफ़ॉल्ट चक्र 27) और धीमी गति से अस्थिरता की सीमा (डीफ़ॉल्ट चक्र 55) । अस्थिरता की सीमा के लिए सूत्र इस प्रकार है: वर्तमान चक्र की कीमत में अस्थिरता की सीमा का एक गुणांक (जैसे 1.6) ।
दो तरंगों के कंपन फ़िल्टरिंग की रणनीति यह निर्धारित करने के लिए है कि क्या वर्तमान में कीमत एक निश्चित परिमाण के कंपन क्षेत्र के भीतर है या नहीं। यह एक व्यापार संकेत उत्पन्न करता है जब कीमत उस कंपन क्षेत्र को पार करती है।
विशेष रूप से, रणनीति एक मध्य रेखा के रूप में एक बेंचमार्क का उपयोग करती है, और मध्य रेखा दो उतार-चढ़ाव की सीमा के संकेतकों का औसत है। जब कीमत मध्य रेखा के ऊपर एक तेजी से उतार-चढ़ाव की सीमा से अधिक होती है, तो एक अधिक संकेत उत्पन्न होता है; जब कीमत मध्य रेखा के नीचे एक तेजी से उतार-चढ़ाव की सीमा से नीचे होती है, तो एक शून्य संकेत उत्पन्न होता है।
गलत सूचनाओं को फ़िल्टर करने के लिए, इस रणनीति में एक शर्त भी जोड़ी गई हैः सिग्नल केवल तभी उत्पन्न होता है जब कीमतें पिछले चक्र की कीमतों के अनुरूप होती हैं। उदाहरण के लिए, सिग्नल केवल तभी उत्पन्न होते हैं जब कीमतें बढ़ जाती हैं और मध्यवर्ती रेखा से अधिक उतार-चढ़ाव की सीमा होती है।
कुल मिलाकर, यह रणनीति द्वि-अवतरण रेंज संकेतकों का उपयोग करके आघात क्षेत्रों की पहचान करती है, जो कि आघात क्षेत्रों को तोड़ने के लिए संकेत देती है, और एक ट्रेडिंग निर्देश उत्पन्न करती है। साथ ही, गलत संकेतों को कम करने के लिए मूल्य दिशा फ़िल्टर जोड़ा जाता है।
डबल-वेव कंपन फ़िल्टरिंग रणनीतियों के फायदे हैंः
कीमतों में उतार-चढ़ाव की विशेषता का उपयोग करते हुए, यह बिटकॉइन जैसी उच्च अस्थिरता वाली संपत्ति के लिए अनुकूल है। दोहरी अस्थिरता रेंज सूचक मूल्य उतार-चढ़ाव के क्षेत्रों को अधिक सटीक रूप से निर्धारित करता है।
दो तरंग सीमा सूचकांक में विभिन्न समय की लंबाई शामिल होती है। तेज सूचकांक अल्पकालिक सफलता के अवसरों को पकड़ता है, धीमी गति से सूचकांक दीर्घकालिक रुझानों को ध्यान में रखता है।
कीमतों की दिशा को फ़िल्टर करने की शर्तों को जोड़ने से अल्पकालिक अस्थिरता के कारण गलत संकेतों को कम किया जा सकता है।
लेन-देन तर्क सरल और स्पष्ट है, इसे समझने में आसान है और इसे मात्रा में लेन-देन के लिए अनुकूलित किया गया है।
डबल-वेव कंपन फ़िल्टरिंग रणनीतियों में कुछ जोखिम भी हैं जिनके बारे में ध्यान देने की आवश्यकता हैः
कम अस्थिरता वाले बाजारों में, अस्थिरता के संकेतकों के आधार पर, यह अच्छा नहीं हो सकता है।
अस्थिरता सीमा पैरामीटर को विभिन्न किस्मों के लिए अनुकूलित करने की आवश्यकता होती है, अन्यथा व्यापार के अवसरों को याद किया जाएगा या गलत संकेत उत्पन्न होंगे।
मूल्य में उतार-चढ़ाव की स्थिति को ध्यान में नहीं रखा गया है। जब कीमत में वृद्धि नहीं होती है और उतार-चढ़ाव बढ़ जाता है, तो यह गलत संकेत दे सकता है।
उच्च उतार-चढ़ाव वाले वातावरण में, स्टॉप पॉइंट सेटिंग को समायोजित करने की आवश्यकता हो सकती है। अत्यधिक चरम स्टॉप अक्सर बंद हो जाते हैं।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
वेरिएंट रेंज पैरामीटर का परीक्षण और अनुकूलन करें ताकि विभिन्न किस्मों के लिए विभिन्न चक्रों के लिए इष्टतम पैरामीटर संयोजन मिल सके।
हाल ही में अस्थिरता की गतिशीलता के आधार पर स्टॉप पोजीशन को समायोजित करने के लिए एक तंत्र में शामिल होना, स्टॉप रणनीति को अनुकूलित करना।
गलत संकेतों से बचने के लिए मूल्य और उतार-चढ़ाव के विचलन के आधार पर फ़िल्टरिंग की शर्तें जोड़ें
अन्य संकेतकों के साथ, जैसे कि लेनदेन की मात्रा में परिवर्तन, प्रवेश की निश्चितता को बढ़ाता है।
परीक्षण करें और रणनीति के लिए उपयुक्त स्टॉप-आउट-आउट तंत्र जोड़ें।
दोहरी लहर कंपन फ़िल्टरिंग रणनीति समग्र रूप से एक प्रभावी ट्रेडिंग रणनीति है जो उच्च अस्थिरता वाली संपत्ति के लिए है। यह मूल्य उतार-चढ़ाव की विशेषताओं का सही उपयोग करता है, जिससे सरल और स्पष्ट ट्रेडिंग तर्क उत्पन्न होता है। पैरामीटर अनुकूलन, जोखिम प्रबंधन आदि के माध्यम से आगे सुधार करके, यह रणनीति एक मूल्यवान घटक बन सकती है। यह हमें एक विचार भी प्रदान करता है कि बाजार में अस्थिरता की विशेषताओं के आधार पर एल्गोरिथम ट्रेडिंग कैसे की जाए।
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
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/
// © colinmck, greenmask9
//@version=4
strategy(title="Twin Range Filter Algo", overlay=true)
source = input(defval=close, title="Source")
// Smooth Average Range
per1 = input(defval=27, minval=1, title="Fast period")
mult1 = input(defval=1.6, minval=0.1, title="Fast range")
per2 = input(defval=55, minval=1, title="Slow period")
mult2 = input(defval=2, minval=0.1, title="Slow range")
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ema(abs(x - x[1]), t)
smoothrng = ema(avrng, wper) * m
smoothrng
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
// Range Filter
rngfilt(x, r) =>
rngfilt = x
rngfilt := x > nz(rngfilt[1]) ? x - r < nz(rngfilt[1]) ? nz(rngfilt[1]) : x - r :
x + r > nz(rngfilt[1]) ? nz(rngfilt[1]) : x + r
rngfilt
filt = rngfilt(source, smrng)
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])
hband = filt + smrng
lband = filt - smrng
longCond = bool(na)
shortCond = bool(na)
longCond := source > filt and source > source[1] and upward > 0 or source > filt and source < source[1] and upward > 0
shortCond := source < filt and source < source[1] and downward > 0 or source < filt and source > source[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
long = longCond and CondIni[1] == -1
short = shortCond and CondIni[1] == 1
// Plotting
// Strategy
// From this part on, programmer is greenmaks9
//
Separator = input(title="Following conditions and backtest algorithm are added by @greenmask9 🎯, original script is written by @colinmck 👍. Read both of their's release notes for more info on how this script works.", type=input.bool, defval=false)
disabler = input(title="Disable greenmask9's ATR conditions", type=input.bool, defval=false)
//second
l2 = input(title="ATR1", defval=32, minval=1)
s2 = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])
atr2(source, l2) =>
if s2 == "SMA"
sma(source, l2)
else
if s2 == "RMA"
rma(source, l2)
else
if s2 == "EMA"
ema(source, l2)
else
wma(source, l2)
//third
l3 = input(title="ATR2", defval=64, minval=1)
s3 = input(title="Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
atr3(source, l3) =>
if s3 == "RMA"
rma(source, l3)
else
if s3 == "SMA"
sma(source, l3)
else
if s3 == "EMA"
ema(source, l3)
else
wma(source, l3)
atr20=atr2(tr(true), l2)
atr30=atr3(tr(true), l3)
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
profit = input(title="Ticks profit", type=input.integer, defval=900)
stop = input(title="Ticks stoploss", type=input.integer, defval=300)
maxcandles_till_close = input(title="Time stoploss", type=input.integer, defval=17)
bull = long and (atr20<atr30 or disabler)
bear = short and (atr20<atr30 or disabler)
bullclock = barssince(bull)
bearclock = barssince(bear)
if (bull)
strategy.entry("Twin Long", strategy.long, ordersize)
strategy.exit("Exit", from_entry = "Twin Long", profit = profit, loss = stop)
if (bear)
strategy.entry("Twin Short", strategy.short, ordersize)
strategy.exit("Exit", from_entry = "Twin Short", profit = profit, loss = stop)
//time stoploss
strategy.close("Twin Long", when = bullclock == maxcandles_till_close, comment = "Timed out")
strategy.close("Twin Short", when = bearclock == maxcandles_till_close, comment = "Timed out")