ডাবল রেঞ্জ ফিল্টার মম্পটাম ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-04-01 10:54:47
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশল নীতি

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



আরো