0% found this document useful (0 votes)
62 views20 pages

SK-Trading ABC Indicator Script

Trade Indicator
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)
62 views20 pages

SK-Trading ABC Indicator Script

Trade Indicator
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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.

0
at [Link]
// Join our channel for more free tools: [Link]

//@version=6
indicator("SK-Trading ABC - Stefan Style ULTIMATE", overlay=true,
max_boxes_count=150, max_lines_count=200, max_labels_count=120)

// ============================================================================
// INPUTS
// ============================================================================
swingLength = [Link](10, "Swing Length", minval=5, maxval=30, group="Struktur")
showProjection = [Link](true, "Zeige Ziel-Box C (1.618-2.0)", group="Display")
showActivation = [Link](true, "Zeige Aktivierungslinie", group="Display")
showRMultiples = [Link](true, "Zeige R-Multiples (2R, 3R)", group="Display")
showGKL = [Link](true, "Zeige GKL-Box nach C", group="Display")

// Trade Settings
stopLossPips = [Link](20, "Stop Loss (Pips)", minval=5, maxval=100,
group="Trade")
minRR = [Link](2.5, "Mindest RR für Trade", minval=1.0, maxval=5.0, step=0.5,
group="Trade")
maxSequences = [Link](1, "Max Sequenzen", minval=1, maxval=5, group="Display")

// SK-System Spezifisch
useCloseActivation = [Link](true, "✅ Close-basierte Aktivierung", group="SK
System")
showGKLPreActivation = [Link](true, "Zeige GKL-Zone (0→A) vor Aktivierung",
group="SK System")
showBCZone = [Link](true, "Zeige BC-Zone (B→A2) nach Aktivierung", group="SK
System")

// ============================================================================
// PIVOT DETECTION
// ============================================================================
var array<float> confirmedHighs = [Link]<float>()
var array<int> confirmedHighBars = [Link]<int>()
var array<float> confirmedLows = [Link]<float>()
var array<int> confirmedLowBars = [Link]<int>()

pivotHigh = [Link](high, swingLength, swingLength)


if not na(pivotHigh)
[Link](confirmedHighs, pivotHigh)
[Link](confirmedHighBars, bar_index - swingLength)
if [Link](confirmedHighs) > 20
[Link](confirmedHighs)
[Link](confirmedHighBars)

pivotLow = [Link](low, swingLength, swingLength)


if not na(pivotLow)
[Link](confirmedLows, pivotLow)
[Link](confirmedLowBars, bar_index - swingLength)
if [Link](confirmedLows) > 20
[Link](confirmedLows)
[Link](confirmedLowBars)

// ============================================================================
// SEQUENZ STRUKTUR (MIT ALERT-TRACKING)
// ============================================================================
type Sequence
float point0
float pointA
float pointB
float pointC
int bar0
int barA
int barB
int barC
string trend
bool activated
bool cReached
int setupBar
float a2High
int a2Bar
bool gklActive
bool locked
bool alertActivated
bool alertEntry1
bool alertEntry2
bool alertEntry3
bool alertEntry4
bool alertSL
bool alertTP1
bool alertTP2
bool alertTP3
bool alertGKLEntry1
bool alertGKLEntry2
bool alertGKLEntry3
bool alertGKLEntry4

var array<Sequence> sequences = [Link]<Sequence>()

// ============================================================================
// ABC STRUKTUR ERKENNUNG
// ============================================================================
var bool newSetup = false

if [Link](confirmedHighs) >= 3 and [Link](confirmedLows) >= 3

// BULLISH: 0 (Tief) -> A (Hoch) -> B (Tief, höher als 0)


if [Link](confirmedLows) >= 3 and [Link](confirmedHighs) >= 2
lastLow1 = [Link](confirmedLows, [Link](confirmedLows) - 2)
lastLow2 = [Link](confirmedLows, [Link](confirmedLows) - 1)
lastLowBar1 = [Link](confirmedLowBars, [Link](confirmedLowBars) - 2)
lastLowBar2 = [Link](confirmedLowBars, [Link](confirmedLowBars) - 1)

lastHigh2 = [Link](confirmedHighs, [Link](confirmedHighs) - 1)


lastHighBar2 = [Link](confirmedHighBars, [Link](confirmedHighBars) -
1)

retrace = (lastHigh2 - lastLow2) / (lastHigh2 - lastLow1)

if lastLowBar1 < lastHighBar2 and lastHighBar2 < lastLowBar2 and lastLow2 >
lastLow1 and retrace >= 0.382 and retrace <= 0.786
seq = [Link](
point0 = lastLow1,
pointA = lastHigh2,
pointB = lastLow2,
pointC = na,
bar0 = lastLowBar1,
barA = lastHighBar2,
barB = lastLowBar2,
barC = na,
trend = "BULLISH",
activated = false,
cReached = false,
setupBar = lastLowBar2,
a2High = na,
a2Bar = na,
gklActive = false,
locked = false,
alertActivated = false,
alertEntry1 = false,
alertEntry2 = false,
alertEntry3 = false,
alertEntry4 = false,
alertSL = false,
alertTP1 = false,
alertTP2 = false,
alertTP3 = false,
alertGKLEntry1 = false,
alertGKLEntry2 = false,
alertGKLEntry3 = false,
alertGKLEntry4 = false)

bool exists = false


if [Link](sequences) > 0
for i = 0 to [Link](sequences) - 1
s = [Link](sequences, i)
if [Link] == [Link] and [Link] == [Link]
exists := true
break

if not exists
[Link](sequences, seq)
newSetup := true
if [Link](sequences) > maxSequences
[Link](sequences)

// BEARISH: 0 (Hoch) -> A (Tief) -> B (Hoch, tiefer als 0)


if [Link](confirmedHighs) >= 3 and [Link](confirmedLows) >= 2
lastHigh1 = [Link](confirmedHighs, [Link](confirmedHighs) - 2)
lastHigh2 = [Link](confirmedHighs, [Link](confirmedHighs) - 1)
lastHighBar1 = [Link](confirmedHighBars, [Link](confirmedHighBars) -
2)
lastHighBar2 = [Link](confirmedHighBars, [Link](confirmedHighBars) -
1)

lastLow2 = [Link](confirmedLows, [Link](confirmedLows) - 1)


lastLowBar2 = [Link](confirmedLowBars, [Link](confirmedLowBars) - 1)

retrace = (lastHigh2 - lastLow2) / (lastHigh1 - lastLow2)

if lastHighBar1 < lastLowBar2 and lastLowBar2 < lastHighBar2 and lastHigh2


< lastHigh1 and retrace >= 0.382 and retrace <= 0.786
seq = [Link](
point0 = lastHigh1,
pointA = lastLow2,
pointB = lastHigh2,
pointC = na,
bar0 = lastHighBar1,
barA = lastLowBar2,
barB = lastHighBar2,
barC = na,
trend = "BEARISH",
activated = false,
cReached = false,
setupBar = lastHighBar2,
a2High = na,
a2Bar = na,
gklActive = false,
locked = false,
alertActivated = false,
alertEntry1 = false,
alertEntry2 = false,
alertEntry3 = false,
alertEntry4 = false,
alertSL = false,
alertTP1 = false,
alertTP2 = false,
alertTP3 = false,
alertGKLEntry1 = false,
alertGKLEntry2 = false,
alertGKLEntry3 = false,
alertGKLEntry4 = false)

bool exists = false


if [Link](sequences) > 0
for i = 0 to [Link](sequences) - 1
s = [Link](sequences, i)
if [Link] == [Link] and [Link] == [Link]
exists := true
break

if not exists
[Link](sequences, seq)
newSetup := true
if [Link](sequences) > maxSequences
[Link](sequences)

// ============================================================================
// AKTIVIERUNGSLOGIK & A2 ERKENNUNG (MIT LOCKING!)
// ============================================================================
if [Link](sequences) > 0
i = 0
while i < [Link](sequences)
seq = [Link](sequences, i)
shouldRemove = false

// AKTIVIERUNG: A-Break mit Close


if not [Link]
if useCloseActivation
if [Link] == "BULLISH" and close > [Link] and close[1] <=
[Link]
[Link] := true
[Link] := true
seq.a2High := high
seq.a2Bar := bar_index
[Link](sequences, i, seq)

// ALERT: AKTIVIERT
if not [Link]
[Link] := true
alert("🚀 " + [Link] + " AKTIVIERT!\n📍 BC-ZONE AKTIV
(B→A2)\nSetze Limit Orders:\nEntry: " + [Link]([Link] +
[Link]([Link] - [Link]) * 0.5, [Link]) + "\nSL: " +
[Link]([Link] - ([Link] * 10 * stopLossPips), [Link]),
alert.freq_once_per_bar)
[Link](sequences, i, seq)

else if [Link] == "BEARISH" and close < [Link] and close[1]


>= [Link]
[Link] := true
[Link] := true
seq.a2High := low
seq.a2Bar := bar_index
[Link](sequences, i, seq)

// ALERT: AKTIVIERT
if not [Link]
[Link] := true
alert("🚀 " + [Link] + " AKTIVIERT!\n📍 BC-ZONE AKTIV
(B→A2)\nSetze Limit Orders:\nEntry: " + [Link]([Link] -
[Link]([Link] - [Link]) * 0.5, [Link]) + "\nSL: " +
[Link]([Link] + ([Link] * 10 * stopLossPips), [Link]),
alert.freq_once_per_bar)
[Link](sequences, i, seq)

