کروکوبات اولین و دومین بخش سورس کد مشتمل بر 403 خط اول نسخه ی کارپنتر پرو مکس ایده آل

با سلام

لطفا توجه داشته باشید به علت کمبود فضا اولین فایل در دو موضوع اما با یک عنوان منتشر می گردد.

در اولین بخش ستینگ داخلی کروکوبات را در یافت خواهید کرد . مستدعی است در سیستم خود عینا همین ستینگ را پیاده سازی فرمایید .



اولین ابزار مشتمل بر 837خط می باشد که شما 400 خط اول را در این پست دریافت می کنید ، جهت جلوگیری از دریافت ارور توجه داشته باشید متون عینا کپی و پیست شود و از همه مهمتر خواهشمند است فضای پاسخ ها به پست را کاملا حرفه ای و کاملا مربوط به هر گونه سوال در خصوص پاین اسکریپت نگاه دارید :

//@version=4
study("CROCOBOT CARPENTER (meta inside it ) IDEAL PRO MAX ", overlay=true)

// ——— Source: Mean of High, Low, Close, Open
src = (high + close + open) / 3

// :bullseye: Indicators
stochK = stoch(src, src, src, 14)
rsiVal = rsi(src, 14)
cci5 = cci(src, 5)
cci20 = cci(src, 20)

// :white_check_mark: Oversold Conditions
stochCond = stochK <= 20 //and stockD<= 20
rsiCond = rsiVal <= 30
cci5Cond = cci5 <= -100 or cci5 >= 100
cci20Cond = cci20 <= -100 or cci20 >= 100

// :brain: Previous Candle Conditions
stochPrev = stochCond[1]
rsiPrev = rsiCond[1]
cci5Prev = cci5Cond[1]
cci20Prev = cci20Cond[1]

// :cross_mark: Current Candle Rejection of All Conditions
stochNow = not stochCond
rsiNow = not rsiCond
cci5Now = not cci5Cond
cci20Now = not cci20Cond

// :magnifying_glass_tilted_left: Transition Signal
//transition = (stochPrev and rsiPrev) and (cci20Prev and cci5Now) and (stochNow and rsiNow) and (cci20Now and cci5Now) and crossover(atrTrailingStop1,atrTrailingStop2)

// :bell: Alert
//alertcondition(transition, title = “Oversold Recovery Transition”, message = “Previous candle met all oversold conditions, current candle rejects all. Possible momentum shift.”)

// :round_pushpin: Plot
//plotshape(transition, title = “Transition Marker”, location = location.abovebar, color = color.green, style = shape.labelup, text = “Shift”)

// :small_blue_diamond: User Inputs for Three ATRs
atrPeriod1 = input(14, title=“ATR Period 1”)
atrMultip1 = input(2, title=“ATR Multiplier 1”)

atrPeriod2 = input(10, title=“ATR Period 2”)
atrMultip2 = input(3, title=“ATR Multiplier 2”)

atrPeriod3 = input(26, title=“ATR Period 3”)
atrMultip3 = input(9, title=“ATR Multiplier 3”)

atrPeriod4 = input(22, title=“ATR Period 4”)
atrMultip4 = input(5, title=“ATR Multiplier 4”)

// :small_blue_diamond: Calculate ATR Values
atr1 = atr(atrPeriod1)
atr2 = atr(atrPeriod2)
atr3 = atr(atrPeriod3)
atr4 = atr(atrPeriod4)

loss1 = atrMultip1 * atr1
loss2 = atrMultip2 * atr2
loss3 = atrMultip3 * atr3
loss4 = atrMultip4 * atr4

// :small_blue_diamond: Trailing Stop Logic for Each ATR
atrTrailingStop1 = float(na)
atrTrailingStop1 := close > nz(atrTrailingStop1[1], na) and close[1] > nz(atrTrailingStop1[1], na) ? max(nz(atrTrailingStop1[1], na), close - loss1) :
close < nz(atrTrailingStop1[1], na) and close[1] < nz(atrTrailingStop1[1], na) ? min(nz(atrTrailingStop1[1], na), close + loss1) :
close > nz(atrTrailingStop1[1], na) ? close - loss1 : close + loss1

atrTrailingStop2 = float(na)
atrTrailingStop2 := close > nz(atrTrailingStop2[1], na) and close[1] > nz(atrTrailingStop2[1], na) ? max(nz(atrTrailingStop2[1], na), close - loss2) :
close < nz(atrTrailingStop2[1], na) and close[1] < nz(atrTrailingStop2[1], na) ? min(nz(atrTrailingStop2[1], na), close + loss2) :
close > nz(atrTrailingStop2[1], na) ? close - loss2 : close + loss2

atrTrailingStop3 = float(na)
atrTrailingStop3 := close > nz(atrTrailingStop3[1], na) and close[1] > nz(atrTrailingStop3[1], na) ? max(nz(atrTrailingStop3[1], na), close - loss3) :
close < nz(atrTrailingStop3[1], na) and close[1] < nz(atrTrailingStop3[1], na) ? min(nz(atrTrailingStop3[1], na), close + loss3) :
close > nz(atrTrailingStop3[1], na) ? close - loss3 : close + loss3

atrTrailingStop4 = float(na)
atrTrailingStop4 := close > nz(atrTrailingStop4[1], na) and close[1] > nz(atrTrailingStop4[1], na) ? max(nz(atrTrailingStop4[1], na), close - loss4) :
close < nz(atrTrailingStop4[1], na) and close[1] < nz(atrTrailingStop4[1], na) ? min(nz(atrTrailingStop4[1], na), close + loss4) :
close > nz(atrTrailingStop4[1], na) ? close - loss4 : close + loss4

//
underATR = close < atrTrailingStop1 and close < atrTrailingStop2
aboveATR = close > atrTrailingStop1 and close > atrTrailingStop2
bullishCandle = close > atrTrailingStop1
bearishCandle = close <= atrTrailingStop1
barcolor(bullishCandle ? color.lime : bearishCandle ? color.red : na)
//barcolor(underATR ? color.rgb(255, 0, 0) : na) // :red_circle: Red for below ATRs
//barcolor(aboveATR ? color.rgb(131, 255, 112) : na) // :green_circle: Green for above ATRs

plot(atrTrailingStop1, color=color.rgb(255, 255, 255), linewidth=2, title=“ATR Stop 1”)
plot(atrTrailingStop2, color=color.rgb(0, 0, 0), linewidth=2, title=“ATR Stop 2”)
plot(atrTrailingStop3, color=color.rgb(255, 0, 0), linewidth=2, title=“ATR Stop 3”)
plot(atrTrailingStop4, color=color.rgb(0, 255, 21, 69), linewidth=2, title=“ATR Stop 4”)

transition = (stochPrev and rsiPrev) and (cci20Prev or cci5Prev) and (stochNow and rsiNow) and (cci20Now or cci5Now) and ((crossover(close,atrTrailingStop2) or crossover(close,atrTrailingStop1)) or crossover(close,atrTrailingStop3) or crossover(close,atrTrailingStop4))
alertcondition(transition, title = “Oversold Recovery Transition”, message = “Previous candle met all oversold conditions, current candle rejects all. Possible momentum shift.”)
//plotshape(transition, title = “Transition Marker”, location = location.abovebar, color = color.green, style = shape.triangleup , size = size.small)

if (transition)
label.new(bar_index, low, text = “U-TURN”, style = label.style_label_up, color = color.rgb(0, 0, 0), textcolor = color.rgb(255, 0, 0), size = size.normal)

if (transition)
// Define rectangle bounds
top = low
bottom = low
left = bar_index
right = bar_index + 500

transition6 = (stochPrev and rsiPrev) and (stochNow and rsiNow) and (cci20Prev or cci5Prev) and (cci20Now or cci5Now)//and (crossover(close,atrTrailingStop2) or crossover(close,atrTrailingStop1) or crossover(close,atrTrailingStop3) or crossover(close,atrTrailingStop4))
plotshape(transition6, title = “Transition Marker”, location = location.abovebar, color = color.green, style = shape.triangleup , size = size.small)

//@version=4
//@author=LucemAnb

v=(transition6 and transition)

// Define Fractal Length
fractalLength = 2

// Detect Bullish Fractal (Higher Low)
bullishFractal = low[fractalLength] > low[fractalLength + 1] and low[fractalLength] > low[fractalLength - 1]

// Detect Bearish Fractal (Lower High)
bearishFractal = high[fractalLength] < high[fractalLength + 1] and high[fractalLength] < high[fractalLength - 1]

sma20 = sma(close, 20)
sma40 = sma(close, 40)

// === Signal Conditions ===
trendUp = sma20 > sma40
cciExhausted = (cci5 <= -100 or cci20 <= -100) or (cci5 >=100 or cci20 >= 100)
priceCrossed = open > sma20 or open < sma40
closedAboveSlow = close >= sma40 and (cross(close,atrTrailingStop1) or cross(close,atrTrailingStop2)) //or cross(close,atrTrailingStop3) or cross(close,atrTrailingStop4))
closedAboveSlow2=close >= sma40 and (cross(close,atrTrailingStop4) or cross(close,atrTrailingStop3))
entrySignal = trendUp and cciExhausted and priceCrossed and closedAboveSlow and atrTrailingStop1 > atrTrailingStop2 and atrTrailingStop2 > atrTrailingStop3
entrySignal2=trendUp and cciExhausted and priceCrossed and closedAboveSlow2
// === Plotting ===
//plot(sma20, color=color.green, title=“SMA 20”, linewidth=2)
//plot(sma40, color=color.red, title=“SMA 40”, linewidth=2)

//plotshape(entrySignal, location=location.belowbar, style=shape.triangleup, color=color.lime, size=size.small, title=“Entry Signal”)
bgcolor(entrySignal ? color.rgb(0, 255, 127, 15) : na)
//plotshape(entrySignal2, location=location.belowbar, style=shape.triangleup, color=color.lime, size=size.small, title=“Entry Signal”)
bgcolor(entrySignal2 ? color.new(color.green, 85) : na)
alertcondition(entrySignal or entrySignal2, title = “entrySignal”, message = “entrySignal”)
alertcondition((transition6 and transition) or (entrySignal and entrySignal2), title = “Oversold Recovery Transition”, message = “Previous candle met all oversold conditions, current candle rejects all. Possible momentum shift.”)

bullishSignal = entrySignal2 or transition or entrySignal or transition6
//combinedAlert = bullishSignal

// ===============================
// :small_blue_diamond: Signal Candle Low Capture & SL Alert
// ===============================
// ===============================
// :red_triangle_pointed_down: Signal Candle Low + SL Alert
// ===============================
var float signalCandleLow = na
signalCandleLow := bullishSignal ? high : signalCandleLow[1]
//plot(signalCandleLow, title=“Signal Candle Low (SL Level)”, color=color.red, style=plot.style_line)
//alertcondition(crossunder(close, signalCandleLow), title=“SL Breach Alert”, message=“Price crossed below signal candle low.”)

