.:: গতিশীল মাত্রা সূচকটি স্তর (মূল্য বিপরীতমুখী অঞ্চল) নিয়ে গঠিত যা অন্য ফাইবোনাচি সংখ্যাগুলির সাথে একে অপরের সাথে সম্পর্কিত। প্রতিটি স্তর মূল্য বিপরীতমুখী হওয়ার সম্ভাবনা সৃষ্টি করে। সমস্ত স্তর বিদ্যমান অ মসৃণ দোলক মান থেকে গঠিত হয়. এই আপনি বাঁক জোন thresholds, উদাহরণস্বরূপ, -100 এবং 100 ফিক্স না করার অনুমতি দেয়, CCI মধ্যে সম্পন্ন হিসাবে অথবা RSI সূচকের বিপরীতমুখী অঞ্চলের জন্য 30 এবং 70 এর মান। গতিশীল স্তরগুলি দোলকের মানগুলির স্পাইকগুলিতে সামঞ্জস্য করে এবং আপনাকে দামের বিপরীতমুখী পয়েন্টগুলি আরও ঘন ঘন এবং কম দক্ষতার সাথে খুঁজে পেতে দেয়।
.:: কম্পোজিট ওসিলেটর (3 ইন 1) ::. ওসিলেটর লাইনে RSI, CCI, স্টক ইন্ডিকেটরের তিনটি পরিমাপ একসাথে বিস্তৃত শতাংশে রয়েছে। একই সময়ে, সেটিংসের জন্য ধন্যবাদ, আপনি সহজেই ইন্ডিকেটরগুলির মধ্যে একটি থেকে মুক্তি পেতে পারেন।
.:: সিসিআই + আরএসআই + স্টক রেসিও সেটিং প্রাকৃতিক সূচক প্রতিটি গণনা সূত্র তার নিজস্ব ওজন আছেঃ w2 * cci ( + w1 * (rsi - 50) + (1 - w2 - w1) * (স্টক - 50), এই আপনি এই বিভিন্ন সূচক বা স্পষ্টতা ওজন প্রতিটি জন্য একটি দোলক দেখতে পারবেন
.:: দোলকের সমতল স্তর এবং রেখা: ওসিলেটর মান সমতল আপনি শব্দ ফিল্টার এবং আরো সঠিক তথ্য পেতে অনুমতি দেয়। স্তর স্তর আপনি ইনপুট বিলম্ব সামঞ্জস্য করতে পারবেন।
.:: অ্যাপার্টমেন্ট সময় কার্যকলাপ:::: স্তরের গতিশীল সৃষ্টি আপনি মূল্য বিপরীত জোন খুঁজে পেতে পারবেন, এমনকি যখন মূল্য একটি সমতল (ফ্ল্যাট) হয়
.:: আরএসআই ওজন / সিসিআই ওজন যথাক্রমে RSI এবং CCI সূচক জন্য ওজন নিয়ন্ত্রণ সহগগুলি. যখন আপনি RSI ওজন = 0 সেট করুন, CCI এবং স্টক এর সমন্বয় সমতুল্য, যখন RSI ওজন শূন্য এবং CCI ওজন দোলক মান সমান হয় প্লট করা হবে শুধুমাত্র স্টোচ থেকে। মধ্যবর্তী মানগুলি 0 থেকে 100 শতাংশের মধ্যে তিনটি দোলকের প্রতিটি উচ্চ মাত্রায় পরিমাপ করে। গণনাটি সূত্র ব্যবহার করেঃ w2 * cci ( + w1 * (rsi - 50) + (1 - w2 - w1) * (স্টক - 50), যেখানে w1 হল RSI ওজন এবং w2 হল CCI ওজন, স্টক ওজনটি ফ্লাইতে গণনা করা হয় (1 - w2 - w1), তাই w1 + w2 এর যোগফল 1 এর বেশি হওয়া উচিত নয়, এই ক্ষেত্রে স্টক CCI এবং RSI এর বিপরীতে কাজ করবে।
.:: অস্কেলোস্কোপ সময়কাল: এটি সমস্ত দোলকের সময়কাল, এটি সবার জন্য একটি প্যারামিটার দ্বারা সেট করা হয়। সম্ভবত, প্রত্যাশিত সংস্করণগুলিতে, সময়কালগুলি আলাদাভাবে কনফিগার করা হবে।
.:: ওসিলোস্কোপ এম.এ. সময়কালঃ:. ওসিলেটর লাইনের পর্যায়ক্রমিক মসৃণকরণ। গোলমাল দূর করার জন্য সূক্ষ্ম সুরক্ষার জন্য কাজ করে। যদি আপনি 0 এর মান নির্বাচন করেন তবে মসৃণকরণ অক্ষম করা হয় এবং ওসিলোস্কোপ নমুনা সেটিং স্বয়ংক্রিয়ভাবে কাজ বন্ধ করে দেবে।
.:: তরঙ্গের নমুনা: সেটিং আপনি oscillator লাইন জন্য মসৃণতা পরিমাণ সেট করতে পারবেন. Oscilloscope MA টাইপ
.:: ওসিলোস্কোপ এমএ টাইপ: ওসিলেটর লাইনের স্লাইডিংয়ের জন্য চলমান গড় ফ্রিকোয়েন্সির প্রকার
.:: স্তর সময়কাল রেইনবো অ্যাসিললেটর সূচকের স্তর (জোন) গঠনের জন্য ব্যবহৃত পর্যায়ক্রমে চলমান গড়
.:: লেভেল অফসেট শূন্য পয়েন্ট থেকে স্তর স্থানান্তর জন্য অতিরিক্ত সেটিং। স্তর শোষণ এবং ইনপুট সংকেত ফিল্টারিং জন্য দরকারী হতে পারে। ডিফল্ট 0 হয়।
.:: অপ্রয়োজনীয় স্তর: এটি রোগের স্তরের প্রতিটি পুনরাবৃত্তিতে অবস্থার তীব্রতা চিহ্নিত করে। যদি 1 এ সেট করা হয় - যখন দোলকের মানগুলি পড়ে তখন স্তরগুলি হ্রাস পাবে না। যদি এটির মান 0.99 হয় - স্তরগুলি 0.01 দ্বারা হ্রাস পায় প্রত্যেকটিরই ১% ক্ষেত্রে একটি দোলক থাকে এবং আরো আক্রমণাত্মক দোলকের দ্বারা শূন্যে চাপ দেওয়া হয়।
.:: মসৃণ স্তরের নমুনা: সেটিং আপনি স্তর প্রতি স্ট্রোক সংখ্যা সেট করতে পারবেন. চলন্ত গড় টাইপ সংজ্ঞা সঙ্গে গড় সংখ্যা পরিমাপ
.:: এমএ স্তরের ধরন: মুভিং মিডিয়ার ধরন, সুইমিং ওভারকপিং এবং ওভারসোল্ড জোন গঠনের জন্য গড়
ব্যাকটেস্ট
/*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)