// GKL-ZONE ALERTS (VOR AKTIVIERUNG - 0→A)


if not [Link]
range0A = [Link]([Link] - seq.point0)

if [Link] == "BULLISH"
gklEntry1 = seq.point0 + range0A * 0.500
gklEntry2 = seq.point0 + range0A * 0.559
gklEntry3 = seq.point0 + range0A * 0.618
gklEntry4 = seq.point0 + range0A * 0.667

if not seq.alertGKLEntry1 and low <= gklEntry1


seq.alertGKLEntry1 := true
alert("🟢 GKL ENTRY 1 (0.5) ERREICHT!\nPreis: " +
[Link](gklEntry1, [Link]) + "\n⚠️ Aggressiver Entry - Setup noch
nicht aktiviert!", alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry2 and low <= gklEntry2
seq.alertGKLEntry2 := true
alert("🟢 GKL ENTRY 2 (0.559) ERREICHT!\nPreis: " +
[Link](gklEntry2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry3 and low <= gklEntry3
seq.alertGKLEntry3 := true
alert("🟢 GKL ENTRY 3 (0.618) ERREICHT!\nPreis: " +
[Link](gklEntry3, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry4 and low <= gklEntry4
seq.alertGKLEntry4 := true
alert("🟢 GKL ENTRY 4 (0.667) ERREICHT!\nPreis: " +
[Link](gklEntry4, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
else
gklEntry1 = seq.point0 - range0A * 0.500
gklEntry2 = seq.point0 - range0A * 0.559
gklEntry3 = seq.point0 - range0A * 0.618
gklEntry4 = seq.point0 - range0A * 0.667

if not seq.alertGKLEntry1 and high >= gklEntry1


seq.alertGKLEntry1 := true
alert("🔴 GKL ENTRY 1 (0.5) ERREICHT!\nPreis: " +
[Link](gklEntry1, [Link]) + "\n⚠️ Aggressiver Entry - Setup noch
nicht aktiviert!", alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry2 and high >= gklEntry2
seq.alertGKLEntry2 := true
alert("🔴 GKL ENTRY 2 (0.559) ERREICHT!\nPreis: " +
[Link](gklEntry2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry3 and high >= gklEntry3
seq.alertGKLEntry3 := true
alert("🔴 GKL ENTRY 3 (0.618) ERREICHT!\nPreis: " +
[Link](gklEntry3, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertGKLEntry4 and high >= gklEntry4
seq.alertGKLEntry4 := true
alert("🔴 GKL ENTRY 4 (0.667) ERREICHT!\nPreis: " +
[Link](gklEntry4, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)

// A2 UPDATE: Neues Hoch nach Aktivierung (NUR wenn nicht locked!)


if [Link] and not [Link] and not [Link]
if [Link] == "BULLISH" and high > seq.a2High
seq.a2High := high
seq.a2Bar := bar_index
[Link](sequences, i, seq)
else if [Link] == "BEARISH" and low < seq.a2High
seq.a2High := low
seq.a2Bar := bar_index
[Link](sequences, i, seq)

// BC-ENTRY ALERTS (NACH AKTIVIERUNG - B→A2)


if [Link] and not na(seq.a2High)
rangeBA2 = [Link](seq.a2High - [Link])

if [Link] == "BULLISH"
entry1 = [Link] + rangeBA2 * 0.500
entry2 = [Link] + rangeBA2 * 0.559
entry3 = [Link] + rangeBA2 * 0.618
entry4 = [Link] + rangeBA2 * 0.667

if not seq.alertEntry1 and low <= entry1


seq.alertEntry1 := true
alert("🎯 BC-ENTRY 1 (0.5) ERREICHT!\nPreis: " +
[Link](entry1, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry2 and low <= entry2
seq.alertEntry2 := true
alert("🎯 BC-ENTRY 2 (0.559) ERREICHT!\nPreis: " +
[Link](entry2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry3 and low <= entry3
seq.alertEntry3 := true
alert("🎯 BC-ENTRY 3 (0.618) ERREICHT!\nPreis: " +
[Link](entry3, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry4 and low <= entry4
seq.alertEntry4 := true
alert("🎯 BC-ENTRY 4 (0.667) ERREICHT!\nPreis: " +
[Link](entry4, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
else
entry1 = [Link] - rangeBA2 * 0.500
entry2 = [Link] - rangeBA2 * 0.559
entry3 = [Link] - rangeBA2 * 0.618
entry4 = [Link] - rangeBA2 * 0.667

if not seq.alertEntry1 and high >= entry1


seq.alertEntry1 := true
alert("🎯 BC-ENTRY 1 (0.5) ERREICHT!\nPreis: " +
[Link](entry1, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry2 and high >= entry2
seq.alertEntry2 := true
alert("🎯 BC-ENTRY 2 (0.559) ERREICHT!\nPreis: " +
[Link](entry2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry3 and high >= entry3
seq.alertEntry3 := true
alert("🎯 BC-ENTRY 3 (0.618) ERREICHT!\nPreis: " +
[Link](entry3, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertEntry4 and high >= entry4
seq.alertEntry4 := true
alert("🎯 BC-ENTRY 4 (0.667) ERREICHT!\nPreis: " +
[Link](entry4, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)

// INVALIDIERUNG: SL durchbrochen
if [Link] and not [Link]
pipValue = [Link] * 10
slDistance = stopLossPips * pipValue
sl = [Link] == "BULLISH" ? [Link] - slDistance : [Link] +
slDistance

if [Link] == "BULLISH" and low <= sl


if not [Link]
[Link] := true
alert("🛑 STOP LOSS GETROFFEN!\nPreis: " + [Link](sl,
[Link]) + "\nSetup invalidiert!", alert.freq_once_per_bar)
shouldRemove := true
else if [Link] == "BEARISH" and high >= sl
if not [Link]
[Link] := true
alert("🛑 STOP LOSS GETROFFEN!\nPreis: " + [Link](sl,
[Link]) + "\nSetup invalidiert!", alert.freq_once_per_bar)
shouldRemove := true

// TP ALERTS
if [Link] and not [Link]
move0A = [Link]([Link] - seq.point0)
tp1 = [Link] == "BULLISH" ? [Link] + move0A * 1.618 : [Link]
- move0A * 1.618
tp2 = [Link] == "BULLISH" ? [Link] + move0A * 1.809 : [Link]
- move0A * 1.809
tp3 = [Link] == "BULLISH" ? [Link] + move0A * 2.000 : [Link]
- move0A * 2.000

if [Link] == "BULLISH"
if not seq.alertTP1 and high >= tp1
seq.alertTP1 := true
alert("💰 TAKE PROFIT 1 (1.618) ERREICHT!\nPreis: " +
[Link](tp1, [Link]) + "\n✅ Move SL to Break-Even!",
alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertTP2 and high >= tp2
seq.alertTP2 := true
alert("💰 TAKE PROFIT 2 (1.809) ERREICHT!\nPreis: " +
[Link](tp2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertTP3 and high >= tp3
seq.alertTP3 := true
alert("💰💰 TAKE PROFIT 3 (2.0) ERREICHT!\nPreis: " +
[Link](tp3, [Link]) + "\n🎉 FULL TARGET!", alert.freq_once_per_bar)
[Link](sequences, i, seq)
else
if not seq.alertTP1 and low <= tp1
seq.alertTP1 := true
alert("💰 TAKE PROFIT 1 (1.618) ERREICHT!\nPreis: " +
[Link](tp1, [Link]) + "\n✅ Move SL to Break-Even!",
alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertTP2 and low <= tp2
seq.alertTP2 := true
alert("💰 TAKE PROFIT 2 (1.809) ERREICHT!\nPreis: " +
[Link](tp2, [Link]), alert.freq_once_per_bar)
[Link](sequences, i, seq)
if not seq.alertTP3 and low <= tp3
seq.alertTP3 := true
alert("💰💰 TAKE PROFIT 3 (2.0) ERREICHT!\nPreis: " +
[Link](tp3, [Link]) + "\n🎉 FULL TARGET!", alert.freq_once_per_bar)
[Link](sequences, i, seq)

// PUNKT C ERREICHT (1.618 Extension)


if [Link] and not [Link] and not shouldRemove
move0A = [Link]([Link] - seq.point0)
target1618 = [Link] == "BULLISH" ? [Link] + move0A * 1.618 :
[Link] - move0A * 1.618

if [Link] == "BULLISH" and high >= target1618


[Link] := true
[Link] := high
[Link] := bar_index
[Link] := true
[Link](sequences, i, seq)
else if [Link] == "BEARISH" and low <= target1618
[Link] := true
[Link] := low
[Link] := bar_index
[Link] := true
[Link](sequences, i, seq)

if shouldRemove
[Link](sequences, i)
else
i := i + 1

// ============================================================================
// ✅ SK ORIGINAL: ENTRY VON B→A2 (BC-ZONE)!
// ============================================================================
f_calculateEntryLevels(seq) =>
entries = [Link]<float>()

if not na(seq.a2High)
rangeBA2 = [Link](seq.a2High - [Link])

if [Link] == "BULLISH"
[Link](entries, [Link] + rangeBA2 * 0.500)
[Link](entries, [Link] + rangeBA2 * 0.559)
[Link](entries, [Link] + rangeBA2 * 0.618)
[Link](entries, [Link] + rangeBA2 * 0.667)
else
[Link](entries, [Link] - rangeBA2 * 0.500)
[Link](entries, [Link] - rangeBA2 * 0.559)
[Link](entries, [Link] - rangeBA2 * 0.618)
[Link](entries, [Link] - rangeBA2 * 0.667)

entries

// ============================================================================
// GKL-ENTRY-LEVELS (0→A) VOR AKTIVIERUNG
// ============================================================================
f_calculateGKLEntryLevels(seq) =>
entries = [Link]<float>()

range0A = [Link]([Link] - seq.point0)

if [Link] == "BULLISH"
[Link](entries, seq.point0 + range0A * 0.500)
[Link](entries, seq.point0 + range0A * 0.559)
[Link](entries, seq.point0 + range0A * 0.618)
[Link](entries, seq.point0 + range0A * 0.667)
else
[Link](entries, seq.point0 - range0A * 0.500)
[Link](entries, seq.point0 - range0A * 0.559)
[Link](entries, seq.point0 - range0A * 0.618)
[Link](entries, seq.point0 - range0A * 0.667)

entries

// ============================================================================
// CONSUMED ZONES TRACKING
// ============================================================================
var array<float> consumedEntries = [Link]<float>()
// ============================================================================
// ZEICHNE ALLE SEQUENZEN
// ============================================================================
var array<line> allLines = [Link]<line>()
var array<label> allLabels = [Link]<label>()
var array<box> allBoxes = [Link]<box>()

if newSetup
if [Link](allLines) > 0
for i = 0 to [Link](allLines) - 1
[Link]([Link](allLines, i))
if [Link](allLabels) > 0
for i = 0 to [Link](allLabels) - 1
[Link]([Link](allLabels, i))
if [Link](allBoxes) > 0
for i = 0 to [Link](allBoxes) - 1
[Link]([Link](allBoxes, i))
[Link](allLines)
[Link](allLabels)
[Link](allBoxes)
[Link](consumedEntries)

if [Link] and [Link](sequences) > 0


for seqIdx = 0 to [Link](sequences) - 1
seq = [Link](sequences, seqIdx)

waveColor = [Link] == "BULLISH" ? [Link]([Link], 30) :


[Link]([Link], 30)
activatedColor = [Link] ? [Link]([Link], 0) : waveColor

// Wellen 0->A->B
line0A = [Link](seq.bar0, seq.point0, [Link], [Link],
color=waveColor, width=2, style=line.style_solid)
lineAB = [Link]([Link], [Link], [Link], [Link],
color=waveColor, width=2, style=line.style_solid)
[Link](allLines, line0A)
[Link](allLines, lineAB)

// Labels (VERBESSERT - größer + Preis)


lbl0 = [Link](seq.bar0, seq.point0, "0\n" + [Link](seq.point0,
[Link]), style=label.style_circle, color=waveColor, textcolor=[Link],
size=[Link])
lblA = [Link]([Link], [Link], "A\n" + [Link]([Link],
[Link]), style=label.style_circle, color=activatedColor,
textcolor=[Link], size=[Link])
lblB = [Link]([Link], [Link], "B\n" + [Link]([Link],
[Link]), style=label.style_circle, color=waveColor, textcolor=[Link],
size=[Link])
[Link](allLabels, lbl0)
[Link](allLabels, lblA)
[Link](allLabels, lblB)

//
============================================================================
// GKL-BOX VOR AKTIVIERUNG (0→A)
//
============================================================================
if showGKLPreActivation and not [Link]
range0A = [Link]([Link] - seq.point0)

gklPre500 = [Link] == "BULLISH" ? seq.point0 + range0A * 0.500 :


seq.point0 - range0A * 0.500
gklPre559 = [Link] == "BULLISH" ? seq.point0 + range0A * 0.559 :
seq.point0 - range0A * 0.559
gklPre618 = [Link] == "BULLISH" ? seq.point0 + range0A * 0.618 :
seq.point0 - range0A * 0.618
gklPre667 = [Link] == "BULLISH" ? seq.point0 + range0A * 0.667 :
seq.point0 - range0A * 0.667

gklPreTop = [Link] == "BULLISH" ? gklPre667 : gklPre500


gklPreBot = [Link] == "BULLISH" ? gklPre500 : gklPre667

gklPreBox = [Link](left=[Link], top=gklPreTop, right=bar_index + 20,


bottom=gklPreBot, border_color=[Link]([Link], 50),
bgcolor=[Link]([Link], 90), border_width=2, extend=[Link])
[Link](allBoxes, gklPreBox)

lineGKLPre500 = [Link]([Link], gklPre500, bar_index + 15,


gklPre500, color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKLPre559 = [Link]([Link], gklPre559, bar_index + 15,
gklPre559, color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKLPre618 = [Link]([Link], gklPre618, bar_index + 15,
gklPre618, color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKLPre667 = [Link]([Link], gklPre667, bar_index + 15,
gklPre667, color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)

[Link](allLines, lineGKLPre500)
[Link](allLines, lineGKLPre559)
[Link](allLines, lineGKLPre618)
[Link](allLines, lineGKLPre667)

lblGKLPre500 = [Link](bar_index + 2, gklPre500, "0.5",


style=label.style_label_left, color=[Link]([Link], 30),
textcolor=[Link], size=[Link])
lblGKLPre559 = [Link](bar_index + 2, gklPre559, "0.559",
style=label.style_label_left, color=[Link]([Link], 30),
textcolor=[Link], size=[Link])
lblGKLPre618 = [Link](bar_index + 2, gklPre618, "0.618",
style=label.style_label_left, color=[Link]([Link], 30),
textcolor=[Link], size=[Link])
lblGKLPre667 = [Link](bar_index + 2, gklPre667, "0.667",
style=label.style_label_left, color=[Link]([Link], 30),
textcolor=[Link], size=[Link])

[Link](allLabels, lblGKLPre500)
[Link](allLabels, lblGKLPre559)
[Link](allLabels, lblGKLPre618)
[Link](allLabels, lblGKLPre667)

lblGKLPreTitle = [Link](bar_index + 10, (gklPreTop + gklPreBot) / 2,


"GKL-ZONE (0→A)\n⚠️ Aggressiv", style=label.style_label_left,
color=[Link]([Link], 20), textcolor=[Link], size=[Link])
[Link](allLabels, lblGKLPreTitle)
//
============================================================================
// ZIEL-BOX C (1.618-2.0 Extension)
//
============================================================================
if showProjection
move0A = [Link]([Link] - seq.point0)

target1618 = [Link] == "BULLISH" ? [Link] + move0A * 1.618 :


[Link] - move0A * 1.618
target2000 = [Link] == "BULLISH" ? [Link] + move0A * 2.000 :
[Link] - move0A * 2.000

targetTop = [Link] == "BULLISH" ? target2000 : target1618


targetBot = [Link] == "BULLISH" ? target1618 : target2000

goldColor = [Link](255, 215, 0)


targetBox = [Link](left=[Link], top=targetTop, right=bar_index + 40,
bottom=targetBot, border_color=[Link](goldColor, 40),
bgcolor=[Link](goldColor, 85), border_width=2, extend=[Link])
[Link](allBoxes, targetBox)

projColor = [Link] == "BULLISH" ? [Link](goldColor, 40) :


[Link]([Link], 40)

proj1618 = [Link]([Link], target1618, bar_index + 40, target1618,


color=projColor, width=2, style=line.style_solid, extend=[Link])
proj2000 = [Link]([Link], target2000, bar_index + 40, target2000,
color=projColor, width=2, style=line.style_solid, extend=[Link])

[Link](allLines, proj1618)
[Link](allLines, proj2000)

lbl1618 = [Link](bar_index + 25, target1618, "C (1.618)",


style=label.style_label_left, color=projColor, textcolor=[Link],
size=[Link])
lbl2000 = [Link](bar_index + 25, target2000, "2.0",
style=label.style_label_left, color=projColor, textcolor=[Link],
size=[Link])

[Link](allLabels, lbl1618)
[Link](allLabels, lbl2000)

//
============================================================================
// ✅ BC-ZONE: ENTRY-BOX VON B→A2! (HAUPTENTRY NACH AKTIVIERUNG)
//
============================================================================
if showBCZone and [Link] and not na(seq.a2High)
entryLevels = f_calculateEntryLevels(seq)

if [Link](entryLevels) == 4
fib500 = [Link](entryLevels, 0)
fib559 = [Link](entryLevels, 1)
fib618 = [Link](entryLevels, 2)
fib667 = [Link](entryLevels, 3)

entryTop = [Link] == "BULLISH" ? fib667 : fib500


entryBot = [Link] == "BULLISH" ? fib500 : fib667

// BC-BOX mit hellerer Farbe für bessere Sichtbarkeit


bcColor = [Link](0, 150, 255) // Hellblau
entryBox = [Link](left=seq.a2Bar, top=entryTop, right=bar_index +
20, bottom=entryBot, border_color=[Link](bcColor, 30),
bgcolor=[Link](bcColor, 85), border_width=3, extend=[Link])
[Link](allBoxes, entryBox)

// CONSUMED ZONES (graue Markierung)


boxHeight = [Link](entryTop - entryBot) * 0.05
for i = 0 to 3
entryLevel = [Link](entryLevels, i)
isConsumed = [Link] == "BULLISH" ? low <= entryLevel : high
>= entryLevel

if isConsumed and not [Link](consumedEntries,


entryLevel)
[Link](consumedEntries, entryLevel)
consumedTop = entryLevel + boxHeight
consumedBot = entryLevel - boxHeight
consumedBox = [Link](left=seq.a2Bar, top=consumedTop,
right=bar_index + 20, bottom=consumedBot, border_color=[Link]([Link], 50),
bgcolor=[Link]([Link], 80), border_width=2, extend=[Link])
[Link](allBoxes, consumedBox)

line500 = [Link](seq.a2Bar, fib500, bar_index + 15, fib500,


color=[Link](bcColor, 20), width=2, extend=[Link], style=line.style_solid)
line559 = [Link](seq.a2Bar, fib559, bar_index + 15, fib559,
color=[Link](bcColor, 20), width=2, extend=[Link], style=line.style_solid)
line618 = [Link](seq.a2Bar, fib618, bar_index + 15, fib618,
color=[Link](bcColor, 20), width=2, extend=[Link], style=line.style_solid)
line667 = [Link](seq.a2Bar, fib667, bar_index + 15, fib667,
color=[Link](bcColor, 20), width=2, extend=[Link], style=line.style_solid)
[Link](allLines, line500)
[Link](allLines, line559)
[Link](allLines, line618)
[Link](allLines, line667)

lbl500 = [Link](bar_index + 2, fib500, "BC 0.5",


style=label.style_label_left, color=[Link](bcColor, 20), textcolor=[Link],
size=[Link])
lbl559 = [Link](bar_index + 2, fib559, "BC 0.559",
style=label.style_label_left, color=[Link](bcColor, 20), textcolor=[Link],
size=[Link])
lbl618 = [Link](bar_index + 2, fib618, "BC 0.618",
style=label.style_label_left, color=[Link](bcColor, 20), textcolor=[Link],
size=[Link])
lbl667 = [Link](bar_index + 2, fib667, "BC 0.667",
style=label.style_label_left, color=[Link](bcColor, 20), textcolor=[Link],
size=[Link])

[Link](allLabels, lbl500)
[Link](allLabels, lbl559)
[Link](allLabels, lbl618)
[Link](allLabels, lbl667)

// ✅ BC-ZONE TITEL LABEL (WICHTIG!)


lblBCZone = [Link](bar_index + 10, (entryTop + entryBot) / 2, "📍
BC-ZONE (B→A2)\n✅ HAUPTENTRY", style=label.style_label_left,
color=[Link](bcColor, 10), textcolor=[Link], size=[Link],
textalign=text.align_left)
[Link](allLabels, lblBCZone)

// TRADE ROUTE ARROW


pipValue = [Link] * 10
slDistance = stopLossPips * pipValue
sl = [Link] == "BULLISH" ? [Link] - slDistance : [Link]
+ slDistance

entry1 = [Link](entryLevels, 0)
move0A = [Link]([Link] - seq.point0)
tp1 = [Link] == "BULLISH" ? [Link] + move0A * 1.618 :
[Link] - move0A * 1.618

rr1 = [Link](tp1 - entry1) / [Link](entry1 - sl)

if rr1 >= minRR


arrowLine = [Link](bar_index + 5, entry1, bar_index + 30,
tp1, color=[Link]([Link], 0), width=3, style=line.style_arrow_right)
[Link](allLines, arrowLine)
else
// WARUM KEIN TRADE? Label
noTradeLabel = [Link](bar_index + 10, entry1, "⚠️ RR zu
klein: 1:" + [Link](rr1, "#.#"), style=label.style_label_down,
color=[Link]([Link], 20), textcolor=[Link], size=[Link])
[Link](allLabels, noTradeLabel)

//
============================================================================
// A2-LINIE (NEUES HOCH NACH AKTIVIERUNG)
//
============================================================================
if [Link] and not na(seq.a2High)
a2Line = [Link](seq.a2Bar, seq.a2High, bar_index + 30, seq.a2High,
color=[Link]([Link], 0), width=3, style=line.style_dashed,
extend=[Link])
a2Label = [Link](bar_index + 18, seq.a2High, "A2 (H*): " +
[Link](seq.a2High, [Link]), style=label.style_label_left,
color=[Link]([Link], 20), textcolor=[Link], size=[Link])
[Link](allLines, a2Line)
[Link](allLabels, a2Label)

// AKTIVIERUNGSLINIE
if showActivation
activationLine = [Link]([Link], [Link], bar_index + 30,
[Link], color=[Link] ? [Link]([Link], 0) :
[Link]([Link], 50), width=2, style=line.style_solid, extend=[Link])
[Link](allLines, activationLine)

statusText = [Link] ? "✓ AKTIVIERT → BC-Zone aktiv" : "⏳ Warte


auf Close > A"
activationLabel = [Link](bar_index + 15, [Link], statusText,
style=label.style_label_left, color=[Link] ? [Link]([Link], 20) :
[Link]([Link], 50), textcolor=[Link], size=[Link])
[Link](allLabels, activationLabel)

// R-MULTIPLES & SL
if showRMultiples and [Link]
pipValue = [Link] * 10
slDistance = stopLossPips * pipValue

sl = [Link] == "BULLISH" ? [Link] - slDistance : [Link] +


slDistance

entryLevels = f_calculateEntryLevels(seq)
if [Link](entryLevels) > 0
entry1 = [Link](entryLevels, 0)
risk = [Link](entry1 - sl)

r2Level = [Link] == "BULLISH" ? entry1 + risk * 2 : entry1 -


risk * 2
r3Level = [Link] == "BULLISH" ? entry1 + risk * 3 : entry1 -
risk * 3

line2R = [Link]([Link], r2Level, bar_index + 35, r2Level,


color=[Link]([Link], 30), width=2, style=line.style_dashed,
extend=[Link])
lbl2R = [Link](bar_index + 20, r2Level, "2R (BE)",
style=label.style_label_left, color=[Link]([Link], 30),
textcolor=[Link], size=[Link])

line3R = [Link]([Link], r3Level, bar_index + 35, r3Level,


color=[Link]([Link], 20), width=2, style=line.style_solid,
extend=[Link])
lbl3R = [Link](bar_index + 20, r3Level, "3R (TP1)",
style=label.style_label_left, color=[Link]([Link], 20),
textcolor=[Link], size=[Link])

[Link](allLines, line2R)
[Link](allLines, line3R)
[Link](allLabels, lbl2R)
[Link](allLabels, lbl3R)

slLine = [Link]([Link], sl, bar_index + 50, sl,


color=[Link]([Link], 20), width=3, style=line.style_solid,
extend=[Link])
slLabel = [Link](bar_index + 30, sl, "SL",
style=label.style_label_left, color=[Link]([Link], 20),
textcolor=[Link], size=[Link])
[Link](allLines, slLine)
[Link](allLabels, slLabel)

//
============================================================================
// GKL-BOX NACH C (0→C Retracement) - NEUER ZYKLUS
//
============================================================================
if showGKL and [Link] and [Link]
range0C = [Link]([Link] - seq.point0)

gkl500 = [Link] == "BULLISH" ? [Link] - range0C * 0.500 :


[Link] + range0C * 0.500
gkl559 = [Link] == "BULLISH" ? [Link] - range0C * 0.559 :
[Link] + range0C * 0.559
gkl618 = [Link] == "BULLISH" ? [Link] - range0C * 0.618 :
[Link] + range0C * 0.618
gkl667 = [Link] == "BULLISH" ? [Link] - range0C * 0.667 :
[Link] + range0C * 0.667

gklTop = [Link] == "BULLISH" ? gkl500 : gkl667


gklBot = [Link] == "BULLISH" ? gkl667 : gkl500

gklBox = [Link](left=[Link], top=gklTop, right=bar_index + 50,


bottom=gklBot, border_color=[Link]([Link], 40),
bgcolor=[Link]([Link], 90), border_width=2, extend=[Link])
[Link](allBoxes, gklBox)

lineGKL500 = [Link]([Link], gkl500, bar_index + 50, gkl500,


color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKL559 = [Link]([Link], gkl559, bar_index + 50, gkl559,
color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKL618 = [Link]([Link], gkl618, bar_index + 50, gkl618,
color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)
lineGKL667 = [Link]([Link], gkl667, bar_index + 50, gkl667,
color=[Link]([Link], 40), width=2, extend=[Link],
style=line.style_solid)

[Link](allLines, lineGKL500)
[Link](allLines, lineGKL559)
[Link](allLines, lineGKL618)
[Link](allLines, lineGKL667)

goldColor = [Link](255, 215, 0)


lblC = [Link]([Link], [Link], "C", style=label.style_circle,
color=[Link](goldColor, 20), textcolor=[Link], size=[Link])
lblGKL = [Link](bar_index + 25, (gklTop + gklBot) / 2, "GKL-BOX
(0→C)\nNeuer Zyklus", style=label.style_label_left, color=[Link]([Link],
20), textcolor=[Link], size=[Link])

[Link](allLabels, lblC)
[Link](allLabels, lblGKL)

// ============================================================================
// DASHBOARD
// ============================================================================
var table dashboard = [Link](position.top_right, 7, 25, border_width=2,
border_color=[Link]([Link], 50))

if [Link] and [Link](sequences) > 0


seq = [Link](sequences, [Link](sequences) - 1)

// HEADER MIT TIMEFRAME


[Link](dashboard, 0, 0, "SK-SYSTEM @simpleforextools 🎯 [" +
[Link] + "]", bgcolor=[Link]([Link], 10), text_color=[Link],
text_size=[Link])
table.merge_cells(dashboard, 0, 0, 6, 0)

pipValue = [Link] * 10
slDistance = stopLossPips * pipValue
sl = [Link] == "BULLISH" ? [Link] - slDistance : [Link] + slDistance

entryLevels = f_calculateEntryLevels(seq)
entry1 = [Link](entryLevels) > 0 ? [Link](entryLevels, 0) : na
entry2 = [Link](entryLevels) > 1 ? [Link](entryLevels, 1) : na
entry3 = [Link](entryLevels) > 2 ? [Link](entryLevels, 2) : na
entry4 = [Link](entryLevels) > 3 ? [Link](entryLevels, 3) : na

move0A = [Link]([Link] - seq.point0)


tp1 = [Link] == "BULLISH" ? [Link] + move0A * 1.618 : [Link] -
move0A * 1.618
tp2 = [Link] == "BULLISH" ? [Link] + move0A * 1.809 : [Link] -
move0A * 1.809
tp3 = [Link] == "BULLISH" ? [Link] + move0A * 2.000 : [Link] -
move0A * 2.000

rr1 = not na(entry1) ? [Link](tp1 - entry1) / [Link](entry1 - sl) : 0

goodRR = rr1 >= minRR

// DISTANZ ZUR ENTRY-BOX


distancePercent = not na(entry1) ? ([Link] == "BULLISH" ? (close - entry1) /
entry1 * 100 : (entry1 - close) / entry1 * 100) : 0
distanceText = "Preis " + (distancePercent > 0 ? "+" : "") +
[Link](distancePercent, "#.##") + "% von Entry"

statusText = [Link] and goodRR and not na(seq.a2High) ? "✓ JA - TRADE


BC-ZONE!" : [Link] and not goodRR ? "✗ NEIN (RR: 1:" + [Link](rr1,
"#.#") + ")" : [Link] and na(seq.a2High) ? "⏳ WARTE AUF A2" : "⏳ WARTE AUF
CLOSE-BRUCH"
statusColor = [Link] and goodRR and not na(seq.a2High) ?
[Link]([Link], 20) : [Link]([Link], 20)

[Link](dashboard, 0, 1, "TRADE?", bgcolor=[Link]([Link], 70),


text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 1, statusText, bgcolor=statusColor,
text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 1, 1, 6, 1)

trendColor = [Link] == "BULLISH" ? [Link]([Link], 60) :


[Link]([Link], 60)
[Link](dashboard, 0, 2, "Trend:", bgcolor=[Link]([Link], 70),
text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 2, [Link], bgcolor=trendColor,
text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 1, 2, 6, 2)

// ============================================================================
// GKL-ZONE INFO (VOR AKTIVIERUNG)
// ============================================================================
if not [Link]
[Link](dashboard, 0, 3, "⚠️ GKL-ZONE AKTIV (0→A) - Aggressiv",
bgcolor=[Link]([Link], 30), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 0, 3, 6, 3)

gklEntries = f_calculateGKLEntryLevels(seq)
if [Link](gklEntries) == 4
gklEntry1 = [Link](gklEntries, 0)
gklEntry2 = [Link](gklEntries, 1)

pipValue = [Link] * 10
slDistance = stopLossPips * pipValue
gklSL = [Link] == "BULLISH" ? seq.point0 - slDistance : seq.point0 +
slDistance

move0A = [Link]([Link] - seq.point0)


gklTP1 = [Link] == "BULLISH" ? seq.point0 + move0A * 1.618 :
seq.point0 - move0A * 1.618

gklRR1 = [Link](gklTP1 - gklEntry1) / [Link](gklEntry1 - gklSL)

[Link](dashboard, 0, 4, "GKL Entry 1:",


bgcolor=[Link]([Link], 60), text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 4, [Link](gklEntry1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 4, "SL: " + [Link](gklSL,
[Link]), text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 4, "TP: " + [Link](gklTP1,
[Link]), text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 4, "RR: 1:" + [Link](gklRR1, "#.#"),
bgcolor=gklRR1 >= minRR ? [Link]([Link], 60) : [Link]([Link], 60),
text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 4, 4, 6, 4)

// ============================================================================
// BC-ZONE INFO (NACH AKTIVIERUNG) - ✅ WICHTIG!
// ============================================================================
if [Link] and not na(seq.a2High)
bcColor = [Link](0, 150, 255)
[Link](dashboard, 0, 3, "📍 BC-ZONE AKTIV (B→A2) - HAUPTENTRY",
bgcolor=[Link](bcColor, 30), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 0, 3, 6, 3)

// A2-PREIS ANZEIGEN
[Link](dashboard, 0, 4, "A2 (H*):", bgcolor=[Link]([Link], 70),
text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 4, [Link](seq.a2High, [Link]),
bgcolor=[Link]([Link], 60), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 1, 4, 6, 4)

// DISTANZ ZUR BC-ENTRY


[Link](dashboard, 0, 5, "Distanz:", bgcolor=[Link]([Link], 70),
text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 5, distanceText, bgcolor=[Link]([Link],
80), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 1, 5, 6, 5)

if [Link] and goodRR and not na(seq.a2High)


[Link](dashboard, 0, 6, "BC-Entry", bgcolor=[Link]([Link], 60),
text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 6, "Preis", bgcolor=[Link]([Link], 60),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 6, "SL", bgcolor=[Link]([Link], 60),
text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 6, "TP1 (1.618)", bgcolor=[Link]([Link],
60), text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 6, "TP2 (1.809)", bgcolor=[Link]([Link],
60), text_color=[Link], text_size=[Link])
[Link](dashboard, 5, 6, "TP3 (2.0)", bgcolor=[Link]([Link], 60),
text_color=[Link], text_size=[Link])
[Link](dashboard, 6, 6, "RR", bgcolor=[Link]([Link], 60),
text_color=[Link], text_size=[Link])

if not na(entry1)
rr1_calc = [Link](tp1 - entry1) / [Link](entry1 - sl)
[Link](dashboard, 0, 7, "BC 1 (0.5)", bgcolor=[Link]([Link],
70), text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 7, [Link](entry1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 7, [Link](sl, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 7, [Link](tp1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 7, [Link](tp2, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 5, 7, [Link](tp3, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 6, 7, "1:" + [Link](rr1_calc, "#.#"),
bgcolor=rr1_calc >= minRR ? [Link]([Link], 60) : [Link]([Link], 60),
text_color=[Link], text_size=[Link])

if not na(entry2)
rr2_calc = [Link](tp1 - entry2) / [Link](entry2 - sl)
[Link](dashboard, 0, 8, "BC 2 (0.559)",
bgcolor=[Link]([Link], 70), text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 8, [Link](entry2, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 8, [Link](sl, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 8, [Link](tp1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 8, [Link](tp2, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 5, 8, [Link](tp3, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 6, 8, "1:" + [Link](rr2_calc, "#.#"),
bgcolor=rr2_calc >= minRR ? [Link]([Link], 60) : [Link]([Link], 60),
text_color=[Link], text_size=[Link])

if not na(entry3)
rr3_calc = [Link](tp1 - entry3) / [Link](entry3 - sl)
[Link](dashboard, 0, 9, "BC 3 (0.618)",
bgcolor=[Link]([Link], 70), text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 9, [Link](entry3, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 9, [Link](sl, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 9, [Link](tp1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 9, [Link](tp2, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 5, 9, [Link](tp3, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 6, 9, "1:" + [Link](rr3_calc, "#.#"),
bgcolor=rr3_calc >= minRR ? [Link]([Link], 60) : [Link]([Link], 60),
text_color=[Link], text_size=[Link])

if not na(entry4)
rr4_calc = [Link](tp1 - entry4) / [Link](entry4 - sl)
[Link](dashboard, 0, 10, "BC 4 (0.667)",
bgcolor=[Link]([Link], 70), text_color=[Link], text_size=[Link])
[Link](dashboard, 1, 10, [Link](entry4, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 2, 10, [Link](sl, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 3, 10, [Link](tp1, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 4, 10, [Link](tp2, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 5, 10, [Link](tp3, [Link]),
text_color=[Link], text_size=[Link])
[Link](dashboard, 6, 10, "1:" + [Link](rr4_calc, "#.#"),
bgcolor=rr4_calc >= minRR ? [Link]([Link], 60) : [Link]([Link], 60),
text_color=[Link], text_size=[Link])

goldColor = [Link](255, 215, 0)


if [Link] and [Link]
[Link](dashboard, 0, 15, "✅ PUNKT C ERREICHT!",
bgcolor=[Link](goldColor, 30), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 0, 15, 6, 15)
[Link](dashboard, 0, 16, "GKL-Box aktiv (0→C) - Neuer Zyklus",
bgcolor=[Link]([Link], 30), text_color=[Link], text_size=[Link])
table.merge_cells(dashboard, 0, 16, 6, 16)

You might also like