// ===============================
// :repeat_button: Reversed Fibonacci Retracement
// Uses TrailingStop2 vs signal candle for structural pullback mapping
// ===============================
useStopAsFib0 = bullishSignal and atrTrailingStop2 < signalCandleLow
revFibStart = useStopAsFib0 ? atrTrailingStop2 : signalCandleLow
revFibEnd = useStopAsFib0 ? signalCandleLow : atrTrailingStop2

revFib100 = revFibStart
revFib786 = revFibStart + (revFibEnd - revFibStart) * 0.786
revFib618 = revFibStart + (revFibEnd - revFibStart) * 0.618
revFib50 = revFibStart + (revFibEnd - revFibStart) * 0.5
revFib382 = revFibStart + (revFibEnd - revFibStart) * 0.382
revFib236 = revFibStart + (revFibEnd - revFibStart) * 0.236
revFib0 = revFibEnd

//plot(bullishSignal ? revFib100 : na, title=“Rev Fib 0%”, color=color.blue, linewidth=2)
//plot(bullishSignal ? revFib786 : na, title=“Rev Fib 78.6%”, color=color.green, linewidth=2)
//plot(bullishSignal ? revFib618 : na, title=“Rev Fib 61.8%”, color=color.orange, linewidth=2)
//plot(bullishSignal ? revFib50 : na, title=“Rev Fib 50%”, color=color.red, linewidth=2)
//plot(bullishSignal ? revFib382 : na, title=“Rev Fib 38.2%”, color=color.purple, linewidth=2)
//plot(bullishSignal ? revFib236 : na, title=“Rev Fib 23.6%”, color=color.yellow, linewidth=2)
//plot(bullishSignal ? revFib0 : na, title=“Rev Fib 100%”, color=color.white, linewidth=2)

// ===============================
// :red_triangle_pointed_up: Fibonacci Extension Levels (Take Profit Targets)
// Now realigned to project upwards from the bullish structure
// ===============================
extFibStart = atrTrailingStop2 // Use candle low for bullish anchor
extFibEnd = high // Use candle high for bullish move reference

extFib1618 = extFibEnd + (extFibEnd - extFibStart) * 0.618
extFib2618 = extFibEnd + (extFibEnd - extFibStart) * 1.618
extFib3618 = extFibEnd + (extFibEnd - extFibStart) * 2.618
extFib4236 = extFibEnd + (extFibEnd - extFibStart) * 3.236

//plot(bullishSignal ? extFib1618 : na, title=“TP1 - Fib 1.618”, color=color.blue, linewidth=2)
//plot(bullishSignal ? extFib2618 : na, title=“TP2 - Fib 2.618”, color=color.green, linewidth=2)
//plot(bullishSignal ? extFib3618 : na, title=“TP3 - Fib 3.618”, color=color.purple, linewidth=2)
//plot(bullishSignal ? extFib4236 : na, title=“TP4 - Fib 4.236”, color=color.orange, linewidth=2)

// Inputs
showImpulseZones = input(true, title=“Show Impulse Fib Zones”)

// Impulse anchor logic
var float fibStart = na
var float fibEnd = na

fibStart := bullishSignal ? atrTrailingStop2 : fibStart[1]
fibEnd := bullishSignal ? close : fibEnd[1]

// Fib reversal zone calculations
fib618 = fibEnd - (fibEnd - fibStart) * 0.618
fib786 = fibEnd - (fibEnd - fibStart) * 0.786

// Plot impulse markers
//plotshape(showImpulseZones and bullishSignal, location=location.belowbar, color=color.green, style=shape.triangleup, title=“Impulse Fib Start”)
//plotshape(showImpulseZones and bullishSignal, location=location.abovebar, color=color.red, style=shape.triangledown, title=“Impulse Fib End”)

// Plot fib reversal zones
//plot(showImpulseZones ? fib618 : na, color=color.orange, title=“Impulse Fib 61.8%”)
//plot(showImpulseZones ? fib786 : na, color=color.purple, title=“Impulse Fib 78.6%”)

// === INPUTS ===
enableCCIDipLogic = input(true, title=“Enable CCI Dip Detection”)
showDipLabels = input(true, title=“Show CCI Dip Labels”)
useDipAsFibStart = input(true, title=“Use CCI Dip as Fib Start”)

// === Dip Detection Logic ===
wasExhausted = cci5[1] <= -100 and cci20[1] <= -100
dipFormed = enableCCIDipLogic and cci5 > -100 and cci20 <= -100 and wasExhausted

wasntExhausted = cci5[1] >= 100 and cci20[1] >= 100
dipntFormed = enableCCIDipLogic and cci5 >= 100 and cci20 >=100 and wasntExhausted

// === Visual Marker ===
//plotshape(dipFormed, location=location.belowbar, style=shape.circle, color=color.orange, title=“CCI Dip Formed”)
//plotshape(dipntFormed, location=location.belowbar, style=shape.circle, color=color.orange, title=“CCI Dipnt Formed”)

// === INPUTS ===
// Bollinger Bands Set 1
bb1_len = input(20, title=“BB1 Length”)
bb1_std = input(2.0, title=“BB1 StdDev”)
bb1_src = input(close, title=“BB1 Source”)
bb1_fill = input(true, title=“Fill BB1 Area?”)

// Bollinger Bands Set 2
bb2_len = input(50, title=“BB2 Length”)
bb2_std = input(2.5, title=“BB2 StdDev”)
bb2_src = input(close, title=“BB2 Source”)
bb2_fill = input(true, title=“Fill BB2 Area?”)

// === CCI Inputs ===
cci_len1 = input(5, title=“CCI Length 1”)
cci_len2 = input(20, title=“CCI Length 2”)
cci_src = input(close, title=“CCI Source”)

// === CALCULATIONS ===
// Bollinger Bands 1
bb1_basis = sma(bb1_src, bb1_len)
bb1_upper = bb1_basis + bb1_std * stdev(bb1_src, bb1_len)
bb1_lower = bb1_basis - bb1_std * stdev(bb1_src, bb1_len)

// Bollinger Bands 2
bb2_basis = sma(bb2_src, bb2_len)
bb2_upper = bb2_basis + bb2_std * stdev(bb2_src, bb2_len)
bb2_lower = bb2_basis - bb2_std * stdev(bb2_src, bb2_len)

ema40 = ema(close, 40)
ema144 = ema(close, 144)

// === PLOTTING ===
// Bollinger Bands 1
plot(bb1_basis, title=“BB1 Basis”, color=color.orange)
p1u = plot(bb1_upper, title=“BB1 Upper”, color=color.orange, linewidth=1)
p1l = plot(bb1_lower, title=“BB1 Lower”, color=color.orange, linewidth=1)

// Bollinger Bands 2
plot(bb2_basis, title=“BB2 Basis”, color=color.purple)
p2u = plot(bb2_upper, title=“BB2 Upper”, color=color.purple, linewidth=1)
p2l = plot(bb2_lower, title=“BB2 Lower”, color=color.purple, linewidth=1)

// Fill Areas
fill(p1u, p1l, color=bb1_fill ? color.orange : color.new(color.orange, 100), transp=85, title=“BB1 Fill”)
fill(p2u, p2l, color=bb2_fill ? color.purple : color.new(color.purple, 100), transp=85, title=“BB2 Fill”)

// Moving Averages
plot(sma20, title=“SMA 20”, color=color.blue, linewidth=2)
plot(sma40, title=“SMA 40”, color=color.green, linewidth=2)
plot(ema40, title=“EMA 40”, color=color.red, linewidth=2)
plot(ema144, title=“EMA 144”, color=color.fuchsia, linewidth=2)

// === BACKGROUND COLOR ===
//bgcolor(extreme_cci ? color.white : na, transp=0)

// === CCI Calculations ===
cci1 = cci(cci_src, cci_len1)
cci2 = cci(cci_src, cci_len2)

// === Anchor Levels ===
anchor1 = low - tr * 2 // Line for CCI(5)
anchor2 = low - tr * 3 // Line for CCI(20)

// — Signal Flags —
isEntry = entrySignal or entrySignal2
isTransition = transition or transition6
isDip = dipFormed
isFibZone = close >= fib618 and close <= fib786
isFractal = bullishFractal
isAboveATR = close > atrTrailingStop1 and close > atrTrailingStop2

// — Cluster Scoring —
clusterScore = (isEntry ? 2 : 0) +(isTransition ? 2 : 0) + (isDip ? 1 : 0) + (isFibZone ? 1 : 0) +(isFractal ? 1 : 0) + (isAboveATR ? 1 : 0)

// — Threshold for Meta-Signal —
metaSignal = clusterScore >= 4

// — Visual Marker —
plotshape(metaSignal, location=location.abovebar, style=shape.labelup, color=color.fuchsia, text=“META”, title=“MetaCluster Signal”)

// — Alert —
alertcondition(metaSignal, title=“MetaCluster Alert”, message=“Multiple modules aligned. High-conviction zone detected.”)

// — Optional: Score Label —
//plotshape(metaSignal, location=location.abovebar, style=shape.labelup, color=color.fuchsia, text=“META”, title=“MetaCluster Signal”)
// — Optional: Background Heatmap —
//bgcolor(clusterScore >= 5 ? color.new(color.green, 85) : na)

//alertcondition(bullishSignal and cross(close, atrTrailingStop3), title=“ATR3 Cross”, message="Price crossed ATR Trailing Stop

// === Dual Fractal Detection ===
isBullFractal = low[2] > low[1] and low[1] < low and low[1] < low[3] and low[1] < low[4]
isBearFractal = high[2] < high[1] and high[1] > high and high[1] > high[3] and high[1] > high[4]
isDualFractal = isBullFractal and isBearFractal

//plotshape(isDualFractal, title=“Dual Fractal”, location=location.abovebar, color=color.orange, style=shape.triangleup, size=size.small)

// === Store Fractal Levels (Persistent)
var float anchorHigh = na
var float anchorLow = na

anchorHigh := isDualFractal ? high[1] : anchorHigh
anchorLow := isDualFractal ? low[1] : anchorLow

// === Draw Horizontal Lines
plot(not na(anchorHigh) ? anchorHigh : na, title=“Fractal High”, color=color.red, style=plot.style_circles )
plot(not na(anchorLow) ? anchorLow : na, title=“Fractal Low”, color=color.green, style=plot.style_circles)

// === Price Crossover Detection
longSignal = not na(anchorHigh) and crossover(close, anchorHigh)
shortSignal = not na(anchorLow) and crossunder(close, anchorLow)

//plotshape(longSignal, title=“Long Signal”, location=location.belowbar, color=color.rgb(0, 255, 8), style=shape.labelup, text=“L”)
//plotshape(shortSignal, title=“Short Signal”, location=location.abovebar, color=color.rgb(255, 0, 0), style=shape.labeldown, text=“S”)

