feat: Telgos 2-Bar-Prime Alarmfilter hinzugefügt

- Neuer Spezial-Alarm für Blues Long
- prüft nur aktuelle Kerze (0) und vorherige Kerze (-1)
- optionale Bedingung: Auslöser seit Beginn der Blues-Phase
- Changelog & README entsprechend erweitert
This commit is contained in:
2025-09-05 17:13:16 +02:00
parent 11d6dbb3c5
commit b277a0eed4
3 changed files with 78 additions and 25 deletions

View File

@@ -24,6 +24,17 @@ Sobald im Forum das **direkte Teilen von Skripten** möglich ist, wird dieses Re
👉 Details zu allen Änderungen siehe [CHANGELOG.md](./docs/CHANGELOG.md) 👉 Details zu allen Änderungen siehe [CHANGELOG.md](./docs/CHANGELOG.md)
## ✨ Neues Feature: Telgos 2-Bar-Prime
**Telgos 2-Bar-Prime** ist ein spezieller Alarmfilter für Croc Vibes:
- Voraussetzung: *„Ein Hoch kommt noch“ (Blues Long) ist aktiv*
- Bedingung: Mindestens ein definierter Auslöser (Pearl Long, Ulti Rally, Stephan Setup, BGRL, Rotes Kreuz bei grüner Wolke)
muss auf der **aktuellen Kerze (0)** oder der **vorherigen Kerze (1)** aufgetreten sein
- Optional: Es kann zusätzlich gefordert werden, dass der Auslöser **seit Start der aktuellen Blues-Phase** liegt
➡️ Damit werden nur sehr kurzfristige, hochqualitative Setups berücksichtigt („Prime Setups im 2-Bar-Fenster“).
--- ---
## Community-Hilfsskript ## Community-Hilfsskript

View File

@@ -1,15 +1,26 @@
# Changelog # Changelog
## [4.1.0] 2025-09-05
### Added
- **Telgos 2-Bar-Prime**: Neuer Spezial-Alarmfilter
- Löst nur aus, wenn „Ein Hoch kommt noch“ (Blues Long) aktiv ist
- UND ein Auslöser (Pearl Long, Ulti Rally, Stephan Setup, BGRL, Rotes Kreuz bei grüner Wolke)
auf der aktuellen Kerze (0) oder der vorherigen Kerze (1) erscheint
- Optional kann zusätzlich gefordert werden, dass der Auslöser seit Beginn der aktuellen Blues-Phase liegt
---
## [4.0.1] 2025-09-02 ## [4.0.1] 2025-09-02
### Changed ### Changed
- **Reihenfolge der Signal-Zuweisungen nochmal verbessert** → Kerzenfarben sind jetzt über dem Status - **Reihenfolge der Signal-Zuweisungen nochmal verbessert** → Kerzenfarben sind jetzt über dem Status
---
## [4.0.0] 2025-09-02 ## [4.0.0] 2025-09-02
### Changed ### Changed
- **Signalzuweisung korrigiert:** „Status Grün“ ist jetzt der **3. Parameter von oben** - **Signalzuweisung korrigiert:** „Status Grün“ ist jetzt der **3. Parameter von oben**
- **Reihenfolge der Signal-Zuweisungen verbessert** → entspricht jetzt der Overlay-Darstellung (oben → unten) - **Reihenfolge der Signal-Zuweisungen verbessert** → entspricht jetzt der Overlay-Darstellung (oben → unten)
- **Dokumentation aktualisiert:** Installation & Beschreibung angepasst; alte Skript-Beschreibungen bleiben im Docs-Ordner, aber nur als Referenz - **Dokumentation aktualisiert:** Installation & Beschreibung angepasst; alte Skript-Beschreibungen bleiben im Docs-Ordner, aber nur als Referenz
### Removed ### Removed
- **Alte Pine-Skripte entfernt:** `croc_vibes_3.8.0.pine`, `croc_vibes_3.9.0.pine`, `croc_vibes+blues.pine`, `blues_addon.pine` - **Alte Pine-Skripte entfernt:** `croc_vibes_3.8.0.pine`, `croc_vibes_3.9.0.pine`, `croc_vibes+blues.pine`, `blues_addon.pine`
- Ab sofort nur noch ein zentrales Skript: `indicators/croc_vibes.pine` - Ab sofort nur noch ein zentrales Skript: `indicators/croc_vibes.pine`

