Untitled
unknown
plain_text
21 days ago
3.8 kB
42
Indexable
//@version=6 indicator("Smt Likitide", overlay=true) // User Inputs aSymbol = input.symbol("OKX:BTCUSDT.P", "A Symbol") bSymbol = input.symbol("OKX:ETHUSDT.P", "B Symbol") timeframeInput = input.timeframe("", "Timeframe") // Get A data aHigh = request.security(aSymbol, timeframeInput, high) aLow = request.security(aSymbol, timeframeInput, low) aOpen = request.security(aSymbol, timeframeInput, open) aClose = request.security(aSymbol, timeframeInput, close) // Get B data bHigh = request.security(bSymbol, timeframeInput, high) bLow = request.security(bSymbol, timeframeInput, low) bOpen = request.security(bSymbol, timeframeInput, open) bClose = request.security(bSymbol, timeframeInput, close) // Previous values prevAHigh = aHigh[1] prevALow = aLow[1] prevBHigh = bHigh[1] prevBLow = bLow[1] prevAOpen = aOpen[1] prevAClose = aClose[1] prevBOpen = bOpen[1] prevBClose = bClose[1] // Body boundaries aBodyMax = math.max(aOpen, aClose) aBodyMin = math.min(aOpen, aClose) bBodyMax = math.max(bOpen, bClose) bBodyMin = math.min(bOpen, bClose) prevABodyMax = math.max(prevAOpen, prevAClose) prevABodyMin = math.min(prevAOpen, prevAClose) prevBBodyMax = math.max(prevBOpen, prevBClose) prevBBodyMin = math.min(prevBOpen, prevBClose) // Volatility Calculation aRange = (aHigh - aLow) / aClose * 100 bRange = (bHigh - bLow) / bClose * 100 // Wick presence checks (strict enforcement) aHasTopWick = (aHigh > aBodyMax) and (prevAHigh > prevABodyMax) aHasBotWick = (aLow < aBodyMin) and (prevALow < prevABodyMin) bHasTopWick = (bHigh > bBodyMax) and (prevBHigh > prevBBodyMax) bHasBotWick = (bLow < bBodyMin) and (prevBLow < prevBBodyMin) bodyFilterHighA = aBodyMax < prevAHigh bodyFilterHighB = bBodyMax < prevBHigh bodyFilterLowA = aBodyMin > prevALow bodyFilterLowB = bBodyMin > prevBLow // High Wick Mismatch Conditions highDiscrepancy1 = aHasTopWick and bHasTopWick and (aHigh > prevAHigh) and (bHigh < prevBHigh) and bodyFilterHighA and bodyFilterHighB and barstate.isconfirmed highDiscrepancy2 = aHasTopWick and bHasTopWick and (aHigh < prevAHigh) and (bHigh > prevBHigh) and bodyFilterHighA and bodyFilterHighB and barstate.isconfirmed // Low Wick Mismatch Conditions lowDiscrepancy1 = aHasBotWick and bHasBotWick and (aLow < prevALow) and (bLow > prevBLow) and bodyFilterLowA and bodyFilterLowB and barstate.isconfirmed lowDiscrepancy2 = aHasBotWick and bHasBotWick and (aLow > prevALow) and (bLow < prevBLow) and bodyFilterLowA and bodyFilterLowB and barstate.isconfirmed mainAlert = (highDiscrepancy1 or highDiscrepancy2 or lowDiscrepancy1 or lowDiscrepancy2) // Visual Indicators plotshape(highDiscrepancy1, title="High Wick Mismatch", style=shape.labeldown, color=color.red, location=location.abovebar, textcolor=color.white, size=size.small) plotshape(highDiscrepancy2, title="High Wick Mismatch", style=shape.labeldown, color=color.red, location=location.abovebar, textcolor=color.white, size=size.small) plotshape(lowDiscrepancy1, title="Low Wick Mismatch", style=shape.labelup, color=color.green, location=location.belowbar, textcolor=color.white, size=size.small) plotshape(lowDiscrepancy1, title="Low Wick Mismatch", style=shape.labelup, color=color.green, location=location.belowbar, textcolor=color.white, size=size.small) // Alerts alertcondition(mainAlert, title="Main Alert", message="Discrepancy detected between A and B!") //alertcondition(highDiscrepancy2, title="High Wick Mismatch Alert", message="High wick discrepancy detected between A and B!") //alertcondition(lowDiscrepancy1, title="Low Wick Mismatch Alert", message="Low wick discrepancy detected between A and B!") //alertcondition(lowDiscrepancy2, title="Low Wick Mismatch Alert", message="Low wick discrepancy detected between A and B!")
Editor is loading...
Leave a Comment