alertcondition(longSignal, title=“Long Signal Alert”, message=“Price crossed above fractal low → L”)
alertcondition(shortSignal, title=“Short Signal Alert”, message=“Price crossed below fractal high → S”)

4 لایک کرده

مردِ هزار اندیکاتوری ..

4 لایک کرده

// === Fractal Signal Logic (Upgrade Only) ===
//longSignal = not na(anchorLow) and crossover(close, anchorLow)
crossdown1 = not na(anchorHigh) and close[1] < anchorHigh
crossdown2 = not na(anchorHigh) and close < anchorHigh
//shortSignal = crossdown1 and crossdown2

// === Highlight Signal Logic (L or S + any other signal)
highlightSignal = (longSignal or shortSignal) and (entrySignal or entrySignal2 or transition or transition6 )

// === Visual Marker for Highlighted Signal
plotshape(highlightSignal, location=location.abovebar, style=shape.labelup, color=color.yellow, text=“:high_voltage:”, size=size.large, title=“Highlighted Signal”)

// === Alert for Highlighted Signal
alertcondition(highlightSignal, title=“:high_voltage: Highlighted Signal Alert”, message=“Fractal signal coincides with another major trigger”)

// === Fractal-Based Fibonacci Retracement (Parallel to ATR-Based)
// Only activates when bullishSignal is true and anchorLow is valid
useFractalFib = bullishSignal and not na(anchorLow) and anchorLow < signalCandleLow

fractFibStart = useFractalFib ? anchorLow : na
fractFibEnd = useFractalFib ? signalCandleLow : na

fractFib100 = fractFibStart
fractFib786 = fractFibStart + (fractFibEnd - fractFibStart) * 0.786
fractFib618 = fractFibStart + (fractFibEnd - fractFibStart) * 0.618
fractFib50 = fractFibStart + (fractFibEnd - fractFibStart) * 0.5
fractFib382 = fractFibStart + (fractFibEnd - fractFibStart) * 0.382
fractFib236 = fractFibStart + (fractFibEnd - fractFibStart) * 0.236
fractFib0 = fractFibEnd

//plot(useFractalFib ? fractFib100 : na, title=“Fractal Fib 0%”, color=color.gray, linewidth=1)
//plot(useFractalFib ? fractFib786 : na, title=“Fractal Fib 78.6%”, color=color.green, linewidth=1)
//plot(useFractalFib ? fractFib618 : na, title=“Fractal Fib 61.8%”, color=color.orange, linewidth=1)
//plot(useFractalFib ? fractFib50 : na, title=“Fractal Fib 50%”, color=color.red, linewidth=1)
//plot(useFractalFib ? fractFib382 : na, title=“Fractal Fib 38.2%”, color=color.purple, linewidth=1)
//plot(useFractalFib ? fractFib236 : na, title=“Fractal Fib 23.6%”, color=color.yellow, linewidth=1)
//plot(useFractalFib ? fractFib0 : na, title=“Fractal Fib 100%”, color=color.white, linewidth=1)

// === MetaCluster Between Fractal Anchors ===
B = metaSignal and close > anchorLow and close < anchorHigh

//plotshape(B, title=“MetaCluster Between Anchors”, location=location.abovebar, style=shape.labelup, color=color.purple, text=“META✓”)
alertcondition(B or metaSignal or highlightSignal or v , title=“META TO CHECK Between Anchors Alert”, message=“META TO CHECK FIRST signal detected between fractal anchors.”)
allAlerts = B or highlightSignal or metaSignal or v or entrySignal or entrySignal2

alertcondition(allAlerts, title=“:fire: CROCOBOT MASTER ALERT”, message=“Unified signal detected across CROCOBOT modules. Check dashboard for alignment.”)

// === Oversold/Overbought Conditions ===
rsiOversold = rsiVal <= 30
rsiOverbought = rsiVal >= 70
stochOversold = stochK * 100 <= 20
stochOverbought = stochK * 100 >= 80

cciOversold = cci5 <= -100 and cci20 <= -100
cciOverbought = cci5 >= 100 and cci20 >= 100

// === Checkmark Logic ===
rsiStochCheck = (rsiOversold and stochOversold) or (rsiOverbought and stochOverbought)
cciCheck = cciOversold or cciOverbought

// === Signal Panel ===
var table signalPanel = table.new(position.top_right, 1, 8, border_width=1)

if bar_index % 5 == 0
table.cell(signalPanel, 0, 0, “:bar_chart: Signal Panel”, text_color=color.white, bgcolor=color.gray, text_size=size.normal)
table.cell(signalPanel, 0, 1, “RSI: " + tostring(rsiVal, “#.##”) + " | Stoch %K: " + tostring(stochK * 100, “#.##”) + (rsiStochCheck ? " :white_check_mark:” : “”), text_color=color.lime, bgcolor=color.black)
table.cell(signalPanel, 0, 2, “CCI(5): " + tostring(cci5, “#.##”) + " | CCI(20): " + tostring(cci20, “#.##”) + (cciCheck ? " :white_check_mark:” : “”), text_color=color.orange, bgcolor=color.black)
table.cell(signalPanel, 0, 3, "Status: " + (rsiStochCheck and cciCheck ? “:fire: All Aligned” : “Waiting…”), text_color=color.white, bgcolor=color.black)

// === Dashboard Signal Panel ===
dashboardSignal = rsiStochCheck and cciCheck

if bar_index % 5 == 0
table.cell(signalPanel, 0, 0, “:bar_chart: Signal Panel”, text_color=color.white, bgcolor=color.gray, text_size=size.normal)
table.cell(signalPanel, 0, 1, “RSI: " + tostring(rsiVal, “#.##”) + " | Stoch %K: " + tostring(stochK * 100, “#.##”) + (rsiStochCheck ? " :white_check_mark:” : “”), text_color=color.lime, bgcolor=color.black)
table.cell(signalPanel, 0, 2, “CCI(5): " + tostring(cci5, “#.##”) + " | CCI(20): " + tostring(cci20, “#.##”) + (cciCheck ? " :white_check_mark:” : “”), text_color=color.orange, bgcolor=color.black)
table.cell(signalPanel, 0, 3, "Status: " + (dashboardSignal ? “:fire: All Aligned” : “Waiting…”), text_color=color.white, bgcolor=color.black)
//plotshape(dashboardSignal, title=“Dashboard Signal”, location=location.belowbar, color=color.fuchsia, style=shape.triangleup, text=“:bar_chart:”, size=size.large)

alertcondition(dashboardSignal, title=“:bar_chart: Dashboard Signal Alert”, message=“All dashboard indicators aligned (RSI, Stoch, CCI)”)

dashboardHighlight = dashboardSignal and highlightSignal
//plotshape(dashboardHighlight, title=“Dashboard + Highlight”, location=location.abovebar, color=color.orange, style=shape.labelup, text=“:high_voltage::bar_chart:”, size=size.large)

alertcondition(dashboardHighlight, title=“:high_voltage::bar_chart: Dashboard Highlight Alert”, message=“Dashboard indicators aligned with fractal highlight signal. Check CROCOBOT panel for confirmation.”)

//dashboardHighlight2 = dashboardSignal and highlightSignal and (entrySignal or entrySignal2 or transition or transition6 )

entryCombo = (entrySignal or entrySignal2 or transition or transition6)
entryComboPrev = (entrySignal[1] or entrySignal2[1] or transition[1] or transition6[1])

dashboardHighlight2 = (dashboardSignal or dashboardSignal[1]) and (highlightSignal or highlightSignal[1]) and (entryCombo or entryComboPrev)

//plotshape(dashboardHighlight, title=“Dashboard + Highlight2”, location=location.abovebar, color=color.orange, style=shape.labelup, text=“:high_voltage:2​:bar_chart:”, size=size.large)

alertcondition(dashboardHighlight, title=“:high_voltage::bar_chart: Dashboard Highlight Alert2”, message=“Dashboard indicators aligned with fractal highlight signal. Check CROCOBOT panel for confirmation.”)
alertcondition(dashboardHighlight or dashboardHighlight2, title=“:high_voltage::bar_chart: Dashboard Highlight Alert2”, message=“Dashboard indicators aligned with fractal highlight signal. Check CROCOBOT panel for confirmation.”)

// === Trend Envelope Logic ===
ma1 = ema(close, 13)
ma2 = ema(close, 21)
ma3 = ema(close, 34)
ma = ema(close, 89)
range = tr
rangema = ema(range, 89)
upper = ma + rangema * 0.5
lower = ma - rangema * 0.5

// === Trend Conditions ===
tr_up = ma1 > upper and ma2 > upper and ma3 > upper
tr_down = ma1 < lower and ma2 < lower and ma3 < lower

// === Background Pulse (No Value Plotting) ===
bgcolor(tr_up ? color.green : tr_down ? color.red : na, transp=85)

