गतिशील स्तर सूचक में ऐसे स्तर (मूल्य में उलटफेर के क्षेत्र) होते हैं जो अन्य फाइबोनैचि संख्याओं के साथ परस्पर संबंधित होते हैं। प्रत्येक स्तर मूल्य में उलटफेर की संभावना का कारण बनता है। सभी स्तरों मौजूदा गैर चिकनी थरथरानवाला मूल्यों से गठित कर रहे हैं। यह आप बारी क्षेत्र सीमाओं, उदाहरण के लिए, -100 और 100 तय नहीं करने की अनुमति देता है, CCI में किया जाता है के रूप में या आरएसआई सूचक में रिवर्सल जोन के लिए 30 और 70 के मान। गतिशील स्तर ऑसिलेटर मूल्यों में स्पाइक्स के अनुकूल होते हैं और आपको मूल्य रिवर्सल बिंदुओं को अधिक बार और कम कुशलता से खोजने की अनुमति देते हैं।
.:: कम्पोजिट ऑसिलेटर (3 में 1) ऑसिलेटर लाइन में आरएसआई, सीसीआई, स्टॉक सूचकांक के तीन माप एक साथ एक व्यापक प्रतिशत में होते हैं। साथ ही, सेटिंग्स के लिए धन्यवाद, आप आसानी से सूचकांक में से एक से छुटकारा पा सकते हैं।
.:: सीसीआई + आरएसआई + स्टॉक अनुपात की सेटिंगः:. प्राकृतिक संकेतकों में से प्रत्येक का गणना सूत्र में अपना भार होता हैः w2 * cci (+ w1 * (rsi - 50) + (1 - w2 - w1) * (स्टॉक - 50), यह आपको इन विभिन्न संकेतकों में से किसी के लिए एक थरथरानवाला या प्रत्येक के लिए तीक्ष्णता भार देखने की अनुमति देता है
.:: ऑसिलेटर के समतल स्तर और रेखाएं: ऑसिलेटर के मानों को चिकना करने से आपको शोर को फ़िल्टर करने और अधिक सटीक डेटा प्राप्त करने की अनुमति मिलती है। स्तरों को छूने से आपको इनपुट की देरी को समायोजित करने की अनुमति मिलती है।
.:: अपार्टमेंट के दौरान गतिविधि:::. स्तरों के गतिशील निर्माण आप मूल्य उलट क्षेत्र में खोजने के लिए अनुमति देता है, यहां तक कि जब कीमत एक फ्लैट (फ्लैट) में है
.:: आरएसआई भार / सीसीआई भार क्रमशः आरएसआई और सीसीआई संकेतक के लिए वजन नियंत्रण गुणांक. जब आप आरएसआई वजन = 0 सेट, सीसीआई और स्टॉक के संयोजन को बराबर, जब आरएसआई वजन शून्य है और सीसीआई वजन दोलनकर्ता मूल्य के बराबर है ग्राफ्ट किया जाएगा केवल स्टॉक से। मध्यवर्ती मानों में 0 से 100 के प्रतिशत के रूप में तीनों ऑसिलेटरों में से प्रत्येक का उच्च स्तर मापा जाता है। गणना सूत्र का उपयोग करती हैः w2 * cci ( + w1 * (rsi - 50) + (1 - w2 - w1) * (स्टॉक - 50), जहां w1 आरएसआई भार और w2 सीसीआई भार है, स्टॉक भार की गणना फ्लाई पर (1 - w2 - w1) के रूप में की जाती है, इसलिए w1 + w2 का योग 1 से अधिक नहीं होना चाहिए, इस मामले में स्टॉक सीसीआई और आरएसआई के विपरीत काम करेगा।
.:: ऑसिलोस्कोप अवधि यह सभी थरथरानवाला की अवधि है, यह सभी के लिए एक पैरामीटर द्वारा निर्धारित किया जाता है। शायद, अपेक्षित संस्करणों में, अवधि अलग से कॉन्फ़िगर किया जाएगा।
.:: ऑसिलोस्कोप एम.ए. अवधि:. ऑसिलेटर लाइन का आवधिक चिकनाई। शोर को खत्म करने के लिए ठीक से ट्यूनिंग के लिए कार्य करता है। यदि आप 0 का मान चुनते हैं, तो चिकनाई अक्षम हो जाती है और ऑसिलोस्कोप नमूने सेटिंग स्वचालित रूप से काम करना बंद कर देगी।
.:: तरंगरूप के नमूने: सेटिंग आप ऑसिलेटर लाइन के लिए चिकनाई की मात्रा सेट करने के लिए अनुमति देता है। ऑसिलोस्कोप एमए प्रकार
.:: ऑसिलोस्कोप एमए प्रकार: ऑसिलेटर लाइन स्लाइडिंग के लिए चलती औसत आवृत्ति प्रकार
.:: स्तर अवधि रेनबो ऑसिलेटर सूचक के स्तर (क्षेत्र) बनाने के लिए उपयोग किए जाने वाले आवधिक रूप से चलती औसत
.:: लेवल ऑफसेट:. शून्य बिंदुओं से स्तरों को स्थानांतरित करने के लिए अतिरिक्त सेटिंग। स्तरों को अवशोषित करने और इनपुट संकेतों को फ़िल्टर करने के लिए उपयोगी हो सकता है। डिफ़ॉल्ट 0 है।
.:: रिडंडेंट स्तर: यह रोग के स्तर के प्रत्येक पुनरावृत्ति में राज्य की स्थिति की गंभीरता की विशेषता है। यदि 1 पर सेट किया जाता है - ऑसिलेटर मान गिरने पर स्तर कम नहीं होंगे। यदि इसका मूल्य 0.99 है - स्तर 0.01 तक कम हो जाते हैं। प्रत्येक में 1% मामलों में एक ऑसिलेटर होता है और अधिक आक्रामक लोगों द्वारा 0 तक दबाया जाता है।
.:: समतल स्तरों के नमूने सेटिंग आप स्तर प्रति स्ट्रोक की संख्या निर्धारित करने की अनुमति देता है. चलती औसत के प्रकार की परिभाषा के साथ औसत की संख्या को मापने
.:: एम.ए. स्तर का प्रकार चलती औसत का प्रकार, एक चिकनी ओवरबॉट और ओवरसोल्ड क्षेत्र के गठन के लिए औसत
बैकटेस्ट
/*backtest start: 2022-04-12 00:00:00 end: 2022-05-06 23:59: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/ // © businessduck //@version=5 indicator("Rainbow Oscillator") float w1 = input.float(0.33, 'RSI Weight', 0, 1, 0.01) float w2 = input.float(0.33, 'CCI Weight', 0, 1, 0.01) int period = input.int(24, 'Ocillograph Period', 4, 60, 1) int oscillographSamplesPeriod = input.int(4, 'Oscillograph MA Period', 1, 30, 1) int oscillographSamplesCount = input.int(1, 'Oscillograph Samples', 0, 4, 1) string oscillographMAType = input.string("SMA", "Oscillograph MA type", options = ["EMA", "SMA", "RMA", "WMA"]) int levelPeriod = input.int(18, 'Level Period', 2, 30) int levelOffset = input.int(0, 'Level Offset', 0, 200, 10) float redunant = input.float(0.99, 'Level Redunant', 0, 1, 0.01) int levelSampleCount = input.int(3, 'Level Smooth Samples', 0, 4, 1) string levelType = input.string("RMA", "Level MA type", options = ["EMA", "SMA", "RMA", "WMA"]) perc(current, prev) => ((current - prev) / prev) * 100 smooth(value, type, period) => float ma = switch type "EMA" => ta.ema(value, period) "SMA" => ta.sma(value, period) "RMA" => ta.rma(value, period) "WMA" => ta.wma(value, period) => runtime.error("No matching MA type found.") float(na) getSample(value, samples, type, period) => float ma = switch samples 0 => value 1 => smooth(value, type, period) 2 => smooth(smooth(value, type, period), type, period) 3 => smooth(smooth(smooth(value, type, period), type, period), type, period) 4 => smooth(smooth(smooth(smooth(value, type, period), type, period), type, period), type, period) float takeProfit = input.float(7.5, "% Take profit", 0.8, 100, step = 0.1) float stopLoss = input.float(3.5, "% Stop Loss", 0.8, 100, step = 0.1) float magic = w2 * ta.cci(close, period) + w1 * (ta.rsi(close, period) - 50) + (1 - w2 - w1) * (ta.stoch(close, high, low, 40) - 50) float sampledMagic = getSample(magic, oscillographSamplesCount, oscillographMAType, oscillographSamplesPeriod) float lastUpperValue = 0 float lastLowerValue = 0 if (magic > 0) lastUpperValue := math.max(magic, magic[1]) else lastUpperValue := math.max(0, lastUpperValue[1]) * redunant if (magic <= 0) lastLowerValue := math.min(magic, magic[1]) else lastLowerValue := math.min(0, lastLowerValue[1]) * redunant float level1up = getSample( (magic >= 0 ? magic : lastUpperValue) / 4, levelSampleCount, levelType, levelPeriod) + levelOffset float level2up = getSample( (magic >= 0 ? magic : lastUpperValue) / 2, levelSampleCount, levelType, levelPeriod) + levelOffset float level3up = getSample( magic >= 0 ? magic : lastUpperValue, levelSampleCount, levelType, levelPeriod) + levelOffset float level4up = getSample( (magic >= 0 ? magic : lastUpperValue) * 2, levelSampleCount, levelType, levelPeriod) + levelOffset float level1low = getSample( (magic <= 0 ? magic : lastLowerValue) / 4, levelSampleCount, levelType, levelPeriod) - levelOffset float level2low = getSample( (magic <= 0 ? magic : lastLowerValue) / 2, levelSampleCount, levelType, levelPeriod) - levelOffset float level3low = getSample( magic <= 0 ? magic : lastLowerValue, levelSampleCount, levelType, levelPeriod) - levelOffset float level4low = getSample( (magic <= 0 ? magic : lastLowerValue) * 2, levelSampleCount, levelType, levelPeriod) - levelOffset var transparent = color.new(color.white, 100) var overbough4Color = color.new(color.red, 75) var overbough3Color = color.new(color.orange, 75) var overbough2Color = color.new(color.yellow, 75) var oversold4Color = color.new(color.teal, 75) var oversold3Color = color.new(color.blue, 75) var oversold2Color = color.new(color.aqua, 85) upperPlotId1 = plot(level1up, 'Upper1', transparent) upperPlotId2 = plot(level2up, 'Upper2', transparent) upperPlotId3 = plot(level3up, 'Upper3', transparent) upperPlotId4 = plot(level4up, 'Upper4', transparent) plot(sampledMagic, 'Oscillograph') lowerPlotId1 = plot(level1low, 'Lower1', transparent) lowerPlotId2 = plot(level2low, 'Lower2', transparent) lowerPlotId3 = plot(level3low, 'Lower3', transparent) lowerPlotId4 = plot(level4low, 'Lower4', transparent) fill(upperPlotId4, upperPlotId3, overbough4Color) fill(upperPlotId3, upperPlotId2, overbough3Color) fill(upperPlotId2, upperPlotId1, overbough2Color) fill(lowerPlotId4, lowerPlotId3, oversold4Color) fill(lowerPlotId3, lowerPlotId2, oversold3Color) fill(lowerPlotId2, lowerPlotId1, oversold2Color) bool longCond = sampledMagic[1] < level4low[1] and sampledMagic > level4low bool shortCond = sampledMagic[1] > level4up[1] and sampledMagic < level4up plotshape(longCond, "Long", shape.circle, location.bottom, color.aqua, 0, na, color.white, false, size.tiny) plotshape(shortCond, "Short", shape.circle, location.top, color.red, 0, na, color.white, false, size.tiny) if longCond strategy.entry("Enter Long", strategy.long) else if shortCond strategy.entry("Enter Short", strategy.short)