ডাবল মুভিং এভারেজ ইন্টেলিজেন্ট ট্র্যাকিং ট্রেডিং স্ট্র্যাটেজি

লেখক:চাওঝাং, তারিখঃ ২০২৪-০২-১৮
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশল নীতি

এই কৌশলটির মূল পদ্ধতিটি হ'ল দুটি চলমান গড় এবং ওটিটি সূচক ব্যবহার করে একটি অভিযোজিত চ্যানেল তৈরি করা, বিশেষতঃ

  1. ইনপুট হিসাবে CLOSE এবং কাস্টম চলমান গড় ব্যবহার করে দ্রুত লাইন MAvg গণনা করুন, যার দৈর্ঘ্য 5 পিরিয়ড;

  2. MAvg এবং পূর্বনির্ধারিত শতাংশের উপর ভিত্তি করে চ্যানেলের জন্য দীর্ঘ লাইন অবস্থান LongStop এবং সংক্ষিপ্ত লাইন অবস্থান ShortStop গণনা করুন;

  3. ওটিটি সূচকে চ্যানেল স্টপ লস এমটি এবং লং/শর্ট দিকের উপর ভিত্তি করে চ্যানেলের দাম ওটিটি গণনা করুন।

  4. যখন দাম ওটিটি-র মাধ্যমে ভেঙে যায় তখন ট্রেডিং সিগন্যাল তৈরি করুন।

উপরের প্রক্রিয়াটি রিয়েল টাইমে মূল্য প্রবণতা পরিবর্তনের ট্র্যাকিং সক্ষম করে, ট্রেডিং সংকেত তৈরি করে।

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

এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ

  1. ডাবল মুভিং মিডিয়ার চ্যানেলের কাঠামো কার্যকরভাবে মূল্যের প্রবণতা ধারণ করে;
  2. ওটিটি সূচকটি ঝুঁকি নিয়ন্ত্রণের জন্য চ্যানেল স্টপ লস সেট করে;
  3. চ্যানেলের কাঠামো দামের পরিবর্তনে দ্রুত সাড়া দেয়;
  4. বিভিন্ন পণ্য এবং সময়সীমার জন্য নমনীয় প্যারামিটার টিউনিং।

কৌশলগত ঝুঁকি

এছাড়াও কিছু ঝুঁকি আছেঃ

  1. ডাবল মুভিং মিডিয়ায় বিভ্রান্তি সৃষ্টি হতে পারে যার ফলে মিথ্যা সংকেত পাওয়া যায়।
  2. ওটিটি পরামিতিগুলির ভুল সেটিংস খুব আক্রমণাত্মক বা সংরক্ষণশীল হতে পারে;
  3. এই কৌশলটি মূলনীতির ওপর কোনো নজর না দিয়ে কেবলমাত্র প্রযুক্তিগত সূচকগুলির ওপর নির্ভর করে।

অন্যান্য সূচক এবং মৌলিক ফিল্টারকে একত্রিত করে প্যারামিটার অপ্টিমাইজেশান করে ঝুঁকি মোকাবেলা করা যেতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি বেশ কয়েকটি দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. সঠিক পণ্য এবং সময়সীমার জন্য চলমান গড় প্যারামিটার অপ্টিমাইজ করা;
  2. সংবেদনশীলতা এবং স্থিতিশীলতা ভারসাম্য বজায় রেখে চ্যানেলের প্রস্থের পরামিতিগুলি অনুকূলিত করুন;
  3. ট্রেডিং ভলিউমের উপর ভিত্তি করে ফিল্টার যোগ করুন;
  4. মূলসূত্রের উপর ভিত্তি করে দিকনির্দেশ ফিল্টার সেট করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="BugRA_Trade_Strategy", shorttitle="BugRA_Trade_Strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true

// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")


আরো