// === :brain: ATR Multipliers
atr1x = 1.5
atr2x = 2.0
atr3x = 2.5
atr4x = 3.0
atr5x = 3.5
// === :brain: ATR Calculations
//atr1 = atr(14)
//atr2 = atr(10)
//atr3 = atr(26)
//atr4 = atr(22)
atr5 = atr(7)
//loss1 = atr1x * atr1
//loss2 = atr2x * atr2
//loss3 = atr3x * atr3
//loss4 = atr4x * atr4
loss5 = atr5x * atr5
// === :brain: Trailing Stops
var float sl1 = na
var float sl2 = na
var float sl3 = na
var float sl4 = na
var float sl5 = na
sl1 := close > nz(sl1[1]) ? max(nz(sl1[1]), close - loss1) : min(nz(sl1[1]), close + loss1)
sl2 := close > nz(sl2[1]) ? max(nz(sl2[1]), close - loss2) : min(nz(sl2[1]), close + loss2)
sl3 := close > nz(sl3[1]) ? max(nz(sl3[1]), close - loss3) : min(nz(sl3[1]), close + loss3)
sl4 := close > nz(sl4[1]) ? max(nz(sl4[1]), close - loss4) : min(nz(sl4[1]), close + loss4)
sl5 := close > nz(sl5[1]) ? max(nz(sl5[1]), close - loss5) : min(nz(sl5[1]), close + loss5)
// === :white_check_mark: Breakout Conditions
priceAboveAll = close > sl1 and close > sl2 and close > sl3 and close > sl4 and close > sl5
priceBelowAll = close < sl1 and close < sl2 and close < sl3 and close < sl4 and close < sl5
// === :brain: State Tracking
var string lastState = “none”
currentState = priceAboveAll ? “buy” : priceBelowAll ? “sell” : “hold”
stateChanged = currentState != lastState
lastState := stateChanged ? currentState : lastState
// === :bell: Alerts
//alertcondition(stateChanged and currentState == “buy”, title=“:green_circle: Buy Breakout”, message=“Price broke above all SLs — Buy setup.”)
//alertcondition(stateChanged and currentState == “sell”, title=“:red_triangle_pointed_down: Sell Breakdown”, message=“Price broke below all SLs — Sell setup.”)
// === :artist_palette: Candle Coloring
//barcolor(priceAboveAll ? color.green : priceBelowAll ? color.red : na)
// === :bar_chart: Plot SL Trails
//plot(sl1, title=“SL1”, color=color.new(color.red, 0), linewidth=1)
//plot(sl2, title=“SL2”, color=color.new(color.orange, 0), linewidth=1)
//plot(sl3, title=“SL3”, color=color.new(color.yellow, 0), linewidth=1)
//plot(sl4, title=“SL4”, color=color.new(color.green, 0), linewidth=1)
//plot(sl5, title=“SL5”, color=color.new(color.blue, 0), linewidth=1)
// === :brain: Crocobot Entry Overlay
//plotshape(priceAboveAll, title=“Buy Overlay”, location=location.top, style=shape.triangleup, color=color.green, size=size.tiny)
//plotshape(priceBelowAll, title=“Sell Overlay”, location=location.bottom, style=shape.triangledown, color=color.red, size=size.tiny)
// === :pushpin: PnP: Elliott Wave Trigger via SL Breakout
enableElliottOverlay = input(true, title=“نمایش موج 3 یا C”)
strongBreakout = priceAboveAll and close > high[1] and close > high[2]
strongBreakdown = priceBelowAll and close < low[1] and close < low[2]
plotshape(enableElliottOverlay and strongBreakout, title=“شروع موج 3 (صعودی)”, location=location.belowbar, style=shape.labelup, color=color.lime, text=“موج 3↑”, textcolor=color.black)
plotshape(enableElliottOverlay and strongBreakdown, title=“شروع موج C (نزولی)”, location=location.abovebar, style=shape.labeldown, color=color.red, text=“موج C↓”, textcolor=color.white)
alertcondition(enableElliottOverlay and strongBreakout, title=“:chart_increasing: شروع موج 3”, message=“شکست پرقدرت به بالا: احتمال شروع موج 3”)
alertcondition(enableElliottOverlay and strongBreakdown, title=“:chart_decreasing: شروع موج C”, message=“شکست پرقدرت به پایین: احتمال شروع موج C”)
// === :pushpin: PnP: Elliott Wave Numbering + Alerts
enableElliottWaves = input(true, title=“فعال‌سازی موج‌های الیوت”)
useDynamicWaveCount = input(true, title=“Use Dynamic Wave Count”)
manualWaveCount = input(5, title=“Max Wave Count (Manual)”)

// === Signal Flags
//isEntry = entrySignal or entrySignal2
//isTransition = transition or transition6
//isDip = dipFormed
//isFibZone = close >= fib618 and close <= fib786
//isFractal = bullishFractal
//isAboveATR = close > atrTrailingStop1 and close > atrTrailingStop2

// === MetaCluster Score
//clusterScore = (isEntry ? 2 : 0) + (isTransition ? 2 : 0) + (isDip ? 1 : 0) + (isFibZone ? 1 : 0) + (isFractal ? 1 : 0) + (isAboveATR ? 1 : 0)

// === Confidence Layer
confidence = (isEntry and isFractal) ? 100 :
(isEntry or isTransition) ? 80 :
(isDip or isFibZone) ? 60 :
(isAboveATR) ? 50 : 30

// === Dynamic Wave Count via Score + Confidence
dynamicWaveCount = clusterScore >= 7 and confidence >= 90 ? 3 :
clusterScore >= 5 ? 5 :
clusterScore >= 3 ? 2 :
clusterScore >= 1 ? 4 : 1

// === Final Wave Count Selector
maxWaveCount = useDynamicWaveCount ? dynamicWaveCount : manualWaveCount

// === Dashboard Display
table.cell(signalPanel, 0, 6, "Wave Count: " + tostring(maxWaveCount), text_color=color.white, bgcolor=color.black)
table.cell(signalPanel, 0, 7, "Confidence: " + tostring(confidence), text_color=color.white, bgcolor=color.black)
var int waveUp = 0
var int waveDown = 0
newWaveUp = priceAboveAll and close > high[1] and close > high[2]
newWaveDown = priceBelowAll and close < low[1] and close < low[2]
waveUp := newWaveUp ? waveUp + 1 : waveUp
waveDown := newWaveDown ? waveDown + 1 : waveDown
waveUp := waveUp > maxWaveCount ? 1 : waveUp
waveDown := waveDown > maxWaveCount ? 1 : waveDown
// موج‌های صعودی
//plotshape(enableElliottWaves and newWaveUp and waveUp == 1, location=location.belowbar, style=shape.labelup, color=color.green, text=“↑ موج 1”, textcolor=color.black)
//(enableElliottWaves and newWaveUp and waveUp == 2, location=location.belowbar, style=shape.labelup, color=color.green, text=“↑ موج 2”, textcolor=color.black)
//plotshape(enableElliottWaves and newWaveUp and waveUp == 3, location=location.belowbar, style=shape.labelup, color=color.green, text=“↑ موج 3”, textcolor=color.black)
//plotshape(enableElliottWaves and newWaveUp and waveUp == 4, location=location.belowbar, style=shape.labelup, color=color.green, text=“↑ موج 4”, textcolor=color.black)
//plotshape(enableElliottWaves and newWaveUp and waveUp == 5, location=location.belowbar, style=shape.labelup, color=color.green, text=“↑ موج 5”, textcolor=color.black)
waveEnd = waveUp == maxWaveCount or waveDown == maxWaveCount
// موج‌های نزولی
//plotshape(enableElliottWaves and newWaveDown and waveDown == 1, location=location.abovebar, style=shape.labeldown, color=color.red, text=“↓ موج 1”, textcolor=color.white)
//plotshape(enableElliottWaves and newWaveDown and waveDown == 2, location=location.abovebar, style=shape.labeldown, color=color.red, text=“↓ موج 2”, textcolor=color.white)
//plotshape(enableElliottWaves and newWaveDown and waveDown == 3, location=location.abovebar, style=shape.labeldown, color=color.red, text=“↓ موج 3”, textcolor=color.white)
//plotshape(enableElliottWaves and newWaveDown and waveDown == 4, location=location.abovebar, style=shape.labeldown, color=color.red, text=“↓ موج 4”, textcolor=color.white)
///plotshape(enableElliottWaves and newWaveDown and waveDown == 5, location=location.abovebar, style=shape.labeldown, color=color.red, text=“↓ موج 5”, textcolor=color.white)

// === Bullish Wave Alerts ===
alertcondition((enableElliottWaves and newWaveUp and waveUp == 1) or (enableElliottWaves and newWaveDown and waveDown == 1), title=“Wave 1/1 Up”, message=“Wave 1 Up detected”)
alertcondition(enableElliottWaves and newWaveUp and waveUp == 2, title=“Wave 2 Up”, message=“Wave 2 Up detected”)
alertcondition(enableElliottWaves and newWaveUp and waveUp == 3, title=“Wave 3 Up”, message=“Wave 3 Up detected”)
alertcondition(enableElliottWaves and newWaveUp and waveUp == 4, title=“Wave 4 Up”, message=“Wave 4 Up detected”)
alertcondition((enableElliottWaves and newWaveUp and waveUp == 5) or (enableElliottWaves and newWaveDown and waveDown == 5), title=“Wave 5/5 Up”, message=“Wave 5 Up detected”)

// === Bearish Wave Alerts ===
//alertcondition(enableElliottWaves and newWaveDown and waveDown == 1, title=“Wave 1 Down”, message=“Wave 1 Down detected”)
alertcondition(enableElliottWaves and newWaveDown and waveDown == 2, title=“Wave 2 Down”, message=“Wave 2 Down detected”)
alertcondition(enableElliottWaves and newWaveDown and waveDown == 3, title=“Wave 3 Down”, message=“Wave 3 Down detected”)
alertcondition(enableElliottWaves and newWaveDown and waveDown == 4, title=“Wave 4 Down”, message=“Wave 4 Down detected”)
//alertcondition(enableElliottWaves and newWaveDown and waveDown == 5, title=“Wave 5 Down”, message=“Wave 5 Down detected”)

// Define your bullish signal condition (example: bullish engulfing)
//bullishSignal = close > open and close[1] < open[1] and close > open[1]

// Persistent counter
var int candleCount = na
candleCount := bullishSignal ? 1 : (not na(candleCount) ? candleCount + 1 : na)

// Labeling specific candles
if candleCount == 8
label.new(bar_index, high, “8”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)
if candleCount == 13
label.new(bar_index, high, “13”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)
if candleCount == 21
label.new(bar_index, high, “21”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)
if candleCount == 34
label.new(bar_index, high, “34”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)
if candleCount == 55
label.new(bar_index, high, “55”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)
if candleCount == 89
label.new(bar_index, high, “89”, style=label.style_label_down, color=color.rgb(54, 58, 69, 100), textcolor=color.white)

// Reset counter if desired (optional)
// candleCount := someResetCondition ? na : candleCount

D = bullishSignal and (enableElliottWaves or enableElliottWaves or enableElliottWaves or enableElliottWaves or enableElliottWaves or candleCount == 8 or candleCount == 13 or candleCount == 34 or candleCount == 55 or candleCount == 89 )
plotshape(D and newWaveUp and waveUp == 1, location=location.bottom, style=shape.labelup, color=color.rgb(255, 255, 255, 100), text=“↑ موج 1”, textcolor=color.rgb(255, 255, 255))
alertcondition(D , title=“D”, message=“D”)

// === INPUTS ===
iBarsBack = input(defval=2, title=“Bars Back”, type=input.integer)
macdFast = input(defval=40, title=“MACD Fast Length”, type=input.integer)
macdSlow = input(defval=144, title=“MACD Slow Length”, type=input.integer)
macdSignal = input(defval=9, title=“MACD Signal Length”, type=input.integer)

// === MOVING AVERAGES ===
//sma20 = sma(close, 20)
//sma40 = sma(close, 40)
//ema40 = ema(close, 40)
//ema144 = ema(close, 144)

// === SLOPE CALCULATIONS ===
changeSMA20 = change(sma20, 1)
changeSMA40 = change(sma40, 1)
slopeSMA20 = changeSMA20
slopeSMA40 = changeSMA40
rad2degree = 180 / 3.14159265359
slopeSMA20Degree = rad2degree * atan(slopeSMA20)
slopeSMA40Degree = rad2degree * atan(slopeSMA40)

// === BARS BACK SLOPE ===
sma2sample = sma(close, 20)
slopeD20 = rad2degree * atan((sma2sample[1] - nz(sma2sample[iBarsBack])) / iBarsBack)

// === CCI CONDITIONS ===
//cci5 = cci(close, 20)
cci55 = cci(close, 5)
cciCondition1 = (cci5 <= -99 or cci5 >= 99) or (cci5[1] <= -99 or cci5[1] >= 99)
cciCondition2 = (cci55 <= -99 or cci55 >= 99) or (cci55[1] <= -99 or cci55[1] >= 99)
cciCondition22 = (cciCondition1 or cciCondition2)

