0% found this document useful (0 votes)
22 views3 pages

Fix

Filetxt

Uploaded by

hugo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views3 pages

Fix

Filetxt

Uploaded by

hugo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

// © jojou

//@version=6
// RSI+ Open source
indicator(title="INEVITRADE Pro +", shorttitle="INEVITRADE Pro +",
format=format.price, precision=1)

// ‫تابع محاسبه میانگین متحرک‬


ma(source, length, type) =>
if type == "EMA"
ta.ema(source, length)
else
na // ‫ مقدار‬،‫ اگر نوع میانگین متحرک مشخص نباشد‬na ‫‌شود‬
‫برگردانده می‬

// ————— Inputs
rsiLengthInput = input.int(14, minval=1, title="RSI Length")
rsiSourceInput = input.source(close, "Source")
rsiC1Input = input.color(#64ffda, title="Color 1")
rsiC2Input = input.color(#F43E32, title="Color 2")
rsiBandColorInput = input.color(color.rgb(230, 230, 230, 90), title="RSI
BandColor")
showBand = input(true, title="Highlight RSI Overbought/Oversold")
showCloud = input(true, title="Show RSI Cloud")
showFlagCloudFlip = input(false, title="Flag Cloud Flip")
rsiExtendedUpperBand = input.int(75, minval=1, title="Extended Upper Band")
rsiUpperBand = input.int(70, minval=1, title="Upper Band")
rsiLowerBand = input.int(30, minval=1, title="Lower Band")
rsiExtendedLowerBand = input.int(25, minval=1, title="Extended Lower Band")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)


down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = (down == 0) ? 100 : (up == 0) ? 0 : 100 - (100 / (1 + up / down)) // ‫اصالح‬
‫شده‬
rsiEMA = ma(rsi, rsiLengthInput, "EMA")
previousRSI = rsi[1]
previousRSIEMA = rsiEMA[1]

// RSI Colours
rsiColour = rsi >= rsiEMA ? rsiC1Input : rsiC2Input
flagColour = (rsi > rsiEMA and previousRSI < previousRSIEMA) ? rsiC1Input : (rsi <
rsiEMA and previousRSI > previousRSIEMA ? rsiC2Input : na)

// RSI Plots
rsiPlot = plot(rsi, title="RSI", color=rsiColour)
rsiEMAPlot = plot(showCloud ? rsiEMA : na, title="RSI EMA", editable=false,
display=display.none)

// RSI Flag Cloud Flip


flagCloudFlip = (rsi > rsiEMA and previousRSI < previousRSIEMA) ? rsiEMA : (rsi <
rsiEMA and previousRSI > previousRSIEMA ? rsiEMA : na)
plot(showFlagCloudFlip ? flagCloudFlip : na, title="Flag Cloud Flip",
color=color.new(flagColour, 20), linewidth=3, style=plot.style_circles,
editable=false)

// RSI Highlights
bgcolor(rsi >= rsiUpperBand ? color.new(rsiC1Input, 90) : na, title="Overbought
Highlight")
bgcolor(rsi >= rsiExtendedUpperBand ? color.new(rsiC1Input, 90) : na,
title="Extended Overbought Highlight")
bgcolor(rsi <= rsiLowerBand ? color.new(#F43E32, 85) : na, title="Oversold
Highlight")
bgcolor(rsi <= rsiExtendedLowerBand ? color.new(#F43E32, 85) : na, title="Extended
Oversold Highlight")

// RSI EMA Cloud


fill(rsiPlot, rsiEMAPlot, color=color.new(rsiColour, 70), title="RSI Cloud")

// RSI Baseline
hline(50, "Baseline", color=color.new(#787B86, 50), linestyle=hline.style_solid)

// RSI Overbought & Oversold


fill(hline(showBand ? rsiUpperBand : na, editable=false, display=display.none),
hline(showBand ? rsiExtendedUpperBand : na, editable=false, display=display.none),
color=rsiBandColorInput, title="Overbought Fill")
fill(hline(showBand ? rsiLowerBand : na, editable=false, display=display.none),
hline(showBand ? rsiExtendedLowerBand : na, editable=false, display=display.none),
color=rsiBandColorInput, title="Oversold Fill")

// Strength vs BTC
btc = input.symbol("BYBIT:BTCUSDT", title="Compare To", group="Strength vs BTC
Settings")
period = input("5", title="timeframe")
candleAmount = input(100, title="Number Of Candles to Include in Avg.")
upColor = input(color.green, title="Up Color")
downColor = input(color.red, title="Down Color")

float candleSum = 0
float candleAvg = 0
float btcCandleSum = 0
float btcCandleAvg = 0
float lowCandleSum = 0
float lowCandleAvg = 0
float lowBtcCandleSum = 0
float lowBtcCandleAvg = 0

thisHigh = request.security(syminfo.tickerid, period, high)


btcHigh = request.security(btc, period, high)
btcLow = request.security(btc, period, low)
ticker = syminfo.tickerid

// get ticker
getPair(_str, _n) =>
string[] _pair = str.split(_str, ":")
string[] _chars = str.split(array.get(_pair, 1), "")
int _len = array.size(_chars)
int _end = math.min(_len, math.max(0, _n))
string[] _substr = array.new_string(0)
if _end <= _len
_substr := array.slice(_chars, 0, _end)
string _return = array.join(_substr, "")

// normalize series within range


normalize(_src, _min, _max) =>
// Normalizes series with unknown min/max using historical min/max.
// _src : series to rescale.
// _min, _min: min/max values of rescaled series.
var _historicMin = 10e10
var _historicMax = -10e10
_historicMin := math.min(nz(_src, _historicMin), _historicMin)
_historicMax := math.max(nz(_src, _historicMax), _historicMax)
_min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax -
_historicMin, 10e-10)

for i = 1 to candleAmount
candleSum := candleSum + thisHigh[i]
btcCandleSum := btcCandleSum + btcHigh[i]
if i == candleAmount
candleAvg := candleSum / candleAmount
btcCandleAvg := btcCandleSum / candleAmount

pairPCT = (thisHigh - candleAvg) / thisHigh


btcPCT = (btcHigh - btcCandleAvg) / btcHigh
plotColor = color.white
multiplier = str.tonumber(period)
plotPCT = ((multiplier * pairPCT - multiplier * btcPCT) * 100 + 135)
if plotPCT < 135
plotColor := downColor
if plotPCT > 135
plotColor := upColor
if getPair(ticker, 3) == "BTC"
plotColor := color(na)

// plot(135, color=color.gray)
plot(normalize(plotPCT, 90, 180), "Normalized Strength vs BTC", color=plotColor)
hline(180)
hline(90)

You might also like