इस रणनीति में चलती औसत, मात्रा संकेतकों और मूल्य गति संकेतकों को जोड़कर संचय चरण में प्रवेश करने वाले स्टॉक के समय की पहचान करने के लिए मात्रात्मक नियमों का एक सेट तैयार किया गया है। इस चरण में, स्टॉक आमतौर पर मूल्य समेकन और भंडारण की स्थिति में होते हैं, जो कम कीमत का एक अच्छा अवसर प्रदान करते हैं।
यह रणनीति मूल्य के रुझानों को निर्धारित करने के लिए 50-दिवसीय, 90-दिवसीय और 200-दिवसीय सरल चलती औसत का उपयोग करती है। खरीद संकेत केवल तब उत्पन्न होते हैं जब कीमतें 200-दिवसीय रेखा से ऊपर होती हैं। यह प्रमुख डाउनट्रेंड की अनिश्चितता को फ़िल्टर करता है।
प्रमुख प्रवृत्ति का आकलन करने के अलावा, रणनीति प्रवृत्ति की पुष्टि करने के लिए अल्पकालिक चलती औसत के क्रम का भी आकलन करती है। विशेष रूप से, यह आकलन करती है कि क्या 50-दिवसीय रेखा 90-दिवसीय रेखा से ऊपर है।
इस आधार पर कि चलती औसत प्रमुख और अल्पकालिक रुझानों की पुष्टि करती है, रणनीति संचय विशेषताओं का न्याय करने के लिए पीवीटी वॉल्यूम संकेतक और एमएसीडी संकेतक को जोड़ती है। खरीद संकेत केवल तब उत्पन्न होते हैं जब पीवीटी ऊपर की ओर टूट जाता है, एमएसीडी लाइन सिग्नल लाइन से अधिक होती है, और वॉल्यूम बढ़ता है।
अकेले चलती औसत का उपयोग करने की तुलना में, यह रणनीति प्रवृत्ति की पुष्टि करते हुए मात्रा की विशेषताओं की भी जांच करती है। इससे संचय चरण में प्रवेश करने वाले स्टॉक के समय को अधिक सटीक रूप से निर्धारित किया जा सकता है, जिससे बेहतर प्रवेश मूल्य सुनिश्चित होते हैं।
कई समय सीमाओं का विश्लेषण करके, यह रणनीति समय सीमाओं से मेल खाने के लिए मध्यम और दीर्घकालिक प्रवृत्ति निर्णयों और अल्पकालिक विशेषता निर्णयों को जोड़ती है, जो एक एकल समय सीमा को गलत तरीके से न्याय करने से अनिश्चितता को कम कर सकती है।
यह रणनीति मुख्य रूप से चलती औसत निर्णयों पर निर्भर करती है। जब कीमतें हिंसक रूप से उतार-चढ़ाव करती हैं, तो चलती औसत निर्णय विफल हो जाएंगे। इस बिंदु पर, स्थिति का आकार कम किया जाना चाहिए या स्टॉप लॉस एक्जिट को ट्रिगर किया जाना चाहिए।
इसके अतिरिक्त, संचयन चरण में गलत आकलन संभव है, इस प्रकार उल्टा होने के अवसरों को खो दिया जाता है।
इस रणनीति में मशीन लर्निंग एल्गोरिदम को सुविधाओं और मॉडल प्रशिक्षण को निकालने के द्वारा जमा करने के चरण के स्वचालित निर्णय को प्राप्त करने के लिए पेश किया जा सकता है। यह मैन्युअल रूप से सीमाओं को सेट करने से सीमाओं को कम कर सकता है।
इसके अतिरिक्त, यह रणनीति अलग-अलग बाजार वातावरणों में स्वचालित रूप से मापदंडों को स्विच करने के लिए ब्रेकपॉइंट कार्यक्षमता का भी परीक्षण कर सकती है, जिससे रणनीति अधिक मजबूत हो जाती है।
संक्षेप में, यह रणनीति आम तौर पर स्टॉक संचय चरणों की विशेषताओं का न्याय करने के लिए कीमतों और मात्राओं के मिलान के विचार को अपनाती है। जबकि प्रमुख दिशा की पुष्टि करते हुए, यह अल्पकालिक संचय के अवसरों को खोदता है। पैरामीटर अनुकूलन और मशीन लर्निंग की शुरुआत करके रणनीति प्रदर्शन में आगे सुधार के लिए अभी भी जगह है।
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h 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/ // © stocktechbot //@version=5 strategy("Accumulate", overlay = true) lookback = input(defval = 21, title = 'Lookback') offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) //SMA Tredline out = ta.sma(close, 200) outf = ta.sma(close, 50) outn = ta.sma(close, 90) outt = ta.sma(close, 21) //sma plot plot(out, color=color.blue, title="MA200", offset=offset) plot(outf, color=color.maroon, title="MA50", offset=offset) plot(outn, color=color.orange, title="MA90", offset=offset) plot(outt, color=color.olive, title="MA21", offset=offset) //MarketCap Calculation //MarketCap = 0.0 //TSO = request.financial(syminfo.tickerid, "TOTAL_SHARES_OUTSTANDING", "FQ", ignore_invalid_symbol = true) //if str.tostring(TSO) != 'na' // if ta.barssince(TSO != TSO[1] and TSO > TSO[1])==0 // MarketCap := TSO * close // // if barstate.islast and MarketCap == 0 // runtime.error("No MarketCap is provided by the data vendor.") // //momlen = 100 //msrc = MarketCap //mom = msrc - msrc[momlen] //plotmom = if (mom > mom[1]) // true //else // false //OBV with sma on macd obv = ta.cum(math.sign(ta.change(close)) * volume) smoothingLength = 5 smoothingLine = ta.sma(obv,5) [macdLine, signalLine, histLine] = ta.macd(ta.pvt, 12, 26, 9) sellvolhigh = macdLine < signalLine buyvolhigh = macdLine > signalLine //Buy Signal mafentry =ta.sma(close, 50) > ta.sma(close, 90) //matentry = ta.sma(close, 21) > ta.sma(close, 50) matwohun = close > ta.sma(close, 200) higheshigh = ta.rising(high, 2) higheslow = ta.rising(low, 2 ) twohunraise = ta.rising(out, 2) //highvol = ta.crossover(volume, ta.sma(volume, lookback)) highvol = ta.rising(volume,2) fourlow = ta.lowest(close, lookback) fourhig = ta.highest(close, lookback) change = (((fourhig - fourlow) / fourlow) * 100) <= 30 green = close > open allup = false lineabove = ta.cross(close, ta.sma(close, input(defval = 21, title = 'Entry Line'))) if matwohun and mafentry and higheshigh and twohunraise and buyvolhigh //if higheshigh and higheslow and highvol allup := true plotshape(allup, style=shape.arrowup,location=location.belowbar, color=color.green, title = "Buy Signal") barsSinceLastEntry() => strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na //Sell Signal mafexit =ta.sma(close, 50) < ta.sma(close, 90) matexit = ta.sma(close, 21) < ta.sma(close, 50) matwohund = close < ta.sma(close, 200) linebreak = ta.sma(close, input(defval = 21, title = 'Exit Line')) > close lowesthigh = ta.falling(high, 3) lowestlow = ta.falling(low, 2 ) twohunfall = ta.falling(out, 3) twentyfall = ta.falling(outt, 2) highvole = ta.crossover(volume, ta.sma(volume, 5)) //fourlow = ta.lowest(close, lookback) //fourhig = ta.highest(close, lookback) changed = (((fourhig - close) / close) * 100) >= 10 red = close < open atr = ta.atr(14) //atrsmalen = int(bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) ) atrsmalen = barsSinceLastEntry() atrsma = false atrlen = 5 if str.tostring(atrsmalen) != 'NaN' and atrsmalen > 0 atrlen := atrsmalen atrsma := atr > ta.sma(atr,50) alldwn = false if sellvolhigh and lowestlow and (close < close[1] and close < open) //if higheshigh and higheslow and highvol alldwn := true plotshape(alldwn, style=shape.arrowdown,location=location.abovebar, color=color.red, title = "Sell Signal") longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (allup) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (alldwn) strategy.entry("My Short Entry Id", strategy.short)