डबल इंटरवल फ़िल्टर मोमेंटम ट्रेडिंग रणनीति


निर्माण तिथि: 2024-04-01 10:54:47 अंत में संशोधित करें: 2024-04-01 10:54:47
कॉपी: 3 क्लिक्स: 590
1
ध्यान केंद्रित करना
1617
समर्थक

डबल इंटरवल फ़िल्टर मोमेंटम ट्रेडिंग रणनीति

अवलोकन

रणनीति एक गतिशील व्यापार रणनीति है जो द्वि-अवधि फ़िल्टर पर आधारित है। रणनीति को दो चक्रों की तेज और धीमी गति की गणना के माध्यम से समतल सीमा प्राप्त होती है, जो कि वर्तमान मूल्य आंदोलन का आकलन करने के लिए एक समग्र सीमा फ़िल्टर है। जब कीमत इस सीमा को पार करती है, तो रणनीति एक खरीद / बेचने का संकेत देती है। साथ ही, रणनीति में चार ग्रेडिएंट स्टॉप और एक स्टॉप लॉस भी हैं जो जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए उपयोग किए जाते हैं।

रणनीति सिद्धांत

  1. दो चक्रों के बीच चिकनी दूरी की गणना करें, तेज और धीमी गति से। तेज अंतराल में छोटी अवधि और छोटे गुणांक हैं, और धीमी गति से लंबे समय तक और बड़े गुणांक हैं।
  2. गति और धीमी गति के बीच के औसत को एक समग्र क्षेत्र फ़िल्टर के रूप में लें (TRF) ।
  3. पिछले मूल्य के साथ वर्तमान मूल्य के संबंध की गणना करें, ऊपर की ओर प्रवृत्ति और नीचे की ओर प्रवृत्ति का न्याय करें।
  4. प्रवृत्ति के संदर्भ के रूप में FUB और FLB गतिशीलता की गणना करें।
  5. TRF के साथ समापन मूल्य के संबंध में, खरीद और बिक्री संकेत उत्पन्न होते हैं।
  6. चार ग्रेडिएंट स्टॉप और एक स्टॉप-लॉस सेट करें, जो अलग-अलग स्थिति अनुपात और लाभ / हानि प्रतिशत के अनुरूप है।

श्रेष्ठता विश्लेषण

  1. द्वि-क्षेत्र फ़िल्टर में तेज और धीमी दो चक्रों का संयोजन होता है, जो विभिन्न बाजारों की गति के अनुकूल होता है और अधिक व्यापारिक अवसरों को पकड़ने में सक्षम होता है।
  2. गतिशील रूप से चलती और उतरती रेल की डिजाइन वर्तमान रुझानों को पूरा करने और झूठे संकेतों को कम करने में मदद करती है।
  3. चार ग्रेडिएंट स्टॉप सेटिंग्स प्रवृत्ति के निरंतर होने पर अधिक मुनाफा कमा सकते हैं, और प्रवृत्ति के पलटने पर समय पर कुछ मुनाफे को लॉक कर सकते हैं।
  4. स्टॉप-लॉस सेटिंग्स एकल लेनदेन के अधिकतम नुकसान को नियंत्रित करने में मदद करती हैं और खाते की सुरक्षा की रक्षा करती हैं।

जोखिम विश्लेषण

  1. जब बाजार में उतार-चढ़ाव या अंतराल होता है, तो यह रणनीति अधिक झूठे संकेत पैदा कर सकती है, जिससे बार-बार व्यापार और प्रसंस्करण शुल्क की हानि होती है।
  2. इस प्रकार, यदि कोई व्यक्ति अपने ट्रेडों को रोकता है, तो वह अपने ट्रेडों को रोक सकता है, और यदि वह अपने ट्रेडों को रोकता है, तो वह अपने ट्रेडों को रोक सकता है।
  3. क्षति-रोधी सेटिंग्स पूरी तरह से ब्लैक स्वान की घटना से होने वाले चरम नुकसान को नहीं रोक सकती हैं।

अनुकूलन दिशा

  1. प्रवृत्ति के आकलन में सहायक के रूप में अधिक तकनीकी या बाजार भावना के संकेतकों को शामिल करने पर विचार किया जा सकता है, जिससे झूठे संकेतों को कम किया जा सके।
  2. स्टॉप और स्टॉप लॉस सेटिंग्स को विभिन्न बाजार स्थितियों और ट्रेडिंग किस्मों के अनुसार गतिशील रूप से समायोजित किया जा सकता है, जिससे रणनीति की अनुकूलनशीलता बढ़ जाती है।
  3. बैक-टेस्टिंग के आधार पर, पैरामीटर सेटिंग्स को और अनुकूलित किया जा सकता है, जैसे कि तेज और धीमी गति के बीच चक्र का चयन, स्टॉप और स्टॉप लॉस प्रतिशत सेटिंग्स, आदि, जो रणनीति की स्थिरता और लाभप्रदता में सुधार करते हैं।

संक्षेप

द्विध्रुवीय फ़िल्टर अस्थिरता ट्रेडिंग रणनीति दो चक्रों के तेज और धीमे समतल क्षेत्रों के माध्यम से एक समग्र फ़िल्टर का निर्माण करती है, जबकि गतिशील रूप से ऊपर और नीचे की ओर, मूल्य आंदोलन का न्याय करने के लिए, एक खरीद और बिक्री सिग्नल उत्पन्न करती है। रणनीति में जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए चार ग्रेडिएंट स्टॉप और एक स्टॉप-लॉस भी हैं। यह रणनीति ट्रेंडिंग स्थितियों में उपयोग के लिए उपयुक्त है, लेकिन भविष्य में अस्थिर बाजारों में अधिक झूठे सिग्नल उत्पन्न हो सकते हैं। रणनीति की अनुकूलता और स्थिरता बढ़ाने के लिए अधिक संकेतक, स्टॉप-लॉस सेटिंग्स को अनुकूलित करने, गतिशील समायोजन पैरामीटर आदि को पेश करने पर विचार किया जा सकता है।

