وسائل لوڈ ہو رہے ہیں... لوڈنگ...

رینبو اوسیلیٹر

مصنف:چاؤ ژانگ، تاریخ: 2022-05-13 22:38:03
ٹیگز:ای ایم اےایس ایم اےآر ایم اےڈبلیو ایم اے


خصوصیات

.:: متحرک سطحیں: اشارے میں سطحیں (قیمتوں میں الٹ پھیر زونز) شامل ہیں جو ایک دوسرے کے ساتھ دیگر فبونیکی نمبروں کے ساتھ وابستہ ہیں۔ ہر سطح قیمتوں میں الٹ پھیر کے امکان کا سبب بنتی ہے۔ تمام سطحوں موجودہ غیر ہموار oscillator اقدار سے تشکیل دے رہے ہیں. یہ آپ کو موڑ زون کی حد مقرر کرنے کی اجازت نہیں دیتا، مثال کے طور پر، -100 اور 100، CCI میں کیا جاتا ہے کے طور پر یا RSI اشارے میں الٹ زون کے لئے 30 اور 70 کی اقدار۔ متحرک سطحیں آسکیلیٹر اقدار میں چوٹیوں کو ایڈجسٹ کرتی ہیں اور آپ کو قیمتوں میں الٹ پوائنٹس کو زیادہ کثرت سے اور کم موثر طریقے سے تلاش کرنے کی اجازت دیتی ہیں۔

.:: مرکب oscillator کے (3 میں 1) ::. آسکیلیٹر لائن میں آر ایس آئی ، سی سی آئی ، اسٹاک اشارے کی تین پیمائشیں ایک ساتھ ایک وسیع فیصد میں ہوتی ہیں۔ اسی وقت ، ترتیبات کی بدولت ، آپ آسانی سے اشارے میں سے ایک سے چھٹکارا حاصل کرسکتے ہیں۔

.:: سی سی آئی + آر ایس آئی + اسٹاک تناسب کی ترتیب: قدرتی اشارے میں سے ہر ایک کے حساب کے فارمولے میں اس کا اپنا وزن ہے: w2 * cci ( + w1 * (rsi - 50) + (1 - w2 - w1) * (اسٹاک - 50) ، یہ آپ کو ان میں سے کسی بھی مختلف اشارے یا تیز رفتار وزن کے لئے ایک oscillator دیکھنے کی اجازت دیتا ہے

.:: اوسیلیٹر کی ہموار سطحوں اور لائنوں: آسکیلیٹر کی اقدار کو ہموار کرنے سے آپ کو شور کو فلٹر کرنے اور زیادہ درست اعداد و شمار حاصل کرنے کی اجازت ملتی ہے۔ سطحوں کو چھونے سے آپ کو ان پٹ کی تاخیر کو ایڈجسٹ کرنے کی اجازت ملتی ہے۔

.:: اپارٹمنٹ کے دوران سرگرمیاں::: سطحوں کی متحرک تخلیق آپ کو قیمت الٹ زون میں تلاش کرنے کی اجازت دیتا ہے، یہاں تک کہ جب قیمت ایک فلیٹ (فلیٹ) میں ہے


ترتیبات

.:: آر ایس آئی وزن / سی سی آئی وزن 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 کے برعکس کام کرے گا.

.:: آسکیلو سکوپ دورانیہ: یہ تمام oscillators کی مدت ہے، یہ سب کے لئے ایک پیرامیٹر کی طرف سے مقرر کیا جاتا ہے. شاید، متوقع ورژن میں، ادوار الگ الگ ترتیب دیا جائے گا.

.:: اوسیلوکوپ ایم اے دورانیہ:. اوسیلیٹر لائن کی باقاعدگی سے ہموار کرنا۔ شور کو ختم کرنے کے لئے ٹھیک ٹھیک ایڈجسٹمنٹ کے لئے کام کرتا ہے۔ اگر آپ 0 کی قدر منتخب کرتے ہیں تو ہموار کرنا غیر فعال ہوجاتا ہے اور اوسیلوسکوپ نمونے کی ترتیب خود بخود کام کرنا چھوڑ دے گی۔

.:: لہر شکل کے نمونے: ترتیب آپ oscillator لائن کے لئے ہموار کی مقدار مقرر کرنے کی اجازت دیتا ہے. Oscilloscope MA قسم

.:: آسکیلو سکوپ ایم اے قسم: اوسیلیٹر لائن سلائیڈنگ کے لئے اوسط فریکوئنسی کی قسم

.:: سطح کا دورانیہ رینبو اوسیلیٹر اشارے کی سطح (زون) بنانے کے لئے استعمال ہونے والے دورانیہ حرکت پذیر اوسط

.:: سطح آفسیٹ: صفر پوائنٹس سے سطحوں کو منتقل کرنے کے لئے اضافی ترتیب۔ سطحوں کو جذب کرنے اور ان پٹ سگنلز کو فلٹر کرنے کے لئے مفید ثابت ہوسکتا ہے۔ ڈیفالٹ 0 ہے۔

.:: ضرورت سے زیادہ سطح: یہ بیماری کی سطح کے ہر تکرار میں حالت کی شدت کی خصوصیات کرتا ہے۔ اگر 1 پر مقرر کیا جائے تو - جب آسکیلیٹر کی اقدار گرتی ہیں تو سطح کم نہیں ہوگی۔ اگر اس کی قیمت 0.99 ہے تو - سطح 0.01 کم ہوجاتی ہے۔ ان میں سے ہر ایک کے پاس ایک فیصد معاملات میں ایک اوسیلیٹر ہوتا ہے اور زیادہ جارحانہ لوگوں کی طرف سے 0 پر دبایا جاتا ہے۔

.:: ہموار سطحوں کے نمونے: ترتیب آپ کو ہر سطح کے لئے اسٹروک کی تعداد مقرر کرنے کی اجازت دیتا ہے.

.:: ایم اے کی سطح کی قسم: چلتی اوسط کی قسم، ایک ہموار overbought اور oversold زون کی تشکیل کے لئے اوسط

بیک ٹسٹ

img


/*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)

متعلقہ

مزید