यह रणनीति गॉसियन वितरण के विचार को लागू करती है और हेकिन-अशी कैंडलस्टिक बंद होने की कीमतों के 10-अवधि घातीय चलती औसत के आधार पर जेड-स्कोर की गणना करती है। तब सीमाओं को प्रवेश और निकास संकेतों के लिए जेड-स्कोर के 20-अवधि घातीय चलती औसत के आधार पर सेट किया जाता है जब वक्र उन्हें पार करता है।
हेकिन-अशी कैंडलस्टिक बंद होने की कीमतों के 10 अवधि के घातीय चलती औसत की गणना करें।
उपरोक्त चलती औसत डेटा के आधार पर, 25 अवधि के लुकबैक विंडो पर जेड-स्कोर की गणना करें। जेड-स्कोर दर्शाता है कि एक डेटा बिंदु औसत से कितने मानक विचलन है, जो यह तय कर सकता है कि डेटा सामान्य है या असामान्य है।
Z-स्कोर पर 20-अवधि घातीय चलती औसत ले लो एक वक्र प्राप्त करने के लिए emaScore कहा जाता है। यह वक्र Z-स्कोर के दीर्घकालिक प्रवृत्ति को दर्शाता है।
emaScore डेटा के वितरण के आधार पर ऊपरी और निचली सीमाएं निर्धारित करें। वक्र के कुछ उतार-चढ़ावों को ध्यान में रखते हुए, 90% और 10% स्तरों को सीमाओं के रूप में चुना जाता है।
लम्बा जब emaScore मध्य रेखा या निचली सीमा को पार करता है। छोटा जब emaScore ऊपरी सीमा, निचली सीमा या 100 अवधि के उच्चतम सीमा को पार करता है।
सामान्यता का न्याय करने और झूठे ब्रेकआउट को फ़िल्टर करने के लिए Z-स्कोर के माध्यम से गॉसियन वितरण विचार लागू करें।
डबल एक्सपोनेंशियल मूविंग एवरेज का दीर्घकालिक रुझान निर्धारित करने के लिए फ़िल्टरिंग प्रभाव होता है।
उचित सीमा निर्धारित करने से गलत लेनदेन की संभावना कम होती है।
100 अवधि के उच्चतम/निम्नतम बिंदुओं को शामिल करने से उलट अवसरों को पकड़ने में मदद मिलती है।
जेड-स्कोर और एमए का संयोजन पैरामीटर ट्यूनिंग के प्रति संवेदनशील है। अनुकूलन की आवश्यकता है।
उचित सीमा स्तर सीधे तौर पर रणनीति की वैधता से संबंधित हैं। बहुत व्यापक या संकीर्ण विफल हो जाएगा।
100 अवधि के उच्चतम/निम्नतम बिंदु आसानी से गलत संकेत उत्पन्न कर सकते हैं। उचित रूप से स्थितियों को आराम दें।
Heikin-अशी खुद कुछ देरी है. इस रणनीति के लिए फिट मूल्यांकन.
विभिन्न चलती औसत अवधि का परीक्षण करें, Z-स्कोर लुकबैक विंडो।
स्वचालित रूप से मापदंडों का अनुकूलन करने के लिए पैदल आगे विश्लेषण का उपयोग करें.
अलग-अलग थ्रेशोल्ड सेट करने के तरीकों का प्रयोग करें, जैसे कि एसटीडी गुणक।
गलत संकेतों को रोकने के लिए उच्चतम/निम्नतम बिंदु तर्क में सुधार करें।
अन्य मोमबत्तियों के प्रकारों या विशिष्ट कीमतों का परीक्षण हेकिन-अशी को बदलने के लिए करें।
यह रणनीति मूल्य असामान्यता का न्याय करती है और गॉसियन वितरण, डबल घातीय चलती औसत और गतिशील सीमा सेटिंग के विचार के आधार पर ट्रेडिंग सिग्नल उत्पन्न करती है। मुख्य फायदे झूठे ब्रेकआउट को फ़िल्टर करना और उलटफेर को पकड़ना हैं। हालांकि, मापदंडों के चयन और संयोजन के संबंध में बहुत बड़ा प्रभाव मौजूद है। सर्वोत्तम मापदंडों और संयोजनों को खोजने के लिए आगे के परीक्षण और अनुकूलन की आवश्यकता है।
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 5m basePeriod: 1m 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/ // © jensenvilhelm // Here is an attempt to create a robust strategy for BTCUSD on a 5 minute chart // I can't seem to get this code to work the way i want.... if you want to give it a try, please let me know - // how it goes in comment section. //@version=5 // Define the strategy settings strategy("The Z-score", shorttitle="TZS", overlay=true) // User can set the start date for the strategy startDate = timestamp("2023 06 01") // Heikin-Ashi Open, Close, High and Low calculation haClose = ohlc4 var float haOpen = na haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 haHigh = math.max(nz(haOpen, high), nz(haClose, high), high) haLow = math.min(nz(haOpen, low), nz(haClose, low), low) // Function to calculate the Z-Score z_score(_series, _length) => _mean = ta.sma(_series, _length) _stddev = ta.stdev(_series, _length) (_series - _mean) / _stddev // Compute the score and its EMA score = z_score(ta.ema(haClose, 10), 25) emaScore = ta.ema(score, 20) // Calculate lower and upper thresholds using percentiles of EMA lowerBlue = ta.percentile_linear_interpolation(emaScore, 50, 10) upperBlue = ta.percentile_linear_interpolation(emaScore, 50, 90) // Calculate the middle line as 50th percentile middleLine = ta.percentile_linear_interpolation(emaScore, 50, 50) // Plot the EMA of the score and the thresholds plot(emaScore,"The White Line", color=color.white, linewidth=2) plot(lowerBlue,"Lower Blue Line", linewidth=2) plot(upperBlue, "Upper Blue Line", linewidth=2) plot(middleLine, "Middle Yellow Line", linewidth=2, color=color.yellow) plot(score,"The Z-Score Mixed With EMA 10", color=color.green) // Calculate highest and lowest EMA score over 100 bars period highest = ta.highest(emaScore, 100) lowest = ta.lowest(emaScore, 100) // Plot highest and lowest EMA score lines plot(highest, "Highest of emaScore", color=color.red, linewidth=2) plot(lowest, "Lowest of emaScore", color=color.red, linewidth=2) // Define entry and exit conditions for long and short positions longCon = ta.crossover(score, lowerBlue) or ta.crossover(emaScore, middleLine) addOn = ta.crossover(score, highest) shortCon = ta.crossunder(emaScore, upperBlue) or ta.crossunder(emaScore, lowerBlue) or ta.crossunder(emaScore, highest) // Execute trading logic based on conditions and after the start date if (time >= startDate) if longCon strategy.entry("Long", strategy.long) if shortCon strategy.close("Long") if addOn strategy.entry("LongNR2", strategy.long) if shortCon strategy.close("LongNR2") if shortCon strategy.entry("Short", strategy.short) if longCon strategy.close("Short")