View File

@@ -1,14 +1,16 @@
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // =================================================================================================
// Croc Vibes by Telgos Version 4.1.0
// CrocVibes by Telgos // Lizenz: Mozilla Public License 2.0 https://mozilla.org/MPL/2.0/
// Danke für die Grundlagen und Basisversion: amper04, ray_duke, husky, Audidriver13 // Danksagung (Basis/Ideen): amper04, ray_duke, husky, Audidriver13
// =================================================================================================
//@version=6 //@version=6
// Version 4.0.1
indicator("Croc Vibes by Telgos", overlay=true, max_labels_count=500, max_lines_count=500) 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") // -------------------------------------
// Eingaben: Chart-Signale
// -------------------------------------
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") 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") 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") hellgruener_punkt_long = input.source(title="Hellgruener Punkt Long", defval=close, group="Chart-Signale")
@@ -21,6 +23,9 @@ lollipop_long = input.source(title="Lollipop long", defval=close, group
aw_rocket_long = input.source(title="AW-Rocket 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") bgrl_signal = input.source(title="Black Green Rocket Long", defval=close, group="Chart-Signale")
// -------------------------------------
// Eingaben: Lochstreifen / MSI
// -------------------------------------
kerze_g = input.source(title="Kerzenfarbe (1) Gruen", 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_s = input.source(title="Kerzenfarbe (2) Schwarz", defval=close, group="Lochstreifen")
kerze_r = input.source(title="Kerzenfarbe (3) Rot", defval=close, group="Lochstreifen") kerze_r = input.source(title="Kerzenfarbe (3) Rot", defval=close, group="Lochstreifen")
@@ -40,8 +45,14 @@ welle_rr = input.source(title="Welle (6) dunkelRot", defval=close, group="Lochs
src1 = input.source(close, "Day OverBought 1", group="MSI") src1 = input.source(close, "Day OverBought 1", group="MSI")
label_offset_mult = input.float(3.0, title="Label-Abstand (ATR x)", minval=0.1, step=0.1, group="Darstellung") // -------------------------------------
// Darstellung
// -------------------------------------
label_offset_mult = input.float(1.5, title="Label-Abstand (ATR x)", minval=0.1, step=0.1, group="Darstellung")
// -------------------------------------
// Helper / Ableitungen
// -------------------------------------
asBool(src) => nz(src) > 0 asBool(src) => nz(src) > 0
atr = ta.atr(16) atr = ta.atr(16)
@@ -102,6 +113,9 @@ f_rise(sig) =>
cond_prev = na(sig[1]) or (sig[1] <= 0) cond_prev = na(sig[1]) or (sig[1] <= 0)
cond_now and cond_prev cond_now and cond_prev
// -------------------------------------
// Zonenpflege für grüne/rote Wolke (Blues-Logik)
// -------------------------------------
var int g_zoneStart = na var int g_zoneStart = na
var float g_zoneHigh = na var float g_zoneHigh = na
g_switch = barstate.isfirst ? true : (g_active != g_active[1]) g_switch = barstate.isfirst ? true : (g_active != g_active[1])
@@ -215,6 +229,9 @@ if end_short
short_pending_active := false short_pending_active := false
short_refLow := na short_refLow := na
// -------------------------------------
// Standard-Alertbedingungen
// -------------------------------------
alertcondition(isPearlLong, title="Pearl Long", message="Pearl Diver erkannt {{ticker}} {{interval}}") alertcondition(isPearlLong, title="Pearl Long", message="Pearl Diver erkannt {{ticker}} {{interval}}")
alertcondition(isPearlShort, title="Pearl Short", message="Oyster Farmer 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(ulti_rally, title="Ulti Rally", message="Ulti Rally erkannt {{ticker}} {{interval}}")
@@ -231,6 +248,9 @@ alertcondition(ev_short_done, title="Blues: Ein Tief kommt noch (Erfüllt)",
alertcondition(ev_long_break, title="Blues: Ein Hoch kommt noch (Wolkenbruch)", message="Blues Long INVALID (Cloud Break) {{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}}") alertcondition(ev_short_break, title="Blues: Ein Tief kommt noch (Wolkenbruch)", message="Blues Short INVALID (Cloud Break) {{ticker}} {{interval}}")
// -------------------------------------
// Alert-Kombinator (UND/ODER)
// -------------------------------------
grp = "ALERT-COMBO" grp = "ALERT-COMBO"
optNone = "— (keins) —" optNone = "— (keins) —"
@@ -243,11 +263,11 @@ optRotesPlus = "Rotes Kreuz (grüne Wolke)"
optBlueLActive = "Blues: Ein Hoch kommt noch (aktiv)" optBlueLActive = "Blues: Ein Hoch kommt noch (aktiv)"
optBlueSActive = "Blues: Ein Tief 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) sel1 = input.string(optNone, "Signal-Auswahl 1", options=[optNone,optPearlLong,optPearlShort,optUlti,optStephan,optBGRL,optRotesPlus,optBlueLActive,optBlueSActive], 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) sel2 = input.string(optNone, "Signal-Auswahl 2", options=[optNone,optPearlLong,optPearlShort,optUlti,optStephan,optBGRL,optRotesPlus,optBlueLActive,optBlueSActive], 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) sel3 = input.string(optNone, "Signal-Auswahl 3", options=[optNone,optPearlLong,optPearlShort,optUlti,optStephan,optBGRL,optRotesPlus,optBlueLActive,optBlueSActive], 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) sel4 = input.string(optNone, "Signal-Auswahl 4", options=[optNone,optPearlLong,optPearlShort,optUlti,optStephan,optBGRL,optRotesPlus,optBlueLActive,optBlueSActive], 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) sel5 = input.string(optNone, "Signal-Auswahl 5", options=[optNone,optPearlLong,optPearlShort,optUlti,optStephan,optBGRL,optRotesPlus,optBlueLActive,optBlueSActive], 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).") 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) => f_pick(name) =>
@@ -295,22 +315,33 @@ comboCond = hasSelection ? (useOr ? anySel : allSel) : false
alertcondition(comboCond, title="ALERT-COMBO (aus Eingaben)", message="ALERT-COMBO erfüllt {{ticker}} {{interval}}") alertcondition(comboCond, title="ALERT-COMBO (aus Eingaben)", message="ALERT-COMBO erfüllt {{ticker}} {{interval}}")
// --- START: Telgos-Spezial-Alarm (Version 3 Kerzen) --- // -------------------------------------
// Telgos 2-Bar-Prime (Kerze 0 oder -1)
// -------------------------------------
grpTHP = "Telgos-Filter"
require_since_start = input.bool(true, "2-Bar-Prime: Auslöser seit Blues-Start", group=grpTHP)
// 1. Definieren, welche Signale als Auslöser gelten. // Auslösermenge für 2-Bar-Prime
var bool ausloeser_signal = isPearlLong or ulti_rally or stephan_setup or is_bgrl or is_rotes_plus 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. // Kerzenfenster: nur aktuelle Kerze (0) oder vorherige Kerze (-1)
hat_ausloeser_in_letzten_3_kerzen = ausloeser_signal[0] or ausloeser_signal[1] or ausloeser_signal[2] trigger_now_or_prev = ausloeser_signal or (bar_index > 0 ? ausloeser_signal[1] : false)
// 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. // Optional: Der Auslöser muss seit Beginn der aktuellen Blues-Phase aufgetreten sein
alertcondition(telgos_spezial_cond, title="Telgos-Spezial-Alarm", message="Telgos-Spezial: Hoch erwartet + Signal auf Kerze 0/-1/-2 ({{ticker}} {{interval}})") since_start = ta.barssince(ev_long_start)
since_trigger = ta.barssince(ausloeser_signal)
cond_since_start = not na(since_start) and not na(since_trigger) and since_trigger <= since_start
// --- ENDE: Telgos-Spezial-Alarm --- // Finale Bedingung
telgos_2bar_prime_cond = long_pending_active and trigger_now_or_prev and (not require_since_start or cond_since_start)
// Ein eigener Alarmtitel/-text
alertcondition(telgos_2bar_prime_cond, title="Telgos 2-Bar-Prime", message="Telgos 2-Bar-Prime {{ticker}} {{interval}}")
// -------------------------------------
// Labels / Shapes (dezente Visualisierung)
// -------------------------------------
if isPearlLong 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) 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 if isPearlShort