ভস ফিল্টার এবং ট্রেন্ড ইন্ডিকেটরের উপর ভিত্তি করে পরিমাণগত ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-19 16:59:10 অবশেষে সংশোধন করুন: 2023-09-19 16:59:10
অনুলিপি: 2 ক্লিকের সংখ্যা: 900
1
ফোকাস
1617
অনুসারী

ওভারভিউ

এই কৌশলটি ভসসের পূর্বাভাস ফিল্টার এবং এহলারের তাত্ক্ষণিক প্রবণতা লাইন সূচকগুলিকে সংহত করে বাজারের পর্যায়ক্রমিক টার্নপয়েন্টগুলি সনাক্ত করতে এবং পরিমাণগত লেনদেনের জন্য। ভস ফিল্টারটি ক্রয় / বিক্রয় সংকেতগুলি অগ্রিম প্রেরণ করতে পারে, এবং তাত্ক্ষণিক প্রবণতা লাইন সূচকগুলি সামগ্রিক প্রবণতার দিকনির্দেশের বিচার করতে ব্যবহৃত হয় এবং প্রবণতা বাজারে ভস ফিল্টারের বিভ্রান্তি হ্রাস করে। এই কৌশলটি বিটকয়েনের মতো আরও স্পষ্টভাবে পর্যায়ক্রমিক জাতের জন্য ব্যবহৃত হতে পারে, যা প্রতিক্রিয়াতে ভাল কাজ করে।

কৌশল নীতি

ভস ভবিষ্যদ্বাণী ফিল্টার

ভস ভবিষ্যদ্বাণীমূলক ফিল্টারটি জন এফ ইলস-এর প্রবন্ধ 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 ফিল্টার একটি ভবিষ্যদ্বাণীমূলক সংকেত প্রেরণ করে, যা পর্যায়ক্রমিক বিপরীত পয়েন্ট ধরতে পারে
  • তাত্ক্ষণিক প্রবণতা লাইন নির্দেশক সঠিকভাবে প্রবণতা দিক নির্ণয় করতে পারে, ফিল্টার দ্বারা প্রেরিত ভুল সংকেত এড়াতে
  • কনফিগারযোগ্য প্যারামিটারগুলি বিভিন্ন চক্র এবং বাজারের পরিবেশের জন্য অনুকূলিতকরণযোগ্য
  • স্টপ লস স্ট্র্যাটেজি কন্ট্রোল ঝুঁকি যোগ করা যায়

কৌশলগত ঝুঁকি ও সমাধান

  • এই কৌশলটি ফিল্টারগুলির উপর নির্ভর করে যা কিছু প্রবণতা এড়াতে পারে
  • একটি শক্তিশালী প্রবণতা অধীনে, একটি প্রতিক্রিয়াশীল ট্রেডিং সংকেত হতে পারে, ক্ষতির সাথে

নিম্নলিখিত উপায়ে ঝুঁকি কমাতে পারেনঃ

  • বিভিন্ন জাতের সাথে সামঞ্জস্য রেখে চক্রের প্যারামিটারগুলি অনুকূলিত করুন
  • ব্যান্ডউইথ প্যারামিটারগুলি সামঞ্জস্য করুন, ফিক্সিং শক্তি হ্রাস করুন, বিভ্রান্তিকর সংকেত হ্রাস করুন
  • প্রবণতা ফিল্টার যুক্ত করুন, শক্তিশালী প্রবণতা অধীনে ভুল সংকেত এড়াতে
  • স্টপ লস স্ট্র্যাটেজি সেট করুন এবং একক ক্ষতি নিয়ন্ত্রণ করুন

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  • ভাল ইনপুট পেতে বিভিন্ন মূল্যের উৎস, যেমন ক্লোজ-আপ মূল্য, গড়, ইত্যাদি চেষ্টা করুন
  • নির্দিষ্ট জাতের সাথে মিলিত ফিল্টার চক্রের প্যারামিটারগুলি সামঞ্জস্য করুন
  • প্রবণতা পরিমাপ প্যারামিটারগুলিকে অপ্টিমাইজ করুন, আরও সঠিক প্রবণতা বিচার করুন
  • বিভিন্ন ট্রেন্ডিং ইন্ডিকেটর ব্যবহার করে সঠিক সমন্বয় খুঁজে বের করা
  • স্টপ, ট্রেইলিং স্টপ কৌশল যুক্ত করুন এবং ঝুঁকি নিয়ন্ত্রণ করুন
  • প্যারামিটার অপ্টিমাইজেশান, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন

সারসংক্ষেপ

এই কৌশলটি ভস ফিল্টার এবং ট্রেন্ডিং সূচকগুলিকে সংহত করে, যা কার্যকরভাবে বাজারের পর্যায়ক্রমিক বিপর্যয় চিহ্নিত করতে পারে। প্যারামিটারগুলি অপ্টিমাইজ করে, ঝুঁকি নিয়ন্ত্রণ করে, এই কৌশলটি স্থিতিশীল পরিমাণগত ব্যবসায়ের সিস্টেম অর্জন করতে পারে। এটি সুস্পষ্টভাবে পর্যায়ক্রমিক জাতের জন্য ব্যাপকভাবে প্রয়োগ করা যেতে পারে, যা পুনরাবৃত্তিতে ভাল ব্যবসায়ের কার্যকারিতা প্রদর্শন করেছে। সামগ্রিকভাবে, এই কৌশলটির অনন্য পূর্বাভাস ক্ষমতা রয়েছে এবং বহুমুখী দিক দিয়ে অপ্টিমাইজ করা যেতে পারে, যার বিস্তৃত প্রয়োগের সম্ভাবনা রয়েছে।

কৌশল সোর্স কোড
/*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()