// === TOUCH CONDITIONS ===
touchConditionBottom1 = (low[1] <= sma20[1] or high[1] <= sma20[1]) or (low <= sma20 or high <= sma20)
touchConditionBottom2 = close[1] >= sma40[1]

// === SMA & SLOPE CONDITIONS ===
smaSCondition = sma20[1] >= sma40[1]
slopeSMA20Condition = slopeSMA20Degree > 0
slopeSMA40Condition = slopeSMA40Degree > 0

// === BEARISH OVERRIDE ===
bearishOverride = close < sma20 or close < sma40

// === MAIN SIGNAL ===
finalResult = cciCondition22 and touchConditionBottom1 and touchConditionBottom2 and smaSCondition and slopeSMA20Condition and slopeSMA40Condition

// === MACD FLIP LOGIC ===
macdLine = ema(close, macdFast) - ema(close, macdSlow)
macdSignalLine = ema(macdLine, macdSignal)
bullFlip = crossover(macdLine, macdSignalLine)
bearFlip = crossunder(macdLine, macdSignalLine)

// === SIGNAL TYPES ===
confirmedBull = finalResult and bullFlip and not bearishOverride
pendingBull = finalResult and not bullFlip and not bearishOverride
bearishSignal = finalResult and bearishOverride

// === SMA COLOR LOGIC (Max Saturation) ===
sma20Color = close > sma20 ? color.lime : color.maroon
sma40Color = close > sma40 ? color.lime : color.maroon

// === BACKGROUND COLOR ===
bgcolor(confirmedBull ? color.lime : na, transp=85)
entryStrong = entrySignal and transition and isAboveATR
metaFractal = bullishFractal and clusterScore >= 4
transitionFiltered = transition and isAboveATR and isFibZone
highlightSignalOnce = (longSignal or shortSignal) and (entrySignal or entrySignal2 or transition or transition6)
longSignalOnce = bullishFractal and close > anchorLow
shortSignalOnce = bearishFractal and close < anchorHigh
entryModerate = entrySignal or entrySignal2
waveMid = waveUp == floor(maxWaveCount / 2) or waveDown == floor(maxWaveCount / 2)
waveStart = waveUp == 1 or waveDown == 1
// === PLOTTING ===
//plot(finalResult ? 1.0 : na, title=“Main Signal”, color=color.green, linewidth=2)
//plot(confirmedBull ? 2.0 : na, title=“Confirmed Flip”, color=color.blue, linewidth=3)
plotshape(confirmedBull, title=“Bull Flip Overlay”, location=location.belowbar, color=color.green, style=shape.arrowup)
plotshape(pendingBull, title=“Pending Signal”, location=location.belowbar, color=color.gray, style=shape.labeldown, text=“P”)
plotshape(bearishSignal, title=“Bearish Signal”, location=location.abovebar, color=color.red, style=shape.labeldown, text=“S”)
alertcondition(D or pendingBull or bearishSignal or confirmedBull , title=“D+”, message=“D+”)
//alertcondition(confirmedBull and metaSignal, title=“Meta Bull Flip”, message=“Confirmed bull flip with cluster alignment”)
alertcondition(D and newWaveUp and waveUp == 1, title=“D Wave 1 Trigger”, message=“Wave 1 detected with D+ alignment”)
// === SMA OVERLAYS WITH MAX GREEN/RED ===
//plot(sma20, title=“SMA 20”, color=sma20Color, linewidth=2)
//plot(sma40, title=“SMA 40”, color=sma40Color, linewidth=2)
// === Signal Strength Calculation ===
slBreachMetaSignal = crossunder(close, signalCandleLow) and metaSignal

signalStrength = confirmedBull ? 90 :
entryStrong ? 85 :
metaFractal ? 80 :
v ? 75 :
transitionFiltered ? 70 :
highlightSignalOnce ? 65 :
longSignalOnce or shortSignalOnce ? 60 :
entryModerate ? 55 :
pendingBull ? 50 :
dipFormed and isAboveATR ? 45 :
waveStart ? 40 :
waveMid ? 35 :
waveEnd ? 30 :
bearishSignal ? 25 :
slBreachMetaSignal ? 20 : 0

// === Plot Signal Strength Line ===
plot(signalStrength, title=“Signal Strength”, color=color.new(color.teal, 0), linewidth=2, style=plot.style_line)

// === Background Heatmap ===
bgcolor( signalStrength >= 80 ? color.new(color.green, 85) : signalStrength >= 60 ? color.new(color.orange, 85) : signalStrength >= 40 ? color.new(color.red, 85) : na, title=“Signal Strength Heatmap”)

// === Top-Right Panel (existing) ===
//var table signalPanel = table.new(position.top_right, 1, 1, border_width=1)

// === Tactical Descriptions ===
actionText = signalStrength >= 90 ? “:fire: Aggressive Entry” : signalStrength >= 80 ? “:white_check_mark: Full Entry / Scale In” : signalStrength >= 70 ? “:green_circle: Light Entry / Probe” : signalStrength >= 60 ? “:orange_circle: Prep Entry / Watchlist” : signalStrength >= 40 ? “:magnifying_glass_tilted_left: Monitor / Structure Forming” : signalStrength >= 20 ? “:warning: Avoid / Weak Signal” : “:cross_mark: No Signal”

confidenceText = confidence >= 90 ? “:fire: High Conviction” : confidence >= 80 ? “:white_check_mark: Strong Agreement” : confidence >= 60 ? “:green_circle: Moderate Alignment” : confidence >= 40 ? “:orange_circle: Mixed Signals” : confidence >= 20 ? “:warning: Low Confidence” : “:cross_mark: No Alignment”

strengthColor = signalStrength >= 70 ? color.green : signalStrength >= 40 ? color.rgb(63, 60, 100) : color.red

// === Signal Panel ===
//var table signalPanel2 = table.new(position.bottom_left, 1, 8, border_width=1)

if bar_index % 5 == 0
//table.cell(signalPanel2, 0, 0, “:bar_chart: Signal Panel”, text_color=color.white, bgcolor=color.gray)
//table.cell(signalPanel, 0, 1, “RSI: " + tostring(rsiVal, “#.##”) + " | Stoch %K: " + tostring(stochK * 100, “#.##”) + (rsiStochCheck ? " :white_check_mark:” : “”), text_color=color.lime, bgcolor=color.black)
//table.cell(signalPanel, 0, 2, “CCI(5): " + tostring(cci5, “#.##”) + " | CCI(20): " + tostring(cci20, “#.##”) + (cciCheck ? " :white_check_mark:” : “”), text_color=color.orange, bgcolor=color.black)
//table.cell(signalPanel, 0, 3, "Status: " + (dashboardSignal ? “:fire: All Aligned” : “Waiting…”), text_color=color.white, bgcolor=color.black)
table.cell(signalPanel, 0, 4, "Signal Strength: " + tostring(signalStrength), text_color=color.white, bgcolor=strengthColor)
table.cell(signalPanel, 0, 5, "Action: " + actionText, text_color=color.white, bgcolor=color.gray)
table.cell(signalPanel, 0, 6, "Confidence: " + tostring(confidenceText) + "% | " , text_color=color.white, bgcolor=color.navy)
//table.cell(signalPanel2, 0, 7, "Wave: " + tostring(waveCount) + " | Flip: " + (flip ? “:white_check_mark:” : “—”), text_color=color.white, bgcolor=color.black)

alertcondition(signalStrength >= 80, title=“:fire: Strong Signal Alert”, message=“Signal strength is high ({{signalStrength}}) on {{ticker}} — consider tactical entry.”)
alertcondition(confidence >= 80, title=“:white_check_mark: High Confidence Alert”, message=“Confidence score is high ({{confidence}}%) on {{ticker}} — indicators are aligned.”)
alertcondition(signalStrength >= 80 and confidence >= 80, title=“:fire::white_check_mark: Strong + Confident Signal”, message=“High signal strength and confidence on {{ticker}} — tactical setup confirmed.”)

توجه داشته باشید تریدینگ ویو در آخرین بروزرسانی خود قادر به نمایش نهایتا 65 پلات می باشد . بهمین جهت برخی از آیتم ها با استفاده از // پنهان شده اند دو بخش ارسالی بهترین وجه از وجوه ممکن را به نقش کشیده اما جهت استفاده حداکثری از تمام توان کد میتونید بر اساس نیاز خود با استفاده از // بخش های منفی را نمایان و نمایان را مخفی بسازید .

توجه داشته باشید بجهت بهره برداری دقیق از آموزش های آتی نیاز است تا ستینگ نمایشی عینا مطابق با پیشنهادات مندرج در اولین انتشار تنظیم گردد .

پایان انتشار سورس کد نسخه ی نجار ایده ال
PROMAX

در ادامه و در پست سوم از ان مجموعه تکنیک هایی که با آن امکان ورود با نهایت دقت ممکن میسر است توضیح داده میشود . همچنین شیوه نامه ی اتصال این کد به سامانه ی دریافت سیگنال و اجرای خوودکار در متا تریدر در بخش مربوط به توضیحات الارم ها توضیح داده خواهد شد .

بامید از دست ندادن 1 سنت برای تک تک شما عزیزان

3 لایک کرده

میفهمم ولی متوجه نمیشم : l

اقا رضا عرض ادب

وقتی کروکوبات رو بالا بیاری یه پنل میبینی بالا سمت راست مثل همین الان در خصوص چارت معکوس بیتکوین
وقتی دیدی نوشته بود اونجا زمانی که موقع ورود یا خروج باشه خودش بهت اطلاع میده . یکم تحکل کنی اموزش ها کامل میشه . این تمام سورس کد بود از اولین ابطاز.

3 لایک کرده

در بار کالر خود تریدینگ ویو دقیقا مطابق پیوست تیک دوم برداشته بشه .این چارت معکوس بیتکوین دلاره . یعنی سیگنال خرید در اینجا میشه سیگنال فروش خود بیتکوین و بر عکس .

2 لایک کرده

کانال زرد رنگ مربوط به کانال فرکتال دو گانه است که پس از 70 سال از تولد فرکتال ها تویط ارادتمندتون معرفی شده . همخینطور که میبینید با استفقاده از همین کانال امکان فروش بیتکوین در نوک قله ی قیمتی فراهم بوده . جلوتر به بخش هایی هم خواهیم رسید که با پیروی از اونها امکان ورود فول مارجین در لورج 2 هزار هم فراهمه !

3 لایک کرده

تقسیم سیگنال های ورود به دو دسته ی روند محور و ضد روند یا خرید در کف :

