pine script

 avatar
unknown
plain_text
2 years ago
3.7 kB
35
Indexable
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WISKTON

//@version=5
indicator("WHiLo Indicator", "WHiLo", overlay=true, precision=2)

BTC_HILO = 50
ATOM_HILO = 60
NEO_HILO = 44
AXS_HILO = 26
ETH_HILO = 55
SOL_HILO = 50
DOT_HILO = 56
MATIC_HILO = 40
EGLD_HILO = 60
KSM_HILO = 50
RUNE_HILO = 31
WAVES_HILO = 60
UNI_HILO = 60
AAVE_HILO = 56
HNT_HILO = 57
AVAX_HILO = 60
BNB_HILO = 46
LTC_HILO = 66
DEFAULT_HILO = 50

symbol_name = str.tostring(syminfo.tickerid)
//symbol_name := str.tostring(str.split(symbol_name, "BINANCE:")[1])
//symbol_name := str.tostring(str.split(symbol_name, "USD")[0])

default_value = input.int(0, title="Period", minval=0)
len = 0

if symbol_name == "BINANCE:BTCUSDT"
    len := BTC_HILO
else if symbol_name == "BINANCE:ATOMUSDT"
    len := ATOM_HILO
else if symbol_name == "BINANCE:NEOUSDT"
    len := NEO_HILO
else if symbol_name == "BINANCE:AXSUSDT"
    len := AXS_HILO
else if symbol_name == "BINANCE:ETHUSDT"
    len := ETH_HILO
else if symbol_name == "BINANCE:SOLUSDT"
    len := SOL_HILO
else if symbol_name == "BINANCE:DOTUSDT"
    len := DOT_HILO
else if symbol_name == "BINANCE:MATICUSDT"
    len := MATIC_HILO
else if symbol_name == "BINANCE:EGLDUSDT"
    len := EGLD_HILO
else if symbol_name == "BINANCE:KSMUSDT"
    len := KSM_HILO
else if symbol_name == "BINANCE:RUNEUSDT"
    len := RUNE_HILO
else if symbol_name == "BINANCE:WAVESUSDT"
    len := WAVES_HILO
else if symbol_name == "BINANCE:UNIUSDT"
    len := UNI_HILO
else if symbol_name == "BINANCE:AAVEUSDT"
    len := AAVE_HILO
else if symbol_name == "BINANCE:HNTUSDT"
    len := HNT_HILO
else if symbol_name == "BINANCE:AVAXUSDT"
    len := AVAX_HILO
else if symbol_name == "BINANCE:BNBUSDT"
    len := BNB_HILO
else if symbol_name == "BINANCE:LTCUSDT"
    len := LTC_HILO
else
    len := default_value

//label_text = symbol_name + " " + str.tostring(len) 
//label.new(0, 0, label_text)

offset = input.int(0, title="Offset", minval=0)

hiloType = input.string(title="Type", defval="HiLo", options=["HiLo", "HiLo Activator"])

simpleHiLo = (hiloType == "HiLo")

maType = input.string(title="MA Type", defval="SMA", options=["SMA", "EMA"])

useEMA = (maType == "EMA")

hima = (useEMA ? ta.ema(high, len) : ta.sma(high, len))
loma = (useEMA ? ta.ema(low, len) : ta.sma(low, len))

hihi = (simpleHiLo ? na: ta.highest(high, len))
lolo = (simpleHiLo ? na: ta.lowest(low, len))

hilo = close
hilo := if simpleHiLo
    (close < loma[offset] ? hima : (close > hima[offset] ? loma : hilo[1]))
else
    (close < loma[offset] ? hihi : (close > hima[offset] ? lolo : hilo[1]))

hlColor = color.red
hlColor := (close < loma[offset] ? color.red : (close > hima[offset] ? color.green : hlColor[1]))

buyArith  = math.sign(close - hima[offset]) 
sellArith = math.sign(close - loma[offset])

buy = ta.crossover(buyArith, 0.5)
sell = ta.crossunder(sellArith, -0.5)

buyState = false
buyState :=  buy ? true : (sell ? false : buyState[1])

sellState = false
sellState :=  buy ? false : (sell ? true : sellState[1])

enterBuyState  = buyState[0]  and not buyState[1]
enterSellState = sellState[0] and not sellState[1]
 
plot(hilo, color=hlColor, linewidth=2, style=plot.style_cross, transp=0, title="HiLo")

plotshape(enterBuyState,  title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green,textcolor = color.white, transp = 0, size = size.tiny)
plotshape(enterSellState, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.maroon,textcolor = color.white, transp = 0, size = size.tiny)

Editor is loading...