दोहरी चलती औसत बुद्धिमान ट्रैकिंग ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-18 15:58:08
टैगः

img

अवलोकन

दोहरी चलती औसत बुद्धिमान ट्रैकिंग ट्रेडिंग रणनीति चलती औसत और विशिष्ट संकेतकों के आधार पर एक प्रवृत्ति के बाद की रणनीति है। रणनीति एक चैनल बनाने के लिए अलग-अलग पैरामीटर सेटिंग्स के साथ दो चलती औसत का उपयोग करती है और चैनल की ऊपरी और निचली सीमाओं को सेट करने के लिए ओटीटी संकेतक को जोड़ती है। जब कीमतें चैनल के माध्यम से तोड़ती हैं, तो खरीद या बिक्री संचालन निष्पादित किए जाते हैं।

रणनीतिक सिद्धांत

इस रणनीति की मूल पद्धति दो चलती औसत और ओटीटी संकेतक का उपयोग करके एक अनुकूलनशील चैनल का निर्माण करना है, विशेष रूप सेः

  1. 5 अवधि की लंबाई के साथ इनपुट के रूप में CLOSE और कस्टम चलती औसत का उपयोग करके फास्ट लाइन MAvg की गणना करें;

  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")


अधिक