दोहरी चलती औसत बुद्धिमान ट्रैकिंग ट्रेडिंग रणनीति चलती औसत और विशिष्ट संकेतकों के आधार पर एक प्रवृत्ति के बाद की रणनीति है। रणनीति एक चैनल बनाने के लिए अलग-अलग पैरामीटर सेटिंग्स के साथ दो चलती औसत का उपयोग करती है और चैनल की ऊपरी और निचली सीमाओं को सेट करने के लिए ओटीटी संकेतक को जोड़ती है। जब कीमतें चैनल के माध्यम से तोड़ती हैं, तो खरीद या बिक्री संचालन निष्पादित किए जाते हैं।
इस रणनीति की मूल पद्धति दो चलती औसत और ओटीटी संकेतक का उपयोग करके एक अनुकूलनशील चैनल का निर्माण करना है, विशेष रूप सेः
5 अवधि की लंबाई के साथ इनपुट के रूप में CLOSE और कस्टम चलती औसत का उपयोग करके फास्ट लाइन MAvg की गणना करें;
MAvg और पूर्व निर्धारित प्रतिशत के आधार पर चैनल के लिए लंबी लाइन स्थिति LongStop और छोटी लाइन स्थिति ShortStop की गणना करें;
ओटीटी संकेतक में चैनल स्टॉप लॉस एमटी की गणना करें, और लंबी/छोटी दिशा के आधार पर चैनल की कीमत ओटीटी;
ओटीटी के माध्यम से कीमत टूटने पर ट्रेडिंग सिग्नल उत्पन्न करें।
उपरोक्त प्रक्रिया मूल्य प्रवृत्ति परिवर्तनों का वास्तविक समय में ट्रैक करने में सक्षम बनाती है, जिससे ट्रेडिंग सिग्नल उत्पन्न होते हैं।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
कुछ जोखिम भी हैं:
जोखिमों को पैरामीटर अनुकूलन, अन्य संकेतकों और मौलिक फिल्टरों के एकीकरण के माध्यम से संबोधित किया जा सकता है।
इस रणनीति को कई पहलुओं में अनुकूलित किया जा सकता हैः
संक्षेप में, यह एक दोहरी चलती औसत चैनल और ओटीटी संकेतक पर आधारित एक प्रवृत्ति के बाद की रणनीति है। मूल विचार एक अनुकूलनशील चैनल का निर्माण करना और कीमतों में ब्रेकआउट होने पर संकेत उत्पन्न करना है। रणनीति के गुण हैं लेकिन सुधार के लिए भी जगह है। पैरामीटर ट्यूनिंग और तर्क अनुकूलन के साथ, इसमें तैनात करने योग्य एक कुशल मात्रा व्यापार रणनीति बनने की क्षमता है।
/*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")