اول در خصوص سیگنال های خرید در کف صحبت میکنیم که با علامت نوشته ای بنام U TURN نشان داده می شوند و مثلث آبی رو به بالا . موارد دیگری هم هست مه بهش می رسیم . اینکه چطور با هر سیگنال باید کار کرد هم توضیح داده میشه اول ببینیم چه سیگنال هایی داریم .

بالای برخی کندل ها شما اعدادی رو میبینید که همگی بر اساس یرس اعداد فیبوناچی تا 89 هستند . اینها نواحی زمانی است که با رسیدن به اونها با شش دنگ حواس باز باشه چون محل تصمیم گیری در خصوص ادامه ی روند یا تغییر روند هسیتند .

روی علامت 3 نقطه بر روس اسم کروکوبات کلیک کنید . اینجا تمام آلارم هایی که سیستم براتون ممکن میکنه گنجنده شده از امواج الیوت تا خرید کف و پامپ

1 خط از اخر !
کروکوبات به سیگنال ها از دو نظر امتیاز میده قدرت و اعتماد . با انتخاب این 3 الارم اخر هر زمان سیگنال قدرت بالا داشته باشه یا میزان اعتماد بالا یا هر دو در یک زمان برای شما سیگنال ارسال خواهد شد . با خرید اشتراک پریمیم تریدینگ ویو شما قادر به ست کردن الارم برای یک لیست کامل یا ماچلیست هستید . کافیه 600 نماد بازار رو به همراه 600 نماد معکوس اونها در یک واچ لیست داشته باشید و با استفاده از گزینه ی ست کردن الارم برای واچ لیست با 2 کلیلک برای کا بازار الارم ست کنید . میتونید این کد رو به هوش مصنوعی بدید تا با اندیکاتور های معمول مقایسه کنه و نمره بده با ختلاف از 10 نمره بالای 8 و نزدیک به 9 خواهد بود .

لطفا اعداد داخل ستینگ رو عینا مطابق با این تصاویر ست کنید وگرنه نتیجه نخواهید گرفت .

در این بخش در خصوص سیگنال های پامپ یا روند پایه صحبت میکنیم . خود این سیگنال ها هم رتبه بندی دارن و زمانی که سیگنالی در بارم بندی مشخص شده دارای رتبه ی بالا باشه یح علامت فلش یا رعد برق در بالای کندل ظاهر میشه . این سیگنال ها با رنگ پس زمینه ی آبی پر رنگ و قهوه ای تمییر داده شدنه اند . در مواردی شما خواهید دید که در بخش تحتانی یا پایین چارت همراه سیگنال نوشته شده موج اول . این به اولین سیگنال پامپ شکا گرفته در یک روند اشاره میکنه .

در نور پس زمینه شما 2 رنگ قرمز و سبز رو شاهد هستید . قرمز یعنی بلزلر نزولیه - سبز یعنی صعودیه و جایی که رنگی نیست بازار خنثی است .

بسیار مهم :

دریافت سیگنال پامپ دقیقا در انتهای پس زمینه ی قرمز یا ابتدای پس زمینه ی سبز سیگنال قطعی با در جه ی اعتماد 100 درصده و اگر کوردی پیدا کردید که جواب نداده بود خوشحال میشم اعلام کنید .

3 لایک کرده

کروکوبات دومین بخش سورس از خط 406 تا 837 - گفتگوی آزاد تریدرها - کامیونیتی ایران بروکر

2 لایک کرده

اساتید هر کی بارشه تست کنه بگه

با دریافت سیگنال پامپ ریگرشن ترند رو انتخاب کنید و در ستینگ اعداد 2 و منفی 2 رو به 3 و منفی 3 تغییر بدید .

سپس از ابتدای 3 دال فرکتال چنل قبلی تا ابتدای فرکتا چنلی که در اون سیگنال دریافت کردید ریگرشن ترند بکشید .

یادآوری میکنم دوال فرکنال چنل کانالی است که فرکتال 2 گانه رو مشخص میکنه و به رنگ زدر نشون داده شده . تاامروز همه بر این باور بودند که فرکتال یا صعودیه یا نزولی اما فرکتالی هم داریم که اتفاقا بسیار پر کاربرد تره و فقط در نواحی مهم ظاهر میشه .

در این شکل من فقط 1 رگرشن ترند کشیدم از اخرین کانال دوال فرکتا تا کانالی که در اون سیگنال پامپ رو دریافت کردم .

عزیزان کروکودیل ها از دوران ژوراسیک زمین ماهر ترین شکارچیان حیات وحش بوده و هستند و این مهم تنها 1 دلیل داره ، سبک شکار .

شما تا امروز هیچ کروکودیلی ندیدید که در حال دویدن دنبال شکار باشه درسته ؟ یادم میاد روز و شب هایی که ترید میکردم و حال کشتی شکستگان اون شعر حافظ رو داشتم در انتظار باد شرطه . سروران دنبال شکار ندوید . حد ریسک سیگنال های کروکوبات دقیقا پایین ترین نقطه ی قیکتیه گندلیه که در اون وارد شدید . و دعا کنید که استاپ بخورید چ.ن استپ خوردن همانا و پیدا کردن بهترین نقظه ورود در جهت مخالف هم همانا بر اساس قانونی که ریاضیذان امریکایی بنام KELLY در دهه پنجاه به اون رسید که عرض خواهم کرد .

1 لایک کرده

بعد از ترسیم ریگرشن ترند ، قیب سیرکلز رو از ابطار انتخاب کنید و دور ترین رنج حقیق بازار رو که چارت نشون میده انتخاب کنید . سپس از پنجره ی زمانی که سیگنال دریافت شده با زاویه ی دقیقا 45 درجه به کشیدن خط تا محل دریافت سیگنال ادامه بدید .
در ادامه نسخه ای از کروکوبات براتون اپلود میشه که آرتین پسر 10 ساله ی دوستم با اون از بازار سود گرفت و تمام این کار ها رو براتون خودکار انجام میده و اما لازمه تا بدانید خشت به خشت چه اتفاقاتی در حال رویداد ه .

کروکوبات از 4 رنج حقیقی اصلی استفاده میکنه با ستینگ های زیر که پیشتر در پیوست تقدیم حضور شده :
14و2
10و3
22و6
25و9

در این سیگنال پامپ که طبق آنچه عرض شد بدلیل ظهور در پنجره ی زمانی تغییر روند سبز رنگ پس زمینه بالاترین درجه اعتبار داره و از اون رودخانه هاست که 2 پا که هیچ با سر باید پرید توش من ریگرشن ترند رو از مبدا اولین فرکتال دوگانه قبلی تا کانال فعلی کشبدم و سپس از دورترین رنج میانگین که رنگ مشکی داره دایره ی فیب رو ترسیم کردم .

حالا نوبت به مشخص کردن نواحی زمانی رسیده . یادم هست دوستی اینجا به فرکتال های زمانی اشاره میکرد که از نظر تکنیکی کاملا اشتباهه ما در زمان فرکتال نداریم چون یک رشته ی پیوسته است . فرکتال یعنی تغییر و امروز و دیروز و فردا همه در حوضچه ی اکنونند .

حالا فیبو تایم زون رو انتخاب کنید ، این ابزار همگی در نوار ابزار تریدینگ ویو موجوده . برای کار با اون لازمه 2 نقطه ی صفر و یک رو جاگزاری کنید . صفر دقیقا روی کنئل قبل از سیگنال پامپ و 1 دقیقا روی خود سیگنال پامپ .

تبریک ! نواحی زمانی ترسیم شد و دقت داشته باشید که بازار در زمان رسیدن به هر یک از این اعداد یا دقیقا در لیمیت و مشتق یا فاصله ی میانی 2 ناحیه ی متوالی حجم پذیر خواهد بود . بعد ها خواهید دید که زمان اعلام خبر در تقویم اقتصادی همه بر اساس این نواحی مشخص میشه بی حساب کگتاب نیست . مهمترین نکته در بازار پاسخ به این سواله … WHEN


میدونم خسته شدید ولی اخرشه

حالا فیب ریتریسمنت رو انتخاب کنید و 2 مبدا براش در نظر بگیرید اولی رنج میانگین به ستاپ 10 و 3 و دومی بالاترین نقطه ی ثبت شده در کندل پامپ و در تنظیمات فراموش نکنید که فیب ریتریسمنت باید معکوس باشه که بتونید از پایین به بالا خط رو بکشید .

بر اساس تجربه نسبت ریسک و ریوارد سیگنال ها حداقل 4 به بالاست و در این مثال با در نظر گرفتن حد ریسک در انتهای کندل ورود این عدد به 12 رسیده .




در تصویر پیوست من عملیات مشابه رئ برای اخرین سیگنال خرید در کف انجام دادم در تایم فریم 5 دقیقه

1 لایک کرده

انچه تا اینجا گفته شد توضیح اهم موارد کار با اولین ابزار کروکوبات مناسب برای نسخ تریدینگ ویو رایگان بود که تنها اجازه ی داشتن 2 ابزار رو به یوزر داده و ذیل همین بحث دومین بخش رو هم با انتشار کد تقدیم میکنم .

کار با این مکدی 2 گانه هوش از سر شما خواهد برد . من سازنده ی مکدی نبودم و فقط اون رو بر اساس نساز خودم تغییر دادم . ایراد 99 درصد از افرادی که در ایران ادعای ساخت سیستم دارند هم دقیقا همینه . بزرگواران تالیف با کشف زمین تا اسمون فرقشه .

1 لایک کرده

//@version=4
//@author=LucemAnb
study(title=“MACD CLUSTER SCORE MEAN”, overlay=false)

// Define Fractal Length
fractalLength = 2

// Detect Bullish Fractal (Higher Low)
bullishFractal = low[fractalLength] > low[fractalLength + 1] and low[fractalLength] > low[fractalLength - 1]

// Detect Bearish Fractal (Lower High)
bearishFractal = high[fractalLength] < high[fractalLength + 1] and high[fractalLength] < high[fractalLength - 1]

src = input(title=“Source”, type=input.source, defval=close)
fastMA1 = input(title=“Fast MA 1”, type = input.integer, defval = 12, minval = 7)
slowMA1 = input(title=“Slow MA 1”, type = input.integer, defval = 26, minval = 7)
fastMA2 = input(title=“Fast MA 2”, type = input.integer, defval = 24, minval = 7)
slowMA2 = input(title=“Slow MA 2”, type = input.integer, defval = 52, minval = 7)
signalLength = input(9, “Signal Length”, minval=1)

// First MACD calculation
[currMacd1,,] = macd(close[0], fastMA1, slowMA1, 9)
[prevMacd1,,] = macd(close[1], fastMA1, slowMA1, 9)
signal1 = sma(currMacd1, signalLength)

// Second MACD calculation (faithfully keeping structure from previous step)
[currMacd2,,] = macd(close[0], fastMA2, slowMA2, 9)
[prevMacd2,,] = macd(close[1], fastMA2, slowMA2, 9)
signal2 = sma(currMacd2, signalLength)

nATRPeriod1 = 14

