इस रणनीति का मूल विचार एक स्वचालित ट्रेडिंग प्रणाली को डिजाइन करना है जो चलती औसत और एक ट्रेलिंग स्टॉप लॉस तंत्र का उपयोग करके ड्रॉडाउन को नियंत्रित करते हुए ट्रेंडिंग बाजारों में लाभ कमा सकता है।
यह रणनीति उपयोगकर्ताओं को विभिन्न प्रकार के चलती औसत, सरल चलती औसत, घातीय चलती औसत, भारित चलती औसत आदि सहित चुनने की अनुमति देती है। उपयोगकर्ता अपनी प्राथमिकताओं के आधार पर चलती औसत प्रकार का चयन कर सकते हैं।
उपयोगकर्ताओं को चलती औसत की अवधि निर्धारित करने की आवश्यकता होती है। आम तौर पर अवधि मध्यम अवधि के व्यापार के लिए 20-60 के बीच होती है।
एक बार मूविंग एवरेज चुने जाने के बाद, रणनीति वास्तविक समय में इसकी गणना करेगी। जब कीमत मूविंग एवरेज से ऊपर टूटती है तो यह लंबी हो जाएगी और जब कीमत मूविंग एवरेज से नीचे टूटती है तो यह छोटी हो जाएगी।
यह रणनीति एक ट्रेलिंग स्टॉप लॉस तंत्र का उपयोग करती है। एक स्थिति खोलने के बाद, यह चलती औसत और मूल्य के बीच संबंध की निरंतर निगरानी करेगी, और गतिशील रूप से स्टॉप लॉस स्तर को समायोजित करेगी। विशेष रूप से, स्टॉप लॉस को चलती औसत प्लस / माइनस स्टॉप लॉस प्रतिशत पर सेट किया जाता है जो उपयोगकर्ता द्वारा सेट किया जाता है।
उपयोगकर्ता स्टॉप लॉस प्रतिशत सेट कर सकते हैं। एक बड़ा प्रतिशत का मतलब है एक व्यापक स्टॉप लॉस रेंज और कम संवेदनशीलता। एक छोटा प्रतिशत का मतलब है एक तंग स्टॉप लॉस और कम जोखिम। स्टॉप लॉस प्रतिशत आम तौर पर 2%-5% के बीच सेट किया जाता है।
स्थिति खोलने के बाद, यदि मूल्य चलती औसत के माध्यम से टूट जाता है, तो स्थिति बंद हो जाएगी।
जोखिमों को निम्न द्वारा अनुकूलित और नियंत्रित किया जा सकता हैः
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
पुष्टि के लिए अन्य संकेतक जोड़ें, सीमा-बंद बाजारों के दौरान अत्यधिक ट्रेडों से बचें। एमएसीडी, केडी जोड़ा जा सकता है, ताकि सिग्नल केवल तभी लिए जाएं जब वे संरेखित हों।
चलती औसत के संयोजन का प्रयोग करें। उदाहरण के लिए, 5-दिवसीय एमए और 20-दिवसीय एमए का उपयोग एक साथ किया जा सकता है, ताकि ट्रेडों को केवल तभी लिया जाए जब दोनों एक ही दिशा में संरेखित हों।
प्रत्येक उत्पाद पर अलग से मापदंडों का परीक्षण करें और इष्टतम मापदंडों को निर्धारित करें। मापदंड उत्पादों और समय सीमाओं के बीच भिन्न होते हैं इसलिए अलग परीक्षण की आवश्यकता होती है।
स्थिति आकार नियम जोड़ें. उदाहरण के लिए, प्रारंभिक स्थिति के लिए निश्चित मात्रा, फिर स्टॉप हानि दूरी के आधार पर स्थिति में जोड़ें.
प्रति दिन अधिकतम संख्या में ट्रेड या ट्रेडों के बीच न्यूनतम समय निर्धारित करें। इससे अत्यधिक व्यापार सीमित होता है।
स्टैटिक पैरामीटर सेटिंग से बचते हुए ऐतिहासिक डेटा के आधार पर पैरामीटर को गतिशील रूप से अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम जोड़ें।
मूल्य प्रवृत्ति का पूर्वानुमान लगाने के लिए डीप लर्निंग मॉडल को शामिल करें, प्रवृत्ति दिशा के निर्णय में सहायता करें।
कुल मिलाकर, यह एक बहुत ही व्यावहारिक प्रवृत्ति के बाद की रणनीति है। यह जोखिम को नियंत्रित करने के लिए प्रवृत्ति की दिशा और ट्रेलिंग स्टॉप निर्धारित करने के लिए चलती औसत का उपयोग करता है। यह ट्रेंडिंग बाजारों में अच्छा रिटर्न उत्पन्न कर सकता है। पैरामीटर अनुकूलन और अन्य संकेतकों या मॉडल के साथ एकीकरण को जोड़ने से स्थिरता और लाभप्रदता में और वृद्धि हो सकती है। उपयोगकर्ताओं को उत्पादों और समय सीमाओं के साथ-साथ प्रमुख घटनाओं के प्रभाव में पैरामीटर सेटिंग्स में अंतर का ध्यान रखने की आवश्यकता है। कुल मिलाकर यह रणनीति कुछ अनुभव वाले मध्यम स्तर के हेज फंड और खुदरा निवेशकों के लिए उपयुक्त है।
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-23 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //attoCryp, @HikmetSezen58 strategy("MOST Multi MAs", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100) sx=input(defval = "close" ,title="Fiyat sec", options=[ "close", "high", "low", "open", "hl2", "hlc3", "hlco4", "hlcc4", "hlccc5"]) smox=input(defval = "HulleMA", title = "Hareketli Ortalama: ", options=["T3", "SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "EVWMA", "HullMA", "HulleMA", "LSMA", "ALMA", "TMA", "SSMA"]) timeFramemost = input(title="++++++++++++++++++++++++++++++++++++", defval="MOST Ayarlari:") yuzde=input(defval=3.8, minval=0, step=0.1, title="Yuzde Oran")/100 ortalamauzunluk=input(defval=28, title="Periyot Uzunlugu", minval=1) f=input(defval=0.4, step=0.1, title="T3 icin Factor", minval=0.01) timeFrameadd=input(title="++++++++++++++++++++++++++++++++++++", defval="Diger Orta.Ayar:") offsig=input(defval=4, title="LSMA icin Offset veya ALMA icin Sigma", minval=0) offalma=input(defval=0.6, title="ALMA icin Offset", minval=0, step=0.01) timeFramess=input(title="++++++++++++++++++++++++++++++++++++", defval="Baslangic-Bitis:") gun_baslangic=input(defval=1, title="Baslangic Gunu", minval=1, maxval=31) ay_baslangic=input(defval=1, title="Baslangic Ayi", minval=1, maxval=12) yil_baslangic=input(defval=2017, title="Baslangic Yili", minval=2010) gun_bitis=input(defval=1, title="Bitis Gunu", minval=1, maxval=31) ay_bitis=input(defval=1, title="Bitis Ayi", minval=1, maxval=12) yil_bitis = input(defval=2019, title="Bitis Yili", minval=2010) // backtest icin baslangic ve bitis zamanlarini belirleme baslangic=timestamp(yil_baslangic, ay_baslangic, gun_baslangic, 00, 00) bitis=timestamp(yil_bitis, ay_bitis, gun_bitis, 23, 59) zamanaraligi() => true //guncel fiyatti belirleme guncelfiyat=sx=="high"?high : sx=="close"?close : sx=="low"?low : sx=="open"?open : sx=="hl2"?(high+low)/2 : sx=="hlc3"?(high+low+close)/3 : sx=="hlco4"?(high+low+close+open)/4 : sx=="hlcc4"?(high+low+close+close)/4 : sx=="hlccc5"?(high+low+close+close+close)/5 : close /////Ortalama Hesaplamalari///// // Tillson T3 sm0(guncelfiyat,ortalamauzunluk,f) => t3e1=ema(guncelfiyat, ortalamauzunluk) t3e2=ema(t3e1, ortalamauzunluk) t3e3=ema(t3e2, ortalamauzunluk) t3e4=ema(t3e3, ortalamauzunluk) t3e5=ema(t3e4, ortalamauzunluk) t3e6=ema(t3e5, ortalamauzunluk) c1=-f*f*f c2=3*f*f+3*f*f*f c3=-6*f*f-3*f-3*f*f*f c4=1+3*f+f*f*f+3*f*f s0=c1 * t3e6 + c2 * t3e5 + c3 * t3e4 + c4 * t3e3 // Basit ortalama sm1(guncelfiyat,ortalamauzunluk) => s1=sma(guncelfiyat, ortalamauzunluk) // Ustel ortalama sm2(guncelfiyat,ortalamauzunluk) => s2=ema(guncelfiyat, ortalamauzunluk) // Cift Ustel ortalama sm3(guncelfiyat,ortalamauzunluk) => s3=2*ema(guncelfiyat, ortalamauzunluk) - ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk) // Uclu Ustel ortalama sm4(guncelfiyat,ortalamauzunluk) => s4=3*(ema(guncelfiyat, ortalamauzunluk) - ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk)) + ema(ema(ema(guncelfiyat, ortalamauzunluk), ortalamauzunluk), ortalamauzunluk) // Agirlikli Ortalama sm5(guncelfiyat,ortalamauzunluk) => s5=wma(guncelfiyat, ortalamauzunluk) // Hacim Agirlikli Ortalama sm6(guncelfiyat,ortalamauzunluk) => s6=vwma(guncelfiyat, ortalamauzunluk) // Smoothed sm7(guncelfiyat,ortalamauzunluk) => s7=0.0 s7:=na(s7[1]) ? sma(guncelfiyat, ortalamauzunluk) : (s7[1] * (ortalamauzunluk - 1) + guncelfiyat) / ortalamauzunluk // Hull Ortalama sm8(guncelfiyat,ortalamauzunluk) => s8=wma(2 * wma(guncelfiyat, ortalamauzunluk / 2) - wma(guncelfiyat, ortalamauzunluk), round(sqrt(ortalamauzunluk))) // Hull Ustel Ortalama sm81(guncelfiyat,ortalamauzunluk) => s8=ema(2 * ema(guncelfiyat, ortalamauzunluk / 2) - ema(guncelfiyat, ortalamauzunluk), round(sqrt(ortalamauzunluk))) // Least Square sm9(guncelfiyat,ortalamauzunluk,offsig) => s9=linreg(guncelfiyat, ortalamauzunluk, offsig) // Arnaud Legoux sm10(guncelfiyat, ortalamauzunluk, offalma, offsig) => s10=alma(guncelfiyat, ortalamauzunluk, offalma, offsig) // Triangular sm11(guncelfiyat, ortalamauzunluk) => s11=sma(sma(guncelfiyat, ortalamauzunluk),ortalamauzunluk) // SuperSmoother filter sm12(guncelfiyat,ortalamauzunluk) => a1=exp(-1.414*3.14159 / ortalamauzunluk) b1=2*a1*cos(1.414*3.14159 / ortalamauzunluk) c2=b1 c3=(-a1)*a1 c1=1 - c2 - c3 s12=0.0 s12:=c1*(guncelfiyat + nz(guncelfiyat[1])) / 2 + c2*nz(s12[1]) + c3*nz(s12[2]) //Elastic Volume Weighted Moving Average sm13(guncelfiyat,ortalamauzunluk) => hacimtoplam=sum(volume, ortalamauzunluk) s13=0.0 s13:=(nz(s13[1]) * (hacimtoplam - volume)/hacimtoplam) + (volume*guncelfiyat/hacimtoplam) ortalamafiyat=smox=="T3"?sm0(guncelfiyat,ortalamauzunluk,f) : smox=="SMA"?sm2(guncelfiyat,ortalamauzunluk) : smox=="EMA"?sm2(guncelfiyat,ortalamauzunluk) : smox=="DEMA"?sm3(guncelfiyat,ortalamauzunluk) : smox=="TEMA"?sm4(guncelfiyat,ortalamauzunluk) : smox=="WMA"?sm5(guncelfiyat,ortalamauzunluk) : smox=="VWMA"?sm6(guncelfiyat,ortalamauzunluk) : smox=="SMMA"?sm7(guncelfiyat,ortalamauzunluk) : smox=="HullMA"?sm8(guncelfiyat,ortalamauzunluk) : smox=="HulleMA"?sm81(guncelfiyat,ortalamauzunluk) : smox=="LSMA"?sm9(guncelfiyat,ortalamauzunluk,offsig) : smox=="ALMA"?sm10(guncelfiyat, ortalamauzunluk, offalma, offsig) : smox=="TMA"?sm11(guncelfiyat,ortalamauzunluk) : smox=="SSMA"?sm12(guncelfiyat,ortalamauzunluk) : smox=="EVWMA"?sm13(guncelfiyat,ortalamauzunluk) : guncelfiyat /////MOST'u hesaplama///// stopfiyat=ortalamafiyat*yuzde mostfiyat=0.0 mostfiyat:=iff(ortalamafiyat>nz(mostfiyat[1],0) and ortalamafiyat[1]>nz(mostfiyat[1],0),max(nz(mostfiyat[1],0),ortalamafiyat-stopfiyat),iff(ortalamafiyat<nz(mostfiyat[1],0) and ortalamafiyat[1]<nz(mostfiyat[1],0),min(nz(mostfiyat[1],0),ortalamafiyat+stopfiyat),iff(ortalamafiyat>nz(mostfiyat[1],0),ortalamafiyat-stopfiyat,ortalamafiyat+stopfiyat))) mostcolor=ortalamafiyat>mostfiyat?lime:fuchsia plot(mostfiyat, color=mostcolor, linewidth=4, title="Most-fiyat") /////AL-SAT LONG-SHORT girislerini belirleme///// long=ortalamafiyat>mostfiyat and ortalamafiyat[1]<mostfiyat[1] short=ortalamafiyat<mostfiyat and ortalamafiyat[1]>mostfiyat[1] if (long) strategy.entry("AL-Long", strategy.long, when = zamanaraligi()) if (short) strategy.entry("SAT-Short", strategy.short, when = zamanaraligi())