ডুয়াল ওয়েভ ভাইব্রেশন ফিল্টার ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-11-13 10:38:20 অবশেষে সংশোধন করুন: 2023-11-13 10:38:20
অনুলিপি: 1 ক্লিকের সংখ্যা: 1984

ডুয়াল ওয়েভ ভাইব্রেশন ফিল্টার ট্রেডিং কৌশল

ওভারভিউ

ডাবল ওয়েভ কম্পন ফিল্টারিং কৌশল হল একটি ট্রেডিং কৌশল যা মূল্যের অস্থিরতার উপর ভিত্তি করে। এটি দুটি ভিন্ন প্যারামিটার সেট দ্বারা গড় অস্থিরতার পরিসীমা ব্যবহার করে, দাম এবং অস্থিরতার পরিসরের সাথে সম্পর্কিত, একটি ট্রেডিং সংকেত উত্পন্ন করে। এই কৌশলটি বিটকয়েন এবং অন্যান্য উচ্চ অস্থিরতাযুক্ত ডিজিটাল সম্পদের জন্য উপযুক্ত।

কৌশল নীতি

এই কৌশলটি দুটি ভিন্ন পিরিয়ড দৈর্ঘ্যের সমতল অস্থিরতা পরিসীমা ব্যবহার করেঃ দ্রুত অস্থিরতা পরিসীমা সূচক ((ডিফল্ট পিরিয়ড 27) এবং ধীর অস্থিরতা পরিসীমা সূচক ((ডিফল্ট পিরিয়ড 55) । অস্থিরতা পরিসীমা সূচকের গণনা সূত্রটি হলঃ বর্তমান পিরিয়ডের দামের অস্থিরতার সূচকীয় চলমান গড়ের একটি গুণিত গুণিতক ((যেমন 1.6) ।

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

বিশেষত, কৌশলটি মধ্যম রেখাকে বেঞ্চমার্ক হিসাবে ব্যবহার করে এবং মধ্যম রেখাটি দুটি ওঠানামার পরিসীমা সূচকের গড়। যখন দামগুলি মধ্যম রেখার উপরে একটি দ্রুত ওঠানামার পরিসীমা অতিক্রম করে তখন একটি মাল্টিসিগন্যাল তৈরি হয়; যখন দামগুলি মধ্যম রেখার নীচে একটি দ্রুত ওঠানামার পরিসীমা অতিক্রম করে তখন একটি শূন্য সংকেত তৈরি হয়।

ভুল বার্তা ফিল্টার করার জন্য, এই কৌশলটি একটি শর্ত যুক্ত করেছেঃ কেবলমাত্র যখন দাম পূর্ববর্তী একটি চক্রের দামের সাথে সামঞ্জস্যপূর্ণ হয় তখনই সংকেত তৈরি করা হয়। উদাহরণস্বরূপ, কেবলমাত্র যখন দাম বৃদ্ধি পায় এবং মধ্যবর্তী রেখার এক পরিসীমা অতিক্রম করে তখনই একাধিক সংকেত তৈরি করা হয়।

সংক্ষেপে বলতে গেলে, এই কৌশলটি দ্বৈত তরঙ্গের পরিসীমা সূচক ব্যবহার করে ঝাঁকুনির অঞ্চলগুলি সনাক্ত করে, দামের ঝাঁকুনির অঞ্চলগুলিকে সংকেত হিসাবে সংকেত দেয় এবং লেনদেনের নির্দেশ দেয়। একই সাথে মূল্যের দিকনির্দেশনা ফিল্টার যুক্ত করে যাতে ভুল সংকেত হ্রাস করা যায়।

কৌশলগত সুবিধা

ডাবল ওয়েভ কম্পন ফিল্টারিং কৌশলটির সুবিধাগুলি হলঃ

  1. দামের অস্থিরতার বৈশিষ্ট্য ব্যবহার করে, এটি বিটকয়েন এবং অন্যান্য উচ্চ-অস্থিরতার সম্পদের সাথে সামঞ্জস্যপূর্ণ। দ্বি-অস্থিরতার পরিসীমা সূচকটি দামের অস্থিরতার অঞ্চলকে আরও সঠিকভাবে সনাক্ত করতে পারে।

  2. ডাবল ওভাল রেঞ্জের সূচকগুলি বিভিন্ন সময়ের দৈর্ঘ্য ধারণ করে। দ্রুত সূচকগুলি স্বল্পমেয়াদী ব্রেকথ্রু সুযোগগুলি ক্যাপচার করে এবং ধীর গতির সূচকগুলি দীর্ঘমেয়াদী প্রবণতা বিবেচনা করে।

  3. দামের দিকনির্দেশনা ফিল্টার করার শর্ত যুক্ত করা হয়েছে যা স্বল্পমেয়াদী অস্থিরতার কারণে ভুল সংকেত হ্রাস করতে পারে।

  4. লেনদেনের লজিকটি সহজ, পরিষ্কার, সহজেই বোঝা যায় এবং এটি পরিমাণগত লেনদেনের জন্য উপযুক্ত।

কৌশলগত ঝুঁকি

ডাবল ওয়েভ কম্পন ফিল্টারিং কৌশলটি কিছু ঝুঁকি নিয়ে কাজ করেঃ

  1. এই সূচকগুলি কম ওঠানামার বাজারে কার্যকর হতে পারে।

  2. বিভিন্ন জাতের জন্য উর্ধ্বগামী পরিসীমা প্যারামিটারগুলিকে অপ্টিমাইজ করা দরকার, অন্যথায় ব্যবসায়ের সুযোগগুলি মিস করা হবে বা ভুল সংকেত তৈরি করা হবে।

  3. দামের উর্ধ্বমুখীতা বিবেচনা করা হয় না। যখন উর্ধ্বমুখীতা বৃদ্ধি পায় এবং দামের তুলনায় মূল্য বৃদ্ধি পায় না, তখন একটি ভুল সংকেত দেওয়া হতে পারে।

  4. উচ্চ ওভারল্যাপিং পরিবেশে, স্টপ পয়েন্ট সেটিংটি সামঞ্জস্য করার প্রয়োজন হতে পারে। অত্যধিক তীব্র স্টপগুলি প্রায়শই বন্ধ হয়ে যায়।

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

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

  1. বিভিন্ন জাতের বিভিন্ন পিরিয়ডের জন্য সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করার জন্য ভোল্টেজ ব্যাপ্তি পরামিতি পরীক্ষা এবং অপ্টিমাইজ করুন।

  2. স্টপ পজিশনে সাম্প্রতিক ওঠানামার গতিশীলতার উপর ভিত্তি করে স্টপ পজিশনের সমন্বয় করার প্রক্রিয়া যোগ করুন এবং স্টপ পজিশনের কৌশলটি অপ্টিমাইজ করুন।

  3. ভুল সংকেত এড়ানোর জন্য মূল্য ও ওঠানামা উপর ভিত্তি করে ফিল্টারিং যুক্ত করুন।

  4. অন্যান্য সূচক যেমন লেনদেনের পরিমাণের পরিবর্তন সহ, প্রবেশের নিশ্চয়তা বাড়ানো।

  5. পরীক্ষিত এবং কৌশলগতভাবে উপযুক্ত স্টপ-অফ-অ্যাড-ইন ব্যবস্থা যোগ করুন।

সারসংক্ষেপ

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

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