वॉस फिल्टर और ट्रेंड इंडिकेटर पर आधारित मात्रात्मक ट्रेडिंग रणनीति


निर्माण तिथि: 2023-09-19 16:59:10 अंत में संशोधित करें: 2023-09-19 16:59:10
कॉपी: 2 क्लिक्स: 900
1
ध्यान केंद्रित करना
1617
समर्थक

अवलोकन

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

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

वोस भविष्यवाणी फ़िल्टर

Voss ने भविष्यवाणी फ़िल्टर को जॉन F. एल्स के लेख A Peek Into The Future से लिया है। फ़िल्टर के लिए गणना सूत्र निम्नानुसार हैः

_filt = 0.5 * _s3 * _x1 + _f1 * _s2 * _filt[1] - _s1 * _filt[2]
_voss = _x2 * _filt - _sumC

इसमें,_x1 मूल्य का एक अंश है;_x2 समतल कारक है;_s1、_s2、_s3 फ़िल्टर पैरामीटर है;_f1 आवर्ती है;_filt फ़िल्टर परिणाम है;_अंतिम आउटपुट के लिए voss.

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

क्षणिक रुझान रेखा सूचक

पल ट्रेंड लाइन सूचकांक की गणना निम्न सूत्रों द्वारा की जाती हैः

_it = (_a-((_a*_a)/4.0))*_src+0.5*_a*_a*_src[1]-(_a-0.75*_a*_a)*_src[2]+2*(1-_a)*nz(_it[1])+-(1-_a)*(1-_a)*nz(_it[2])

यह सूचक वास्तविक समय में एक प्रवृत्ति रेखा को रेखांकित करता है जो कीमत के साथ सबसे अधिक मेल खाती है, जिससे प्रवृत्ति की दिशा और ताकत का सटीक आकलन किया जा सकता है।

रणनीति तर्क

जब वोस ने नकारात्मक से सही मोड़ लिया, और ऊपर के फ़िल्टर परिणामों के माध्यम से एक खरीद संकेत उत्पन्न किया।

जब वोस ने पॉज़िटिव-नेगेटिव को बदल दिया, और नीचे के फ़िल्टर परिणामों के माध्यम से एक बेचने का संकेत दिया।

इसके अलावा, ट्रेडिंग सिग्नल केवल तभी जारी किया जाता है जब एक क्षणिक ट्रेंड लाइन संकेतक ट्रेंड की दिशा की पुष्टि करता है। इससे वोस फिल्टर द्वारा ट्रेंडिंग मार्केट में गलत सिग्नल को फ़िल्टर किया जा सकता है।

रणनीतिक लाभ

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

रणनीतिक जोखिम और समाधान

  • यह रणनीति फ़िल्टरों पर निर्भर करती है जो अग्रिम में संकेत देते हैं और कुछ रुझानों को छोड़ सकते हैं
  • मजबूत रुझानों में, प्रतिकूल व्यापारिक संकेत हो सकते हैं, जिससे नुकसान हो सकता है

जोखिम को निम्न तरीकों से कम किया जा सकता हैः

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

रणनीति अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

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

संक्षेप

इस रणनीति को एकीकृत Voss फ़िल्टर और प्रवृत्ति के संकेतकों, प्रभावी रूप से पहचान करने के लिए बाजार में आवधिक पलटाव बिंदुओं. इस रणनीति को अनुकूलित करने के लिए पैरामीटर, नियंत्रण जोखिम के माध्यम से स्थिर मात्रात्मक व्यापार प्रणाली को प्राप्त कर सकते हैं. यह व्यापक रूप से स्पष्ट आवधिकता के साथ किस्मों में लागू किया जा सकता है, और वापस परीक्षण में अच्छा व्यापार प्रभाव दिखाया गया है. कुल मिलाकर, इस रणनीति में अद्वितीय पूर्वानुमान क्षमता है, और कई पहलुओं के माध्यम से अनुकूलित किया जा सकता है, व्यापक आवेदन की संभावनाओं के साथ.

रणनीति स्रोत कोड
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// A Peek Into the Future
// John F. Ehlers
// TASC Aug 2019

// Created by e2e4mfck for tradingview.com
// Modified by © Bitduke

//@version=4
//strategy("Voss Strategy (Filter + IT)", overlay=false, calc_on_every_tick=false,pyramiding=0, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075)

// voss filter

source = input(close, type = input.source)
period = input(20, type = input.integer)
predict = input(4, type = input.integer)
bandwidth = input(0.25, type = input.float)

// it trendline

src = input(hl2, title="Source IT")
a = input(0.07, title="Alpha", step=0.01) 
fr = input(false, title="Fill Trend Region")
ebc = input(false, title="Enable barcolors")
hr = input(false, title="Hide Ribbon")


voss_filter (_period, _predict, _bandwidth, _source) =>
	float _filt = 0, float _sumC = 0, float _voss = 0
	_PI		= 2 * asin(1)
	_order	= 3 * _predict
	_f1		= cos(2 * _PI / _period)
	_g1		= cos(_bandwidth * 2 * _PI / _period)
	_s1		= 1 / _g1 - sqrt(1 / (_g1 * _g1) - 1)
	_s2		= 1 + _s1
	_s3		= 1 - _s1
	_x1		= _source - _source[2]
	_x2		= (3 + _order) / 2

	for _i = 0 to (_order - 1)
		_sumC := _sumC + ((_i + 1) / _order) * _voss[_order - _i]

	if bar_index <= _order
		_filt := 0		
		_voss := 0		
	else			
		_filt := 0.5 * _s3 * _x1 + _f1 * _s2 * _filt[1] - _s1 * _filt[2]
		_voss := _x2 * _filt - _sumC

	[_voss, _filt]


[Voss, Filt] = voss_filter(period, predict, bandwidth, source)


instantaneous_trendline (_src, _a, _freq, _ebc, _hr) =>
    _it = 0.0
    _it := (_a-((_a*_a)/4.0))*_src+0.5*_a*_a*_src[1]-(_a-0.75*_a*_a)*_src[2]+2*(1-_a )*nz(_it[1], ((_src+2*_src[1]+_src[2])/4.0))-(1-_a)*(1-_a)*nz(_it[2], ((_src+2*_src[1]+_src[2])/4.0))
    _lag = 2.0*_it-nz(_it[2])
    
    [_it, _lag]

[it, lag] = instantaneous_trendline(src, a, fr, ebc, hr)

// - - - - -  - - - - - //

plot(Filt, title = "Filter", style = plot.style_line, color = color.red, linewidth = 2)
plot(Voss, title = "Voss", style = plot.style_line, color = color.blue,	linewidth = 2)
hline(0.0, title = "Zero", linestyle = hline.style_dashed, color = color.black,	linewidth = 1)
plot(hr? na:it, title="IT Trend", color= fr? color.gray : color.red, linewidth=1)
plot(hr? na:lag, title="IT Trigger", color=fr? color.gray : color.blue, linewidth=1)


// Strategy Logic
longCondition =  lag < it  and crossover(Voss,Filt) 
shortCondition = it > lag and crossover(Filt,Voss) 

strategy.entry("Voss_Short", strategy.short, when=shortCondition)
strategy.entry("Voss_Long", strategy.long, when=longCondition)


// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(2, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()