chore: Release v4.0.0 – Signalzuweisung korrigiert, Reihenfolge verbessert, alte Skripte entfernt
- "Status Grün" als 3. Parameter von oben festgelegt (Fix) - Reihenfolge der input.source-Zuweisungen an Overlay-Darstellung angepasst - Alle alten Pine-Skripte entfernt → nur noch `croc_vibes.pine` - Doku aktualisiert (Installation, Beschreibung, Changelog, FAQ ergänzt) - Alte Beschreibungen (Blues Add-on, Vibes+Blues) im Docs-Ordner erhalten, aber als Referenz markiert
This commit is contained in:
@@ -1,104 +1,317 @@
|
||||
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
|
||||
|
||||
// CrocVibes by Telgos
|
||||
|
||||
// Danke für die Grundlagen und Basisversion: amper04, ray_duke, husky, Audidriver13│
|
||||
|
||||
//@version=5
|
||||
indicator("Croc Vibes V3.6 by Telgos", overlay=true)
|
||||
|
||||
// === Inputs ===
|
||||
// --- Gruppe: Chart-Signale ---
|
||||
wolke_Line_rot = input.source(title="Wolke Linie Pink", defval=close, group="Chart-Signale")
|
||||
blauer_punkt_long = input.source(title="Blauer Punkt Long", defval=close, group="Chart-Signale")
|
||||
blauer_punkt_short = input.source(title="Blauer Punkt Short", defval=close, group="Chart-Signale")
|
||||
//@version=6
|
||||
// Version 4.0.0
|
||||
indicator("Croc Vibes by Telgos", overlay=true, max_labels_count=500, max_lines_count=500)
|
||||
|
||||
wolke_Line_pink = input.source(title="Wolke Linie Pink", defval=close, group="Chart-Signale")
|
||||
cloud_punkt_long = input.source(title="Cloud Punkt Long", defval=close, group="Chart-Signale")
|
||||
red_devil_long = input.source(title="Red Devil Long", defval=close, group="Chart-Signale")
|
||||
hellgruener_punkt_long = input.source(title="Hellgruener Punkt Long", defval=close, group="Chart-Signale")
|
||||
cloud_punkt_long = input.source(title="Cloud Punkt Long", defval=close, group="Chart-Signale")
|
||||
red_devil_long = input.source(title="Red Devil Long", defval=close, group="Chart-Signale")
|
||||
bb_kombi_long = input.source(title="BB Kombi long", defval=close, group="Chart-Signale")
|
||||
lollipop_long = input.source(title="Lollipop long", defval=close, group="Chart-Signale")
|
||||
aw_rocket_long = input.source(title="AW-Rocket long", defval=close, group="Chart-Signale")
|
||||
bgrl_signal = input.source(title="Black Green Rocket Long", defval=close, group="Chart-Signale")
|
||||
rotes_plus = input.source(title="Rotes Plus", defval=close, group="Chart-Signale")
|
||||
blauer_punkt_long = input.source(title="Blauer Punkt Long", defval=close, group="Chart-Signale")
|
||||
gruenes_plus = input.source(title="Grünes Plus", defval=close, group="Chart-Signale")
|
||||
bb_kombi_long = input.source(title="BB Kombi long", defval=close, group="Chart-Signale")
|
||||
rotes_plus = input.source(title="Rotes Plus", defval=close, group="Chart-Signale")
|
||||
blauer_punkt_short = input.source(title="Blauer Punkt Short", defval=close, group="Chart-Signale")
|
||||
lollipop_long = input.source(title="Lollipop long", defval=close, group="Chart-Signale")
|
||||
aw_rocket_long = input.source(title="AW-Rocket long", defval=close, group="Chart-Signale")
|
||||
bgrl_signal = input.source(title="Black Green Rocket Long", defval=close, group="Chart-Signale")
|
||||
|
||||
// --- Gruppe: Lochstreifen ---
|
||||
status_g = input.source(title="Status (1) Grün", defval=close, group="Lochstreifen")
|
||||
status_r = input.source(title="Status (2) Rot", defval=close, group="Lochstreifen")
|
||||
wolke_g = input.source(title="Wolke (1) Grün", defval=close, group="Lochstreifen")
|
||||
wolke_r = input.source(title="Wolke (3) Rot", defval=close, group="Lochstreifen")
|
||||
trend_s = input.source(title="Trend (1) Schwarz", defval=close, group="Lochstreifen")
|
||||
trend_r = input.source(title="Trend (2) Rot", defval=close, group="Lochstreifen")
|
||||
trend_g = input.source(title="Trend (3) Grün", defval=close, group="Lochstreifen")
|
||||
setter_r = input.source(title="Setter (Trend 5) Rot", defval=close, group="Lochstreifen")
|
||||
|
||||
status_r = input.source(title="Status (2) Rot", defval=close, group="Lochstreifen")
|
||||
status_g = input.source(title="Status (3) Grün", defval=close, group="Lochstreifen")
|
||||
wolke_g = input.source(title="Wolke (1) Grün", defval=close, group="Lochstreifen")
|
||||
wolke_r = input.source(title="Wolke (3) Rot", defval=close, group="Lochstreifen")
|
||||
trend_s = input.source(title="Trend (1) Schwarz", defval=close, group="Lochstreifen")
|
||||
trend_r = input.source(title="Trend (2) Rot", defval=close, group="Lochstreifen")
|
||||
trend_g = input.source(title="Trend (3) Grün", defval=close, group="Lochstreifen")
|
||||
setter_r = input.source(title="Setter (Trend 5) Rot", defval=close, group="Lochstreifen")
|
||||
setter_g = input.source(title="Setter (Trend 6) grün", defval=close, group="Lochstreifen")
|
||||
welle_g = input.source(title="Welle (1) grün", defval=close, group="Lochstreifen")
|
||||
welle_g = input.source(title="Welle (1) grün", defval=close, group="Lochstreifen")
|
||||
welle_gg = input.source(title="Welle (2) dunkelgrün", defval=close, group="Lochstreifen")
|
||||
welle_r = input.source(title="Welle (4) Rot", defval=close, group="Lochstreifen")
|
||||
welle_rr = input.source(title="Welle (6) dunkelRot", defval=close, group="Lochstreifen")
|
||||
kerze_g = input.source(title="Kerzenfarbe (1) Gruen", defval=close, group="Lochstreifen")
|
||||
kerze_s = input.source(title="Kerzenfarbe (2) Schwarz", defval=close, group="Lochstreifen")
|
||||
kerze_r = input.source(title="Kerzenfarbe (3) Rot", defval=close, group="Lochstreifen")
|
||||
welle_r = input.source(title="Welle (4) Rot", defval=close, group="Lochstreifen")
|
||||
welle_rr = input.source(title="Welle (6) dunkelRot", defval=close, group="Lochstreifen")
|
||||
kerze_g = input.source(title="Kerzenfarbe (1) Gruen", defval=close, group="Lochstreifen")
|
||||
kerze_s = input.source(title="Kerzenfarbe (2) Schwarz", defval=close, group="Lochstreifen")
|
||||
kerze_r = input.source(title="Kerzenfarbe (3) Rot", defval=close, group="Lochstreifen")
|
||||
|
||||
// --- Gruppe: MSI ---
|
||||
src1 = input.source(close, "Day OverBought 1", group="MSI")
|
||||
|
||||
// --- Gruppe: Allgemeine Einstellungen ---
|
||||
show_blue_dot_labels = input.bool(true, title="Blaue Punkte Labels anzeigen", group="Allgemeine Einstellungen")
|
||||
swing_lookback = input.int(5, title="Swing-Lookback", minval=1, group="Allgemeine Einstellungen")
|
||||
label_offset_mult = input.float(3.0, title="Label Abstand (ATR Multiplikator)", minval=0.1, step=0.1, group="Allgemeine Einstellungen")
|
||||
label_offset_mult = input.float(3.0, title="Label-Abstand (ATR x)", minval=0.1, step=0.1, group="Darstellung")
|
||||
|
||||
// Signal_close zu Übergeben macht keinen Sinn
|
||||
signal_close = close
|
||||
|
||||
// === Logik ===
|
||||
asBool(src) => nz(src) > 0
|
||||
atr = ta.atr(16)
|
||||
baerische_welle = (welle_rr > 0 or welle_r > 0)
|
||||
bullische_welle = (welle_gg > 0 or welle_g > 0)
|
||||
|
||||
// === Pearl Diver ===
|
||||
allRed = (status_r > 0) and (kerze_r > 0) and (wolke_r > 0) and (trend_r > 0) and (setter_r > 0) and baerische_welle
|
||||
kerzeSG_l = (status_r > 0) and ((kerze_s > 0) or (kerze_g > 0)) and (wolke_r > 0) and (trend_r > 0) and (setter_r > 0) and baerische_welle
|
||||
isPearlLong = kerzeSG_l and allRed[1] and allRed[2]
|
||||
b_long = asBool(blauer_punkt_long)
|
||||
b_short = asBool(blauer_punkt_short)
|
||||
hgr_long = asBool(hellgruener_punkt_long)
|
||||
cp_long = asBool(cloud_punkt_long)
|
||||
rd_long = asBool(red_devil_long)
|
||||
bb_long = asBool(bb_kombi_long)
|
||||
lolli_long = asBool(lollipop_long)
|
||||
awr_long = asBool(aw_rocket_long)
|
||||
bgrl = asBool(bgrl_signal)
|
||||
r_plus = asBool(rotes_plus)
|
||||
g_plus = asBool(gruenes_plus)
|
||||
|
||||
allGreen = (status_g > 0) and (kerze_g > 0) and (wolke_g > 0) and (trend_g > 0) and (setter_g > 0) and bullische_welle
|
||||
kerzeSG_s = (status_g > 0) and ((kerze_s > 0) or (kerze_r > 0)) and (wolke_g > 0) and (trend_g > 0) and (setter_g > 0) and bullische_welle
|
||||
st_g = asBool(status_g)
|
||||
st_r = asBool(status_r)
|
||||
wk_g = asBool(wolke_g)
|
||||
wk_r = asBool(wolke_r)
|
||||
tr_s = asBool(trend_s)
|
||||
tr_r = asBool(trend_r)
|
||||
tr_g = asBool(trend_g)
|
||||
set_r = asBool(setter_r)
|
||||
set_g = asBool(setter_g)
|
||||
wl_g = asBool(welle_g)
|
||||
wl_gg = asBool(welle_gg)
|
||||
wl_r = asBool(welle_r)
|
||||
wl_rr = asBool(welle_rr)
|
||||
cz_g = asBool(kerze_g)
|
||||
cz_s = asBool(kerze_s)
|
||||
cz_r = asBool(kerze_r)
|
||||
|
||||
baerische_welle = wl_rr or wl_r
|
||||
bullische_welle = wl_gg or wl_g
|
||||
|
||||
allRed = st_r and cz_r and wk_r and tr_r and set_r and baerische_welle
|
||||
kerzeSG_l = st_r and (cz_s or cz_g) and wk_r and tr_r and set_r and baerische_welle
|
||||
isPearlLong = kerzeSG_l and allRed[1] and allRed[2]
|
||||
|
||||
allGreen = st_g and cz_g and wk_g and tr_g and set_g and bullische_welle
|
||||
kerzeSG_s = st_g and (cz_s or cz_r) and wk_g and tr_g and set_g and bullische_welle
|
||||
isPearlShort = kerzeSG_s and allGreen[1] and allGreen[2]
|
||||
|
||||
// === Stephan-Setup (V2-Logik) ===
|
||||
stephan_zusatzbedingung_erfuellt = (cloud_punkt_long > 0) or
|
||||
(red_devil_long > 0) or
|
||||
(lollipop_long > 0) or
|
||||
(bb_kombi_long > 0) or
|
||||
(aw_rocket_long > 0) or
|
||||
(bgrl_signal > 0)
|
||||
stephan_setup = not na(src1) and (wolke_g > 0) and (trend_s > 0) and (setter_r > 0) and stephan_zusatzbedingung_erfuellt
|
||||
stephan_zusatzbedingung_erfuellt = cp_long or rd_long or lolli_long or bb_long or awr_long or bgrl or g_plus
|
||||
stephan_setup = not na(src1) and wk_g and tr_s and set_r and stephan_zusatzbedingung_erfuellt
|
||||
|
||||
// === Ulti Rally (V2-kompatibel) ===
|
||||
Kerze_in_wolke_gr = signal_close - wolke_Line_rot
|
||||
ulti_rally = (hellgruener_punkt_long > 0) and (Kerze_in_wolke_gr > 0) and (status_r > 0) and (kerze_r > 0) and (setter_r > 0) and not baerische_welle
|
||||
Kerze_in_wolke_gr = close - wolke_Line_pink
|
||||
ulti_rally = hgr_long and (Kerze_in_wolke_gr > 0) and st_r and cz_r and set_r and not baerische_welle
|
||||
|
||||
// === BGRL ===
|
||||
is_bgrl = bgrl_signal > 0
|
||||
is_bgrl = bgrl
|
||||
is_rotes_plus = r_plus and wk_g
|
||||
|
||||
// === Rotes Plus ===
|
||||
is_rotes_plus = (rotes_plus > 0) and (wolke_g > 0)
|
||||
g_active = wk_g
|
||||
r_active = wk_r
|
||||
|
||||
// === Blaue Punkte ===
|
||||
highest_swing = ta.highest(high, swing_lookback)
|
||||
lowest_swing = ta.lowest(low, swing_lookback)
|
||||
isBlueShortFulfilled = (wolke_g > 0 and blauer_punkt_short > high and high == highest_swing)
|
||||
isBlueLongFulfilled = (wolke_r > 0 and blauer_punkt_long < low and low == lowest_swing)
|
||||
punkt_erfuellt = isBlueShortFulfilled or isBlueLongFulfilled
|
||||
f_rise(sig) =>
|
||||
cond_now = (not na(sig)) and (sig > 0)
|
||||
cond_prev = na(sig[1]) or (sig[1] <= 0)
|
||||
cond_now and cond_prev
|
||||
|
||||
// === Alerts ===
|
||||
alertcondition(isPearlLong, title="Pearl Long", message="Pearl Diver erkannt")
|
||||
alertcondition(isPearlShort, title="Pearl Short", message="Oyster Farmer erkannt")
|
||||
alertcondition(ulti_rally, title="Ulti Rally", message="Ulti Rally erkannt")
|
||||
alertcondition(stephan_setup, title="Stephan Setup", message="Stephan Setup erkannt")
|
||||
alertcondition(is_bgrl, title="BGRL", message="Black Green Rocket Long erkannt")
|
||||
alertcondition(is_rotes_plus, title="Rotes Kreuz bei grüner Wolke", message="Rotes Kreuz erkannt")
|
||||
var int g_zoneStart = na
|
||||
var float g_zoneHigh = na
|
||||
g_switch = barstate.isfirst ? true : (g_active != g_active[1])
|
||||
if bar_index == 0 or g_switch
|
||||
g_zoneStart := bar_index
|
||||
g_zoneHigh := na
|
||||
g_inZone = g_active and bar_index >= g_zoneStart
|
||||
g_zoneHigh_prev = g_zoneHigh
|
||||
if g_inZone
|
||||
if na(g_zoneHigh) or high > g_zoneHigh
|
||||
g_zoneHigh := high
|
||||
|
||||
var int r_zoneStart = na
|
||||
var float r_zoneLow = na
|
||||
r_switch = barstate.isfirst ? true : (r_active != r_active[1])
|
||||
if bar_index == 0 or r_switch
|
||||
r_zoneStart := bar_index
|
||||
r_zoneLow := na
|
||||
r_inZone = r_active and bar_index >= r_zoneStart
|
||||
r_zoneLow_prev = r_zoneLow
|
||||
if r_inZone
|
||||
if na(r_zoneLow) or low < r_zoneLow
|
||||
r_zoneLow := low
|
||||
|
||||
long_blue_now = g_inZone and f_rise(blauer_punkt_short)
|
||||
short_blue_now = r_inZone and f_rise(blauer_punkt_long)
|
||||
long_start_ok = long_blue_now and not na(g_zoneHigh_prev)
|
||||
short_start_ok = short_blue_now and not na(r_zoneLow_prev)
|
||||
|
||||
var bool long_pending_active = false
|
||||
var float long_refHigh = na
|
||||
var label startLblLong = na
|
||||
var line longPendingLine = na
|
||||
|
||||
var bool short_pending_active = false
|
||||
var float short_refLow = na
|
||||
var label startLblShort = na
|
||||
var line shortPendingLine = na
|
||||
|
||||
var bool ev_long_start = false
|
||||
var bool ev_short_start = false
|
||||
var bool ev_long_done = false
|
||||
var bool ev_short_done = false
|
||||
var bool ev_long_break = false
|
||||
var bool ev_short_break = false
|
||||
ev_long_start := false
|
||||
ev_short_start := false
|
||||
ev_long_done := false
|
||||
ev_short_done := false
|
||||
ev_long_break := false
|
||||
ev_short_break := false
|
||||
|
||||
if long_start_ok and not long_pending_active
|
||||
long_pending_active := true
|
||||
long_refHigh := g_zoneHigh_prev
|
||||
ev_long_start := true
|
||||
if high < long_refHigh
|
||||
if not na(startLblLong)
|
||||
label.delete(startLblLong)
|
||||
startLblLong := label.new(bar_index, high + atr * label_offset_mult, "Ein Hoch kommt noch", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_label_down, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if not na(longPendingLine)
|
||||
line.delete(longPendingLine)
|
||||
longPendingLine := line.new(bar_index, long_refHigh, bar_index + 1, long_refHigh, xloc=xloc.bar_index, extend=extend.right, color=color.blue, width=2)
|
||||
|
||||
if short_start_ok and not short_pending_active
|
||||
short_pending_active := true
|
||||
short_refLow := r_zoneLow_prev
|
||||
ev_short_start := true
|
||||
if low > short_refLow
|
||||
if not na(startLblShort)
|
||||
label.delete(startLblShort)
|
||||
startLblShort := label.new(bar_index, low - atr * label_offset_mult, "Ein Tief kommt noch", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_label_up, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if not na(shortPendingLine)
|
||||
line.delete(shortPendingLine)
|
||||
shortPendingLine := line.new(bar_index, short_refLow, bar_index + 1, short_refLow, xloc=xloc.bar_index, extend=extend.right, color=color.blue, width=2)
|
||||
|
||||
long_fulfilled_now = long_pending_active and high >= long_refHigh
|
||||
short_fulfilled_now = short_pending_active and low <= short_refLow
|
||||
long_cloud_break = long_pending_active and not g_active
|
||||
short_cloud_break = short_pending_active and not r_active
|
||||
|
||||
if long_fulfilled_now
|
||||
ev_long_done := true
|
||||
if short_fulfilled_now
|
||||
ev_short_done := true
|
||||
if long_cloud_break
|
||||
ev_long_break := true
|
||||
if short_cloud_break
|
||||
ev_short_break := true
|
||||
|
||||
end_long = long_pending_active and (long_fulfilled_now or long_cloud_break)
|
||||
end_short = short_pending_active and (short_fulfilled_now or short_cloud_break)
|
||||
|
||||
if end_long
|
||||
if not na(startLblLong)
|
||||
label.delete(startLblLong)
|
||||
startLblLong := na
|
||||
if not na(longPendingLine)
|
||||
line.delete(longPendingLine)
|
||||
longPendingLine := na
|
||||
long_pending_active := false
|
||||
long_refHigh := na
|
||||
|
||||
if end_short
|
||||
if not na(startLblShort)
|
||||
label.delete(startLblShort)
|
||||
startLblShort := na
|
||||
if not na(shortPendingLine)
|
||||
line.delete(shortPendingLine)
|
||||
shortPendingLine := na
|
||||
short_pending_active := false
|
||||
short_refLow := na
|
||||
|
||||
alertcondition(isPearlLong, title="Pearl Long", message="Pearl Diver erkannt – {{ticker}} {{interval}}")
|
||||
alertcondition(isPearlShort, title="Pearl Short", message="Oyster Farmer erkannt – {{ticker}} {{interval}}")
|
||||
alertcondition(ulti_rally, title="Ulti Rally", message="Ulti Rally erkannt – {{ticker}} {{interval}}")
|
||||
alertcondition(stephan_setup,title="Stephan Setup", message="Stephan Setup erkannt – {{ticker}} {{interval}}")
|
||||
alertcondition(is_bgrl, title="BGRL", message="Black Green Rocket Long erkannt – {{ticker}} {{interval}}")
|
||||
alertcondition(is_rotes_plus,title="Rotes Kreuz bei grüner Wolke", message="Rotes Kreuz erkannt – {{ticker}} {{interval}}")
|
||||
|
||||
alertcondition(long_pending_active, title="Blues: Ein Hoch kommt noch (aktiv)", message="Blues Long aktiv – {{ticker}} {{interval}}")
|
||||
alertcondition(short_pending_active, title="Blues: Ein Tief kommt noch (aktiv)", message="Blues Short aktiv – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_long_start, title="Blues: Ein Hoch kommt noch (Start)", message="Blues Long START – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_short_start, title="Blues: Ein Tief kommt noch (Start)", message="Blues Short START – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_long_done, title="Blues: Ein Hoch kommt noch (Erfüllt)", message="Blues Long FULFILLED – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_short_done, title="Blues: Ein Tief kommt noch (Erfüllt)", message="Blues Short FULFILLED – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_long_break, title="Blues: Ein Hoch kommt noch (Wolkenbruch)", message="Blues Long INVALID (Cloud Break) – {{ticker}} {{interval}}")
|
||||
alertcondition(ev_short_break, title="Blues: Ein Tief kommt noch (Wolkenbruch)", message="Blues Short INVALID (Cloud Break) – {{ticker}} {{interval}}")
|
||||
|
||||
grp = "ALERT-COMBO"
|
||||
|
||||
optNone = "— (keins) —"
|
||||
optPearlLong = "Pearl Long"
|
||||
optPearlShort = "Pearl Short"
|
||||
optUlti = "Ulti Rally"
|
||||
optStephan = "Stephan Setup"
|
||||
optBGRL = "BGRL"
|
||||
optRotesPlus = "Rotes Kreuz (grüne Wolke)"
|
||||
optBlueLActive = "Blues: Ein Hoch kommt noch (aktiv)"
|
||||
optBlueSActive = "Blues: Ein Tief kommt noch (aktiv)"
|
||||
|
||||
sel1 = input.string(optNone, "Signal-Auswahl 1", options=["— (keins) —","Pearl Long","Pearl Short","Ulti Rally","Stephan Setup","BGRL","Rotes Kreuz (grüne Wolke)","Blues: Ein Hoch kommt noch (aktiv)","Blues: Ein Tief kommt noch (aktiv)"], group=grp)
|
||||
sel2 = input.string(optNone, "Signal-Auswahl 2", options=["— (keins) —","Pearl Long","Pearl Short","Ulti Rally","Stephan Setup","BGRL","Rotes Kreuz (grüne Wolke)","Blues: Ein Hoch kommt noch (aktiv)","Blues: Ein Tief kommt noch (aktiv)"], group=grp)
|
||||
sel3 = input.string(optNone, "Signal-Auswahl 3", options=["— (keins) —","Pearl Long","Pearl Short","Ulti Rally","Stephan Setup","BGRL","Rotes Kreuz (grüne Wolke)","Blues: Ein Hoch kommt noch (aktiv)","Blues: Ein Tief kommt noch (aktiv)"], group=grp)
|
||||
sel4 = input.string(optNone, "Signal-Auswahl 4", options=["— (keins) —","Pearl Long","Pearl Short","Ulti Rally","Stephan Setup","BGRL","Rotes Kreuz (grüne Wolke)","Blues: Ein Hoch kommt noch (aktiv)","Blues: Ein Tief kommt noch (aktiv)"], group=grp)
|
||||
sel5 = input.string(optNone, "Signal-Auswahl 5", options=["— (keins) —","Pearl Long","Pearl Short","Ulti Rally","Stephan Setup","BGRL","Rotes Kreuz (grüne Wolke)","Blues: Ein Hoch kommt noch (aktiv)","Blues: Ein Tief kommt noch (aktiv)"], group=grp)
|
||||
noCombine = input.bool(false, "Signale nicht kombinieren", group=grp, tooltip="Aus: Alle ausgewählten Signale müssen gleichzeitig zutreffen (UND). Ein: Irgendeins reicht (ODER).")
|
||||
|
||||
f_pick(name) =>
|
||||
bool res = false
|
||||
if name == optPearlLong
|
||||
res := isPearlLong
|
||||
else if name == optPearlShort
|
||||
res := isPearlShort
|
||||
else if name == optUlti
|
||||
res := ulti_rally
|
||||
else if name == optStephan
|
||||
res := stephan_setup
|
||||
else if name == optBGRL
|
||||
res := is_bgrl
|
||||
else if name == optRotesPlus
|
||||
res := is_rotes_plus
|
||||
else if name == optBlueLActive
|
||||
res := long_pending_active
|
||||
else if name == optBlueSActive
|
||||
res := short_pending_active
|
||||
res
|
||||
|
||||
c1 = f_pick(sel1)
|
||||
c2 = f_pick(sel2)
|
||||
c3 = f_pick(sel3)
|
||||
c4 = f_pick(sel4)
|
||||
c5 = f_pick(sel5)
|
||||
|
||||
s1 = sel1 != optNone
|
||||
s2 = sel2 != optNone
|
||||
s3 = sel3 != optNone
|
||||
s4 = sel4 != optNone
|
||||
s5 = sel5 != optNone
|
||||
|
||||
anySel = (s1 ? c1 : false) or (s2 ? c2 : false) or (s3 ? c3 : false) or (s4 ? c4 : false) or (s5 ? c5 : false)
|
||||
allSel = (s1 ? c1 : true ) and (s2 ? c2 : true ) and (s3 ? c3 : true ) and (s4 ? c4 : true ) and (s5 ? c5 : true )
|
||||
hasSelection = s1 or s2 or s3 or s4 or s5
|
||||
|
||||
pickedBlueL = (sel1 == optBlueLActive) or (sel2 == optBlueLActive) or (sel3 == optBlueLActive) or (sel4 == optBlueLActive) or (sel5 == optBlueLActive)
|
||||
pickedBlueS = (sel1 == optBlueSActive) or (sel2 == optBlueSActive) or (sel3 == optBlueSActive) or (sel4 == optBlueSActive) or (sel5 == optBlueSActive)
|
||||
bothBluesSelected = pickedBlueL and pickedBlueS
|
||||
|
||||
useOr = noCombine or bothBluesSelected
|
||||
comboCond = hasSelection ? (useOr ? anySel : allSel) : false
|
||||
|
||||
alertcondition(comboCond, title="ALERT-COMBO (aus Eingaben)", message="ALERT-COMBO erfüllt – {{ticker}} {{interval}}")
|
||||
|
||||
// --- START: Telgos-Spezial-Alarm (Version 3 Kerzen) ---
|
||||
|
||||
// 1. Definieren, welche Signale als Auslöser gelten.
|
||||
var bool ausloeser_signal = isPearlLong or ulti_rally or stephan_setup or is_bgrl or is_rotes_plus
|
||||
|
||||
// 2. Prüfen, ob ein Auslöser auf der aktuellen oder den zwei vorherigen Kerzen aktiv war.
|
||||
hat_ausloeser_in_letzten_3_kerzen = ausloeser_signal[0] or ausloeser_signal[1] or ausloeser_signal[2]
|
||||
|
||||
// 3. Die finale Alarmbedingung: "Ein Hoch kommt noch" muss aktiv sein UND ein Auslöser muss kürzlich erschienen sein.
|
||||
telgos_spezial_cond = long_pending_active and hat_ausloeser_in_letzten_3_kerzen
|
||||
|
||||
// 4. Die neue Alert-Condition für die TradingView-Alarmeinstellungen.
|
||||
alertcondition(telgos_spezial_cond, title="Telgos-Spezial-Alarm", message="Telgos-Spezial: Hoch erwartet + Signal auf Kerze 0/-1/-2 ({{ticker}} {{interval}})")
|
||||
|
||||
// --- ENDE: Telgos-Spezial-Alarm ---
|
||||
|
||||
// === Labels ===
|
||||
if isPearlLong
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="Pearl Diver", style=label.style_label_up, color=color.purple, textcolor=color.white, size=size.small)
|
||||
if isPearlShort
|
||||
@@ -108,28 +321,16 @@ if ulti_rally
|
||||
if stephan_setup
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="Stephan", style=label.style_label_up, color=color.teal, textcolor=color.white, size=size.small)
|
||||
if is_bgrl
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="BGRL", style=label.style_label_up, color=color.black, textcolor=color.white, size=size.small)
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="BGRL", style=label.style_label_up, color=color.gray, textcolor=color.white, size=size.small)
|
||||
if is_rotes_plus
|
||||
label.new(bar_index, high + atr * label_offset_mult, text="Rotes Kreuz", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
|
||||
|
||||
// === Blaue Punkt Labels ===
|
||||
if isBlueShortFulfilled and show_blue_dot_labels
|
||||
label.new(bar_index, high + atr * label_offset_mult, text="Blauer erfüllt", style=label.style_label_down, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if isBlueLongFulfilled and show_blue_dot_labels
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="Blauer erfüllt", style=label.style_label_up, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if wolke_g > 0 and blauer_punkt_short > high and not punkt_erfuellt and show_blue_dot_labels
|
||||
label.new(bar_index, high + atr * label_offset_mult, text="Ein Hoch kommt noch", style=label.style_label_down, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if wolke_g > 0 and blauer_punkt_short < low and show_blue_dot_labels
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="Tief verpasst", style=label.style_label_up, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if wolke_r > 0 and blauer_punkt_long < low and not punkt_erfuellt and show_blue_dot_labels
|
||||
label.new(bar_index, low - atr * label_offset_mult, text="Ein Tief kommt noch", style=label.style_label_up, color=color.blue, textcolor=color.white, size=size.small)
|
||||
if wolke_r > 0 and blauer_punkt_long > high and show_blue_dot_labels
|
||||
label.new(bar_index, high + atr * label_offset_mult, text="Hoch verpasst", style=label.style_label_down, color=color.blue, textcolor=color.white, size=size.small)
|
||||
plotshape(isPearlLong, title="Pearl Long", location=location.abovebar, color=color.new(color.purple, 100), style=shape.labelup, size=size.tiny)
|
||||
plotshape(isPearlShort, title="Pearl Short", location=location.belowbar, color=color.new(color.purple, 100), style=shape.labeldown, size=size.tiny)
|
||||
plotshape(ulti_rally, title="Ulti Rally", location=location.abovebar, color=color.new(color.aqua, 100), style=shape.diamond, size=size.tiny)
|
||||
plotshape(stephan_setup, title="Stephan Setup", location=location.abovebar, color=color.new(color.teal, 100), style=shape.labelup, size=size.tiny)
|
||||
plotshape(is_bgrl, title="BGRL", location=location.abovebar, color=color.new(color.gray, 100), style=shape.triangleup, size=size.tiny)
|
||||
plotshape(is_rotes_plus, title="Rotes Kreuz", location=location.belowbar, color=color.new(color.red, 100), style=shape.labeldown, size=size.tiny)
|
||||
|
||||
// === Shapes für Screener/Backtest ===
|
||||
plotshape(isPearlLong, title="Pearl Long", location=location.abovebar, color=color.new(color.purple, 100), style=shape.labelup, size=size.tiny)
|
||||
plotshape(isPearlShort, title="Pearl Short", location=location.belowbar, color=color.new(color.purple, 100), style=shape.labeldown, size=size.tiny)
|
||||
plotshape(ulti_rally, title="Ulti Rally", location=location.abovebar, color=color.new(color.aqua, 100), style=shape.diamond, size=size.tiny)
|
||||
plotshape(stephan_setup, title="Stephan Setup", location=location.abovebar, color=color.new(color.teal, 100), style=shape.labelup, size=size.tiny)
|
||||
plotshape(is_bgrl, title="BGRL", location=location.abovebar, color=color.new(color.black, 100), style=shape.triangleup, size=size.tiny)
|
||||
plotshape(is_rotes_plus, title="Rotes Kreuz", location=location.belowbar, color=color.new(color.red, 100), style=shape.labeldown, size=size.tiny)
|
||||
plotshape(long_pending_active, title="Ein Hoch kommt noch", location=location.abovebar, color=color.new(color.blue, 100), style=shape.circle, size=size.tiny)
|
||||
plotshape(short_pending_active, title="Ein Tief kommt noch", location=location.belowbar, color=color.new(color.blue, 100), style=shape.circle, size=size.tiny)
|
Reference in New Issue
Block a user