रणनीति स्रोत कोड
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
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/
//@version=5
strategy(title='2"Twin Range Filter', overlay=true)
strat_dir_input = input.string(title='İşlem Yönü', defval='Alis', options=['Alis', 'Satis', 'Tum'])
strat_dir_value = strat_dir_input == 'Alis' ? strategy.direction.long : strat_dir_input == 'Satis' ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

////////////////////////////

// Backtest inputs
BaslangicAy = input.int(defval=1, title='İlk ay', minval=1, maxval=12)
BaslangicGun = input.int(defval=1, title='İlk Gün', minval=1, maxval=31)
BaslangicYil = input.int(defval=2023, title='İlk Yil', minval=2000)
SonAy = input.int(defval=1, title='Son Ay', minval=1, maxval=12)
SonGun = input.int(defval=1, title='Son Gün', minval=1, maxval=31)
SonYil = input.int(defval=9999, title='Son Yıl', minval=2000)

start = timestamp(BaslangicYil, BaslangicAy, BaslangicGun, 00, 00)  // backtest start window
finish = timestamp(SonYil, SonAy, SonGun, 23, 59)  // backtest finish window
window() => true

source = input(defval=close, title='Source')
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
per1 = input.int(defval=27, minval=1, title='Fast period')
mult1 = input.float(defval=1.6, minval=0.1, title='Fast range')
per2 = input.int(defval=55, minval=1, title='Slow period')
mult2 = input.float(defval=2, minval=0.1, title='Slow range')
smoothrng(x, t, m) =>
    wper = t * 2 - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper) * m
    smoothrng
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
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])
STR = filt + smrng
STS = filt - smrng
FUB = 0.0
FUB := STR < nz(FUB[1]) or close[1] > nz(FUB[1]) ? STR : nz(FUB[1])
FLB = 0.0
FLB := STS > nz(FLB[1]) or close[1] < nz(FLB[1]) ? STS : nz(FLB[1])
TRF = 0.0
TRF := nz(TRF[1]) == FUB[1] and close <= FUB ? FUB : nz(TRF[1]) == FUB[1] and close >= FUB ? FLB : nz(TRF[1]) == FLB[1] and close >= FLB ? FLB : nz(TRF[1]) == FLB[1] and close <= FLB ? FUB : FUB
al = ta.crossover(close, TRF)
sat = ta.crossunder(close, TRF)
plotshape(showsignals and al, title='Long', text='BUY', style=shape.labelup, textcolor=color.white, size=size.tiny, location=location.belowbar, color=color.rgb(0, 19, 230))
plotshape(showsignals and sat, title='Short', text='SELL', style=shape.labeldown, textcolor=color.white, size=size.tiny, location=location.abovebar, color=color.rgb(0, 19, 230))
alertcondition(al, title='Long', message='Long')
alertcondition(sat, title='Short', message='Short')
Trfff = plot(TRF)
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = close > TRF ? color.green : na
shortFillColor = close < TRF ? color.red : na
fill(mPlot, Trfff, title='UpTrend Highligter', color=longFillColor, transp=90)
fill(mPlot, Trfff, title='DownTrend Highligter', color=shortFillColor, transp=90)

//////////////////////



renk1 = input(true, "Mum Renk Ayarları?")
mumrenk = input(true,title="Trend Bazlı Mum Rengi Değişimi?")
htaColor = renk1 ? (al ? color.rgb(224, 230, 57) : #E56337) : #c92626
barcolor(color = mumrenk ? (renk1 ? htaColor : na) : na)
if (al) and window()
    strategy.entry("Al", strategy.long)
if (sat) and window()
    strategy.entry("Sat", strategy.short)


per1(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
zarkesmgb = input.float(title='Zarar Kes Yüzdesi', defval=100, minval=0.01)
zarkeslos = per1(zarkesmgb)
q1 = input.int(title='Satış Lot Sayısı 1.Kısım %', defval=5, minval=1)
q2 = input.int(title='Satış Lot Sayısı 2.Kısım %', defval=8, minval=1)
q3 = input.int(title='Satış Lot Sayısı 3.Kısım %', defval=13, minval=1)
q4 = input.int(title='Satış Lot Sayısı 4.Kısım %', defval=21, minval=1)
tp1 = input.float(title='Kar Yüzdesi 1.Kısım', defval=13, minval=0.01)
tp2 = input.float(title='Kar Yüzdesi 2.Kısım', defval=21, minval=0.01)
tp3 = input.float(title='Kar Yüzdesi 3.Kısım', defval=29, minval=0.01)
tp4 = input.float(title='Kar Yüzdesi 4.Kısım', defval=34, minval=0.01)
strategy.exit('✨KS1', qty_percent=q1, profit=per1(tp1), loss=zarkeslos)
strategy.exit('✨KS2', qty_percent=q2, profit=per1(tp2), loss=zarkeslos)
strategy.exit('✨KS3', qty_percent=q3, profit=per1(tp3), loss=zarkeslos)
strategy.exit('✨KS4', qty_percent=q4, profit=per1(tp4), loss=zarkeslos)