এই কৌশলটি ভস পূর্বাভাস ফিল্টার এবং ইহলার্স তাত্ক্ষণিক ট্রেন্ডলাইন সূচককে একত্রিত করে পরিমাণগত ব্যবসায়ের জন্য বাজারে চক্রীয় পালা পয়েন্টগুলি সনাক্ত করতে। ভস ফিল্টারটি প্রাথমিক ক্রয় / বিক্রয় সংকেত সরবরাহ করে, যখন ট্রেন্ডলাইন সূচকটি ট্রেন্ডিং বাজারে ভস ফিল্টার থেকে বিভ্রান্তি এড়ানোর জন্য সামগ্রিক প্রবণতার দিক নির্ধারণ করে। এই কৌশলটি বিটকয়েনের মতো যন্ত্রগুলিতে ভাল কাজ করে যা চক্রীয় নিদর্শন প্রদর্শন করে, যা ভাল ব্যাকটেস্ট ফলাফল দ্বারা প্রমাণিত।
ভস ফিল্টারটি জন এফ. এহলার্স
_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])
এটি রিয়েল-টাইমে একটি ট্রেন্ড লাইন প্লট করে যা মূল্যের ক্রিয়াকলাপের সাথে ঘনিষ্ঠভাবে ফিট করে, সঠিকভাবে ট্রেন্ডের দিকনির্দেশ এবং শক্তি নির্ধারণ করে।
যখন ভস ফিল্টার ফলাফলের মধ্য দিয়ে অতিক্রম করে তখন একটি ক্রয় সংকেত উৎপন্ন হয়।
যখন ভস ফিল্টার ফলাফলের মধ্য দিয়ে অতিক্রম করে তখন একটি বিক্রয় সংকেত তৈরি হয়।
ট্রেডিং সিগন্যাল শুধুমাত্র ট্রেন্ডলাইন সূচক দ্বারা নিশ্চিত হলেই গ্রহণ করা হয়। এটি ট্রেন্ডিং মার্কেটে ভস ফিল্টার থেকে ভুল সংকেত এড়ায়।
নিম্নলিখিত উপায়ে ঝুঁকি কমাতে পারেঃ
কৌশলটি নিম্নলিখিতগুলির মাধ্যমে উন্নত করা যেতে পারেঃ
এই কৌশলটি বাজারে চক্রীয় পালা কার্যকরভাবে সনাক্ত করতে ভস ফিল্টার এবং প্রবণতা সূচককে একত্রিত করে। অনুকূলিত পরামিতি এবং ঝুঁকি নিয়ন্ত্রণের সাথে এটি একটি শক্তিশালী পরিমাণগত ট্রেডিং সিস্টেম তৈরি করতে পারে। এটি ভাল ব্যাকটেস্ট ফলাফল দ্বারা প্রমাণিত হিসাবে চক্রীয় নিদর্শন প্রদর্শনকারী যন্ত্রগুলিতে ব্যাপকভাবে প্রযোজ্য। সামগ্রিকভাবে, কৌশলটির অনন্য ভবিষ্যদ্বাণীমূলক ক্ষমতা রয়েছে এবং বহুমুখী অপ্টিমাইজেশনের মাধ্যমে বর্ধনের জন্য বিস্তৃত সম্ভাবনা রয়েছে।
/*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()