nATRMultip1 = 2

xATR1 = atr(nATRPeriod1)

nATRPeriod11 = 10

nATRMultip11 = 3

xATR11 = atr(nATRPeriod11)

// Detect Crossover Condition
atrCross = crossover(xATR11, xATR1) or crossover(close,xATR1) or crossover(close,xATR11)

// Define jjj logic (only valid immediately after crossover)
jjj = atrCross ? 1 : 0

// Plot ATR values
//plot(xATR1, color=color.blue, title=“ATR (14)”)
//plot(xATR11, color=color.red, title=“ATR (3)”)

// Visual Confirmation for jjj
//plotshape(jjj, location=location.abovebar, color=color.green, style=shape.labeldown, title=“jjj Trigger”)

// Parabolic SAR Calculation
start = 0.02
increment = 0.02
maximum = 0.2
sarValue = sar(start, increment, maximum)

// :small_blue_diamond: User Inputs for Three ATRs
atrPeriod1 = input(5, title=“ATR Period 1”)
atrMultip1 = input(1.5, title=“ATR Multiplier 1”)

atrPeriod2 = input(10, title=“ATR Period 2”)
atrMultip2 = input(2.0, title=“ATR Multiplier 2”)

atrPeriod3 = input(20, title=“ATR Period 3”)
atrMultip3 = input(2.5, title=“ATR Multiplier 3”)

// :small_blue_diamond: Calculate ATR Values
atr1 = atr(atrPeriod1)
atr2 = atr(atrPeriod2)
atr3 = atr(atrPeriod3)

loss1 = atrMultip1 * atr1
loss2 = atrMultip2 * atr2
loss3 = atrMultip3 * atr3

// :small_blue_diamond: Trailing Stop Logic for Each ATR
atrTrailingStop1 = float(na)
atrTrailingStop1 := close > nz(atrTrailingStop1[1], na) and close[1] > nz(atrTrailingStop1[1], na) ? max(nz(atrTrailingStop1[1], na), close - loss1) :
close < nz(atrTrailingStop1[1], na) and close[1] < nz(atrTrailingStop1[1], na) ? min(nz(atrTrailingStop1[1], na), close + loss1) :
close > nz(atrTrailingStop1[1], na) ? close - loss1 : close + loss1

atrTrailingStop2 = float(na)
atrTrailingStop2 := close > nz(atrTrailingStop2[1], na) and close[1] > nz(atrTrailingStop2[1], na) ? max(nz(atrTrailingStop2[1], na), close - loss2) :
close < nz(atrTrailingStop2[1], na) and close[1] < nz(atrTrailingStop2[1], na) ? min(nz(atrTrailingStop2[1], na), close + loss2) :
close > nz(atrTrailingStop2[1], na) ? close - loss2 : close + loss2

atrTrailingStop3 = float(na)
atrTrailingStop3 := close > nz(atrTrailingStop3[1], na) and close[1] > nz(atrTrailingStop3[1], na) ? max(nz(atrTrailingStop3[1], na), close - loss3) :
close < nz(atrTrailingStop3[1], na) and close[1] < nz(atrTrailingStop3[1], na) ? min(nz(atrTrailingStop3[1], na), close + loss3) :
close > nz(atrTrailingStop3[1], na) ? close - loss3 : close + loss3

// :small_blue_diamond: Plot ATR Trailing Stops
//
underATR = close < atrTrailingStop1 or close < atrTrailingStop2 or close < atrTrailingStop3
barcolor(underATR ? color.red : na)

plot(atrTrailingStop1, color=color.blue, linewidth=2, title=“ATR Stop 1”)
plot(atrTrailingStop2, color=color.green, linewidth=2, title=“ATR Stop 2”)
plot(atrTrailingStop3, color=color.red, linewidth=2, title=“ATR Stop 3”)

// Moving averages
//sma20 = sma(close, 20)
//sma40 = sma(close, 40)
//ema40 = ema(close, 40)
//ema144 = ema(close,144)
// Slope calculations
//changeSMA20 = change(sma20, 1)
//changeSMA40 = change(sma40, 1)
//slopeSMA20 = changeSMA20 / 1
//slopeSMA40 = changeSMA40 / 1
//rad2degree = 180 / 3.14159265359 // Pi constant
//slopeSMA20Degree = rad2degree * atan(slopeSMA20)
//slopeSMA40Degree = rad2degree * atan(slopeSMA40)

// Bars Back Calculation
//iBarsBack = input(defval=2, title=“Bars Back”, type=input.integer)
//sma2sample = sma(close, 20)
//slopeD20 = rad2degree * atan((sma2sample[1] - nz(sma2sample[iBarsBack])) / iBarsBack)

// CCI Condition
//cci5 = cci(close, 20)
//cci55=cci(close,5)
//cciCondition1 = (cci5[0] <= -99 or cci5[0] >= 99) or (cci5[1] <= -99 or cci5[1] >= 99)
//cciCondition2 = (cci55[0] <= -99 or cci55[0] >= 99) or (cci55[1] <= -99 or cci55[1] >= 99)
//cciCondition22= (cciCondition1 or cciCondition2)
// Touch Conditions
//touchConditionBottom1 = (low[1] <= sma20[1] or high[1] <= sma20[1]) or (low[0] <= sma20[0] or high[0] <= sma20[0])
///touchConditionBottom2 = close[1] >= sma40[1]

// SMA and slope conditions
//smaSCondition = sma20[1] >= sma40[1]
//slopeSMA20Condition = slopeSMA20Degree > 0
//slopeSMA40Condition = slopeSMA40Degree > 0

// Final condition
//inalResult = cciCondition22 and touchConditionBottom1 and touchConditionBottom2 and smaSCondition and slopeSMA20Condition and slopeSMA40Condition and (bullishFractal and bearishFractal)
//x = finalResult ? 1 : 0
//plot(x, title=“BULLISH”, color=color.green, linewidth=4)

//validSignal = x

// Alerts
//alertcondition(x, title=‘PDP Alert’, message=‘PUMP DETECTION PROGRAM’)
//plot(x, title=“BULLISH”, color=color.green, linewidth=4)

// Plot First MACD (faithfully structured)
plotColor1 = currMacd1 > 0 ? currMacd1 > prevMacd1 ? color.lime : color.green : currMacd1 < prevMacd1 ? color.maroon : color.red
plot(currMacd1, style=plot.style_columns, transp=20, color=plotColor1, linewidth=3, title=“MACD Bars 1”)
plot(signal1, color=color.white, transp=0, title=“MACD Signal 1”)

// Plot Second MACD (faithfully structured)
plotColor2 = currMacd2 > 0 ? currMacd2 > prevMacd2 ? color.blue : color.aqua : currMacd2 < prevMacd2 ? color.purple : color.fuchsia
plot(currMacd2, style=plot.style_columns, transp=20, color=plotColor2, linewidth=3, title=“MACD Bars 2”)
plot(signal2, color=color.yellow, transp=0, title=“MACD Signal 2”)

//one=x and ((currMacd20 and prevMacd2>0 ) and (currMacd1>prevMacd1 and currMacd1>0 and prevMacd1>0))
//two = x and ((currMacd1 > prevMacd1) and (currMacd2 > prevMacd2) and (currMacd2[1] < prevMacd2[1]))
//three = x and (currMacd2>prevMacd2 and currMacd2[1]<prevMacd2[1])
//four = (currMacd1 > 0 and prevMacd1 > 0 and currMacd2 > 0 and prevMacd2 > 0) and (currMacd2 > prevMacd2)
//four1 = (currMacd1 > prevMacd1) and (currMacd1[1] < prevMacd1[1])
//fourth = x and (four and four1)
//fifth = (currMacd2 > 0 and prevMacd2 > 0 and currMacd1<0 and prevMacd1<0)
//fifth1= (currMacd1>prevMacd1) and (currMacd1[1]<prevMacd1[1])
//fifth11 = x and (fifth1 and fifth)
//tt = ((currMacd1 > prevMacd1) and (currMacd2 > prevMacd2) and (currMacd2[1] < prevMacd2[1]) and(currMacd1[1] < prevMacd1[1]))
//f3 = (currMacd1>prevMacd1 and currMacd2<prevMacd2)
//f33 = (currMacd2[1]>prevMacd2[1] )
//f34 = (currMacd2>0 and prevMacd2>0 and currMacd2[1]>0 and prevMacd2[1] >0)
//f35 = (currMacd1<0 and prevMacd1<0)
//fff = (f3 and f33 and f34 and f35 )
//sixth = (x and fff)
//god = (x and currMacd2<0 )
//sixth = x and ((currMacd1>prevMacd1 and currMacd2<prevMacd2) and (currMacd1 < 0 and currMacd2 < 0 ))
//confirmedSignal = one or two or three or fourth or fifth11 or sixth /// confirmedSignal = nz(confirmedSignal, 0) // Ensures valid calculation
//confirmedSignal1 =( x and tt )
//conf = fff
//godf = god
//kijunSen = (high[26] + low[26]) / 2
//bullishKijunCrossover = crossover(close, kijunSen)
//bearishKijunCrossover = crossunder(close, kijunSen)

//confirmedSignal2 = confirmedSignal and (bullishKijunCrossover or bearishKijunCrossover)
//plot(confirmedSignal ? 1 : na, title=“Confirmed Signal”, color=color.green, linewidth=4)
//plotshape(confirmedSignal , location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, title=“MACD Confirmed Signal”)
//plot(confirmedSignal1 ? 1 : na , title=“Confirmed Signal”, color=color.green, linewidth=4)
//plotshape(confirmedSignal1, location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, title=“MACD Confirmed Signal”)
//plot(conf ? 1 : na , title=“Confirmed Signal”, color=color.green, linewidth=4)
//plotshape(conf, location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, title=“MACD Confirmed Signal”)
//plot(godf ? 1 : na , title=“Confirmed Signal”, color=color.green, linewidth=4)
//plotshape(godf, location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, title=“MACD Confirmed Signal”)

///currMacd2<prevMacd2
//currMacd1>prevMacd1
//currMacd20
//currMacd1>prevMacd1<0

// :pushpin: MACD Input Parameters
//fastMA1 = input(12, title=“Fast MA 1”)
//slowMA1 = input(26, title=“Slow MA 1”)
//fastMA2 = input(24, title=“Fast MA 2”)
//slowMA2 = input(52, title=“Slow MA 2”)
//signalLength = input(9, title=“Signal Length”, minval=1)
meanBars = input(10, title=“MACD Mean Bars”, minval=1) // User-defined mean MACD period

// :small_blue_diamond: MACD Calculations
//[currMacd1, _, _] = macd(close, fastMA1, slowMA1, 9)
//signal1 = sma(currMacd1, signalLength)

// Second MACD calculation
//[currMacd2, _, _] = macd(close, fastMA2, slowMA2, 9)
//signal2 = sma(currMacd2, signalLength)

