ডাবল ইন্টারভাল ফিল্টার মোমেন্টাম ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2024-04-01 10:54:47 অবশেষে সংশোধন করুন: 2024-04-01 10:54:47
অনুলিপি: 3 ক্লিকের সংখ্যা: 590
1
ফোকাস
1617
অনুসারী

ডাবল ইন্টারভাল ফিল্টার মোমেন্টাম ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

  1. দ্রুত এবং ধীর দুইটি চক্রের সমতল ব্যাপ্তি গণনা করুন। দ্রুত ব্যাপ্তিটি সংক্ষিপ্ত চক্র এবং ছোট গুণক ব্যবহার করে, ধীর ব্যাপ্তিটি দীর্ঘ চক্র এবং বড় গুণক ব্যবহার করে।
  2. দ্রুত এবং ধীর গতির পরিসরের গড় মানকে একটি সমন্বিত পরিসরের ফিল্টার হিসেবে ব্যবহার করা হয়।
  3. বর্তমান মূল্যের সাথে পূর্ববর্তী মূল্যের সম্পর্ক গণনা করে, উর্ধ্বমুখী প্রবণতা (upward) এবং নিম্নমুখী প্রবণতা (downward) বিচার করে।
  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)