यह रणनीति मूल्य प्रवृत्तियों की पहचान करने के लिए ईएमए संकेतक का उपयोग करती है और व्यापार के बाद प्रवृत्ति के लिए खरीद और बिक्री संकेतों की गणना करने के लिए मानक विचलन को जोड़ती है। मुख्य विचार बंद मूल्य और ईएमए के बीच अंतर की गणना करना है, आदेशों को ट्रिगर करने के लिए एक सीमा निर्धारित करना है।
रणनीति पहले बंद मूल्य और लंबाई ema_length के EMA के बीच अंतर v की गणना करती है। फिर यह ema_length अवधि के दौरान v के मानक विचलन dev की गणना करती है। इसके बाद यह दिशा गुणांक k निर्धारित करती है, जिसमें k=1 लंबे समय के लिए और k=-1 छोटे समय के लिए होता है। खरीद सिग्नल थ्रेशोल्ड dev_limit की गणना k * dev * कारक सीमा से की जाती है। जब v dev_limit को पार करता है, तो एक खरीद सिग्नल ट्रिगर होता है। exit signal तब होता है जब v 0 को पार करता है।
इस रणनीति में दो तरीके दिए गए हैंः
लघु खरीदें, जब v नकारात्मक dev_limit से नीचे जाता है, तो एक डाउनट्रेंड का पालन करने के लिए लंबी खरीदें।
एक अपट्रेंड का पालन करने के लिए, सकारात्मक dev_limit के ऊपर v पार करने पर लंबा खरीदें, लंबा जाएं।
संक्षेप में, रणनीति गतिशील रूप से सीमा निर्धारित करने के लिए मूल्य और ईएमए के बीच अंतर के मानक विचलन की गणना करती है और रुझानों का पालन करती है। कारक खरीद संकेतों की संवेदनशीलता को नियंत्रित करता है। ईएमए अवधि निर्धारित करता है। खरीद मोड ऑर्डर दिशा को नियंत्रित करता है।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
ईएमए कीमतों को समतल करके प्रवृत्ति की दिशा को अच्छी तरह से पहचानता है।
मानक विचलन पर आधारित गतिशील सीमा निश्चित सीमाओं की तुलना में बेहतर अनुकूल है।
दो खरीद मोड अपट्रेंड या डाउनट्रेंड का अनुसरण करने की अनुमति देते हैं।
कारक खरीद संवेदनशीलता को समायोजित करने में लचीलापन प्रदान करता है. ema_length ईएमए अवधि अनुकूलन की अनुमति देता है.
तर्क सरल और समझने और संशोधित करने में आसान है।
आक्रामक प्रवृत्ति के लिए स्थिति आकार को लचीला ढंग से कॉन्फ़िगर किया जा सकता है।
रणनीति के जोखिमः
ईएमए में देरी है और यह रुझान के मोड़ को याद कर सकता है।
यह पैरामीटर अनुकूलन पर निर्भर करता है। अनुचित सेटिंग्स अपर्याप्त संवेदनशीलता या अतिसंवेदनशीलता का कारण बनती हैं।
रुझान के बाद रुझान उलट जाने पर अधिक नुकसान का जोखिम होता है।
लगातार लंबी/लघु स्विच करने से व्यापार की आवृत्ति बढ़ जाती है।
विभिन्न बाजारों में लगातार सिग्नल आने से लागत बढ़ जाती है।
जोखिमों से निपटने के लिए, स्टॉप लॉस जोड़ने, मापदंडों को अनुकूलित करने, ओवरट्रेडिंग से बचने के लिए फ़िल्टर जोड़ने आदि पर विचार करें।
इस रणनीति को निम्न के द्वारा अनुकूलित किया जा सकता हैः
इष्टतम लंबाई खोजने के लिए विभिन्न ईएमए अवधि का परीक्षण करना।
सर्वोत्तम संवेदनशीलता खोजने के लिए विभिन्न कारक मूल्यों का परीक्षण करना।
पोजीशन साइजिंग रणनीतियों का अनुकूलन करना, जैसे पिरामिडिंग।
अस्थिर बाजारों में गलत ट्रेडों से बचने के लिए फिल्टर जोड़ना।
एकल व्यापार हानि को नियंत्रित करने के लिए स्टॉप लॉस को शामिल करना।
दो खरीद मोड के लिए अलग से मापदंडों का अनुकूलन।
रुझान को रोकने के लिए रुझान उलटने के संकेतों का शोध करना।
रणनीति ईएमए के साथ रुझानों की पहचान करती है और रुझानों का पालन करने के लिए गतिशील सीमा आदेश उत्पन्न करती है। तर्क सरल और स्पष्ट है। रुझान का पीछा करने के लिए स्थिति का आकार आक्रामक हो सकता है। इसमें ऐसे जोखिम हैं जिन्हें पैरामीटर अनुकूलन और स्टॉप लॉस के माध्यम से संबोधित करने की आवश्यकता है। यह संकेतक संयोजन और पैरामीटर ट्यूनिंग सीखने के लिए एक अच्छे उदाहरण के रूप में कार्य करता है।
/*backtest start: 2023-10-06 00:00:00 end: 2023-11-05 00:00:00 period: 1h basePeriod: 15m 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/ // © Azzrael // Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/ // (EMA - close) + Std Dev + Factor = detecting oversell/overbuy // Long only! // Pyramiding - sometimes, depends on ... // There 2 enter strategies in one script // 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%) // 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit) // Exit - crossing zero of (EMA - close) //@version=5 strategy("STR:EMA Oscilator [Azzrael]", overlay=false, margin_long=100, margin_short=100, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=30, pyramiding=3) entry_name="Buy" ema_length = input.int(200, "Period", minval=2, step=10) limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10) dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell" v = close - ta.ema(close, ema_length) dev = ta.stdev(v, ema_length) k = dno ? -1 : 1 dev_limit = k*dev*limit cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit) cond_close = ta.cross(v, 0) // dev visualization sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80) plot(dev_limit, color=color.green) plot(k*dev, color=color.new(color.blue, 60)) plot(v, color=sig_col ) hline(0) // Make love not war strategy.entry(entry_name, strategy.long, when=cond_long) strategy.close(entry_name, when=cond_close)