// :small_blue_diamond: Mean MACD Calculations
meanMacd1 = sma(currMacd1, meanBars) // Mean MACD for first MACD
meanMacd2 = sma(currMacd2, meanBars) // Mean MACD for second MACD

// :small_blue_diamond: Define Colors Based on Zero Level
//plotColor1 = currMacd1 > 0 ? color.green : color.red
//plotColor2 = currMacd2 > 0 ? color.blue : color.purple
meanColor1 = meanMacd1 > 0 ? color.lime : color.orange
meanColor2 = meanMacd2 > 0 ? color.aqua : color.fuchsia

// :small_blue_diamond: Visualizations
plot(currMacd1, style=plot.style_columns, transp=20, color=plotColor1, linewidth=3, title=“MACD 1 Bars”)
plot(currMacd2, style=plot.style_columns, transp=20, color=plotColor2, linewidth=3, title=“MACD 2 Bars”)

// Mean MACD Lines for Better Trend Identification
plot(meanMacd1, color=meanColor1, linewidth=2, style=plot.style_stepline, title=“Mean MACD 1”)
plot(meanMacd2, color=meanColor2, linewidth=2, style=plot.style_stepline, title=“Mean MACD 2”)

// :small_blue_diamond: Signal Lines
plot(signal1, color=color.white, transp=0, title=“MACD Signal 1”)
plot(signal2, color=color.yellow, transp=0, title=“MACD Signal 2”)

// :small_blue_diamond: Crossover Conditions for Alerts
cross_macd1_macd2 = cross(meanMacd1, meanMacd2) // 1. MACD1 Mean crosses MACD2 Mean
cross_macd1_zero = crossover(meanMacd1, 0) // 2. MACD1 Mean crosses Zero Line
cross_macd2_zero = crossover(meanMacd2, 0) // 3. MACD2 Mean crosses Zero Line
cross_macd1_bar = crossover(meanMacd1, currMacd1) // 4. MACD1 Mean crosses MACD1 Bar
cross_macd2_bar = crossover(meanMacd2, currMacd2) // 5. MACD2 Mean crosses MACD2 Bar

// Background Coloring
bgcolor(cross_macd1_macd2 ? color.new(color.orange, 85) : na, title=“MACD1 crosses MACD2”)
plotshape(cross_macd1_macd2, location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, title=“MEAN CROSS”)
bgcolor(cross_macd1_zero ? color.new(color.green, 85) : na, title=“MACD1 crosses Zero”)
bgcolor(cross_macd2_zero ? color.new(color.blue, 85) : na, title=“MACD2 crosses Zero”)
bgcolor(cross_macd1_bar ? color.new(color.purple, 85) : na, title=“MACD1 crosses MACD1 Bar”)
bgcolor(cross_macd2_bar ? color.new(color.red, 85) : na, title=“MACD2 crosses MACD2 Bar”)
// :small_blue_diamond: Combine All Alerts into One Condition
combinedAlert = (cross_macd1_macd2 or cross_macd1_zero or cross_macd2_zero or cross_macd1_bar or cross_macd2_bar)

plot(combinedAlert ? 1 : na, title=“BULLISHfractal”, color=color.green, linewidth=4)
//alertcondition(combinedAlert, title=“MACD Combined Alert”, message=“MACD crossover detected with fractal confirmation!”)
alertcondition(combinedAlert, title=‘X MACD FRACTAL PDP&MEANCROSS’, message=‘X MACD FRACTAL PDP&MEAN CROSS’)
alertcondition(cross_macd1_macd2 or cross_macd1_zero or cross_macd2_zero , title=‘X2 MEANC FRACTAL PDP&MEANCROSS’, message=‘X2 MACDC FRACTAL PDP&MEAN CROSS’)

// :small_blue_diamond: Visualization
plot(meanMacd1, color=color.lime, linewidth=2, title=“Mean MACD 1”)
plot(meanMacd2, color=color.orange, linewidth=2, title=“Mean MACD 2”)
plot(currMacd1, style=plot.style_columns, color=color.green, title=“MACD Bars 1”)
plot(currMacd2, style=plot.style_columns, color=color.blue, title=“MACD Bars 2”)

macdScore = 0
macdScore := meanMacd1 > meanMacd2 ? macdScore + 1 : macdScore
macdScore := meanMacd1 > 0 ? macdScore + 1 : macdScore
macdScore := currMacd1 > meanMacd1 ? macdScore + 1 : macdScore
macdSignal = macdScore >= 2

atrBiasScore = 0
atrBiasScore := close > atrTrailingStop1 ? atrBiasScore + 1 : atrBiasScore
atrBiasScore := close > atrTrailingStop2 ? atrBiasScore + 1 : atrBiasScore
atrBiasScore := close > atrTrailingStop3 ? atrBiasScore + 1 : atrBiasScore
atrSignal = atrBiasScore >= 2

emaTrendUp = ema(close, 21) > ema(close, 55)
fractalScore = 0
fractalScore := bullishFractal and emaTrendUp ? fractalScore + 2 : fractalScore
fractalSignal = fractalScore >= 2

sarFlip = sarValue > close and sarValue[1] < close[1]
volatilityGate = atr(14) > sma(atr(14), 20)
sarScore = sarFlip and volatilityGate ? 2 : 0
sarSignal = sarScore >= 2

metaScore = macdScore + atrBiasScore + fractalScore + sarScore
metaSignal = metaScore >= 5

plotshape(metaSignal, location=location.belowbar, color=color.green, style=shape.labelup, title=“MetaSignal”)
bgcolor(metaSignal ? color.new(color.green, 85) : na, title=“MetaSignal Background”)

alertcondition(metaSignal, title=“MetaSignal Alert”, message=“High-conviction confluence detected”)

// :small_blue_diamond: Detect First Bar of MetaSignal Activation (Background Change Trigger)
metaSignalChange = metaSignal and not metaSignal[1]

// :small_blue_diamond: Alert for First Background Color Activation
alertcondition(metaSignalChange, title=“MetaSignal Background Flip”, message=“MACD MEAN1 metasignal background just activated!”)
// :small_blue_diamond: MetaSignal Persistence Tracker
metaSignalPersistence = 0
metaSignalPersistence := metaSignal ? nz(metaSignalPersistence[1]) + 1 : 0

// :small_blue_diamond: Optional: Smoothed MetaSignal
metaSignalSmoothed = sma(metaSignal ? 1 : 0, 3) >= 0.66

// :small_blue_diamond: Optional Visuals
plot(metaSignalPersistence, title=“MetaSignal Persistence”, color=color.orange, linewidth=2)
bgcolor(metaSignalPersistence >= 3 ? color.new(color.green, 85) : na, title=“Persistent MetaSignal Background”)
alertcondition(metaSignalPersistence >= 3, title=“Persistent MetaSignal Alert”, message=“MACD MEAN1 metasignal has held for 3+ bars. High-conviction zone confirmed.”)
//metaSignalPersistence = metaSignal ? nz(metaSignalPersistence[1]) + 1 : 0
//metaSignalSmoothed = sma(metaSignal ? 1 : 0, 3) >= 0.66

1 لایک کرده

این مکدی 2 گانه مشتمل بر 352 خط پاین اسکریپت نقش تک تیز انداز سپاه شما در این نبرد اقتصادی رو داره که از چند دقیقه دیگه توضیح کامل اون تقدیم خواهد شد .

1 لایک کرده

سلام و عرض ادب خدمت همه

من قبلا پیگیر ایجاد کروه برای این متد بودم

ولی بخاطر مشکلات پیش اومده ی شخصی مدتی کلا وقت آزاد نداشتم که جدی پیگیری کنم

با توجه به آزاد شدن وقت احتمالا تا چند روز بعد مجدد شروع کنیم به ایجاد یک کامیونیتی

سلام و عرض ادب

به نظرم ایده ی شما وقتی خود ایران بروکر هست دقیقا شبیه اختراع مجدد چرخه . ممنون میشم اگر فضای پست ها رو طبق اعلام قبلی مختص سوال و جواب در خصوص همین استراتژی نگه دارید دوستان .

1 لایک کرده

ایران برورکر برای انتقال این دست از کد ها مشکل داره
اعداد رو فرسی میکنه
کاراکتر های ASCI رو عوض میکنه
البته میشه درستش کرد با هوش مصنوعی
بهتره خود اندیکاتور در تریدینگ ویو پالیش بشه

خب این یه مورد جدیده ، شاید بشه از ایران بروکر خواست این موضوع رو درست کنند . حقیقتش بنا بر یه سری اعتقادات شخصی هیچ وقت نخواستم تریدر غیر ایرانی از کروکوبات استفاده کنه . ایمیلتون رو ارسال کنید براتون شخصی بفرستم چطوره ؟

از همه ی دوستان هم عاجزانه درخواست دارم از انتشار در تریدینگ ویو به حکم وجدان خودشون و ملیتی که در شناسنامه براشون ثبت شده از اینکار خودداری کنند .

نصف ایران رو همین چشم آبی ها با قحطی توی جنگ جهانی به کشتن دادن ، من شک ندارم که از همه ی ما یه قوم و خویشی در میان کشتگان بوده . به احترام روح اون رفتگان اجازه بدید اگر قراره این سیستم اورده ای داشته باشه سر سفره ی یه خانواده ی ایرانی باشه .

خیلی ها خیلی روش میسازند اما فرق کروکوبات در چند نکته ی کوچیکه که خدمتتون عرض میکنم :slight_smile:

بر اساس مستندات برداشت تا سال 2025 مجموعا 9.5 واحد بیتکوین و یکصد و چهار هزار دلار سند برداشت از بروکر لایت فایننس تنها بکمک همین سیستم محقق شده .

مقدار سود برداشتی به حدی رسید که نامه ای از بروکر دریافت شد ، جلسه ای در ایران ست شد و من تا سال 2022 مدیر منطقه ی منا در لایت فایننس شدم . منا میشه خاور میانه و شمال افریقا .

اگر آورده ی یه روش مهم باشه کروکوبات اورده ی خودش رو نشون داده . من نه شرکتی ثبت کردم نه نیرویی استخدام . چیزی که نگرانم میکنه این طرز فکر ما ایرا نی هاست که اگه چیزی خوب باشه رایگان منتشر نمیشه . من وظیفه ی خودم رو انجام دادم با قیش با خدا و بنده هاش . ممکنه با همین کد اپلیکیشن ساخته شه و با یه تیم بازاریابی و شرکت تو فلان محله و تلفن 4 رقمی جیب مردم زده شه . نمیدونم کارم درست بود یا غلط امیدوارم دست کج هر چی سیگنال فروش و دوره بزاره قطع شه و این مهم فقط با همیاری تک تک ما انجام خواهد شد .

2 لایک کرده

میتونیم فایل متا براش بسازیم
یه ورودی از کاربر بخوایم
اگر مقدار ورودی برابر با گچ پژ بود کار کنه
SIUUU

1 لایک کرده