Erweiterte Krypto-Bewertungszonen mit ETH/BTC-Kontext
Hauptfunktionen
1. Zeigt 6 Preiszonen basierend auf MA200-Multiplikatoren (Blase, Take-Profit, Fair Value, Akkumulation, Value Buy, Strong Buy)
2. Fügt ETH/BTC-Verhältniskontext für stärkere Signale hinzu
3. Funktioniert mit jeder Kryptowährung mit ausreichender Preishistorie (ETH, SOL, AAVE usw.)
Farbintensität ändert sich basierend auf den Marktbedingungen

So lesen Sie
Farbzonen: Preis relativ zu seiner MA200-Historie
Zonenopazität: Stärkere Farbe = stärkeres Signal (beeinflusst durch ETH/BTC-Kontext)
Statusfeld: Zeigt den aktuellen „Erweiterten Status“ an, der Preisniveau mit ETH/BTC-Kontext kombiniert
Kontextzeile: Erklärt, warum das Signal stark oder schwach ist
Kauf-/Verkaufssignale
Starke Kaufsignale:
- „EXTREM WERT“ (blaue Zone + BTC-Dominanz)
- „STARKER WERTKAUF“ (cyanfarbene Zone + BTC-Präferenz)
Take-Profit-Signale: - „BESTÄTIGTE BLASE“ (lila Zone + Altcoin-Dominanz)
- „NAHME AN BLASE“ (rote Zone + steigende Altcoin-Stärke)
Anpassung
- Mehrere Schwellenwerte anpassen (0,6x, 0,8x, 2,0x, 2,5x, 3,0x)
- ETH/BTC-Kontextanalyse umschalten
- ETH/BTC-Schwellenwerte für Markttendenz konfigurieren
- MA-Länge von Standard 200 ändern
Dieser Indikator hilft dabei, optimale Einstiegs- und Ausstiegspunkte zu identifizieren, indem er die vertikalen Farbstreifen auf Ihrem Diagramm beobachtet. Suchen Sie nach tiefblauen/cyanfarbenen Zonen mit hoher Opazität für starke Kaufgelegenheiten und intensiven violetten/roten Zonen für potenzielle Ausstiege. Je dunkler die Farbintensität, desto stärker das Signal – keine komplexe Interpretation erforderlich!
Quelle: https://de.tradingview.com/script/gpQ2PDyM-Mayer-Multiple-Zones-Crypto/
TradingView Pine Script
//@version=5
// =====================================================
// Mayer Multiple Zones with ETH/BTC Context
// Description: Visualizes price zones with context from the ETH/BTC ratio on ETH/USDT chart
// Author: Warp
// Version: 1.0.0
// =====================================================
indicator(title=" Mayer Multiple Zones (Crypto)", overlay=true, precision=2, max_labels_count=500)
// =====================================================
// Configuration Parameters
// =====================================================
source = close
ma_length = input.int(200, "MA Length", minval=1, group="Core Settings")
// Configurable multipliers
mult_strong_buy = input.float(0.6, "Strong Buy Multiple", minval=0.1, step=0.1, group="Mayer Multipliers")
mult_value_buy = input.float(0.8, "Value Buy Multiple", minval=0.1, step=0.1, group="Mayer Multipliers")
mult_fair_value = input.float(2.0, "Fair Value Threshold", minval=1.0, step=0.1, group="Mayer Multipliers")
mult_take_profit = input.float(2.5, "Take Profit Threshold", minval=1.0, step=0.1, group="Mayer Multipliers")
mult_bubble = input.float(3.0, "Bubble Territory Threshold", minval=1.0, step=0.1, group="Mayer Multipliers")
// ETH/BTC Settings
use_ethbtc = input.bool(true, "Use ETH/BTC Context", group="ETH/BTC Analysis")
ethbtc_symbol = input.symbol("ETHBTC", "ETH/BTC Symbol", group="ETH/BTC Analysis")
ethbtc_lookback = input.int(200, "ETH/BTC MA Length", minval=10, group="ETH/BTC Analysis")
ethbtc_low_threshold = input.float(0.8, "ETH/BTC Low Threshold", minval=0.5, maxval=0.95, step=0.05, tooltip="ETH/BTC ratio below this value of its MA200 indicates BTC Dominance", group="ETH/BTC Analysis")
ethbtc_high_threshold = input.float(1.2, "ETH/BTC High Threshold", minval=1.05, maxval=2.0, step=0.05, tooltip="ETH/BTC ratio above this value of its MA200 indicates Altcoin Dominance", group="ETH/BTC Analysis")
// =====================================================
// MA200 and Multiple Calculation
// =====================================================
standard_ma200 = ta.sma(source, ma_length)
// Propagate MA200 value across all bars in all timeframes
var float last_valid_ma = na
// Update last valid MA when we have a value
if not na(standard_ma200)
last_valid_ma := standard_ma200
// Use last valid MA when current is NA
true_ma200 = not na(standard_ma200) ? standard_ma200 : last_valid_ma
// Calculate current price multiple
curr_multiple = close / true_ma200
// =====================================================
// ETH/BTC Context Analysis
// =====================================================
// Get ETH/BTC data
[ethbtc_close, ethbtc_security_available] = request.security(ethbtc_symbol, "", [close, 1], lookahead=barmerge.lookahead_off)
// Calculate ETH/BTC MA200
ethbtc_ma200 = ta.sma(ethbtc_close, ethbtc_lookback)
// Calculate normalized ETH/BTC ratio (relative to its own MA200)
ethbtc_normalized = ethbtc_close / ethbtc_ma200
// Define the market context based on ETH/BTC
var string ethbtc_context = "NEUTRAL"
var color ethbtc_context_color = color.gray
if use_ethbtc and not na(ethbtc_normalized)
if ethbtc_normalized < ethbtc_low_threshold
ethbtc_context := "BTC DOMINANCE"
ethbtc_context_color := #F9A825 // Gold for BTC
else if ethbtc_normalized > ethbtc_high_threshold
ethbtc_context := "ALTCOIN DOMINANCE"
ethbtc_context_color := #26A69A // Teal for Altcoins
else
ethbtc_context := "BALANCED MARKET"
ethbtc_context_color := #78909C // Blue-Gray for neutral
// =====================================================
// Combined Market Analysis
// =====================================================
var string combined_status = "UNKNOWN"
var string context_detail = ""
// Define alpha adjustments based on context
var int alpha_adjustment = 0
var int label_alpha_adjustment = 0
if use_ethbtc and not na(ethbtc_normalized)
// For Bubble Zone
if curr_multiple >= mult_bubble
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "CONFIRMED BUBBLE"
context_detail := "Double confirmation: high multiple + altcoin season"
alpha_adjustment := -30 // More opaque/visible (less transparent)
label_alpha_adjustment := -20
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "BTC-CENTRIC BUBBLE"
context_detail := "BTC-focused bubble - watch for rotation"
alpha_adjustment := 0
label_alpha_adjustment := 0
else
combined_status := "DEVELOPING BUBBLE"
context_detail := "High multiple but balanced market"
alpha_adjustment := 15
label_alpha_adjustment := 10
// For Take Profit Zone
else if curr_multiple >= mult_take_profit
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "APPROACHING BUBBLE"
context_detail := "Take profit + altcoin strength signals peak forming"
alpha_adjustment := -20
label_alpha_adjustment := -15
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "BTC TAKE PROFIT"
context_detail := "Strong BTC but limited altcoin interest"
alpha_adjustment := 10
label_alpha_adjustment := 5
else
combined_status := "GENERAL TAKE PROFIT"
context_detail := "Elevated valuation in balanced market"
alpha_adjustment := 0
label_alpha_adjustment := 0
// For Fair Value Zone
else if curr_multiple >= 1.0
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "ALTCOIN PREFERENCE"
context_detail := "Fair BTC value with altcoin rotation"
alpha_adjustment := 0
label_alpha_adjustment := 0
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "BTC PREFERENCE"
context_detail := "Fair value with BTC dominance"
alpha_adjustment := 0
label_alpha_adjustment := 0
else
combined_status := "BALANCED GROWTH"
context_detail := "Fair value in balanced market"
alpha_adjustment := 0
label_alpha_adjustment := 0
// For Accumulation Zone
else if curr_multiple >= mult_value_buy
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "ALTCOIN ACCUMULATION"
context_detail := "BTC accumulation with altcoin strength"
alpha_adjustment := 10
label_alpha_adjustment := 5
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "STRONG ACCUMULATION"
context_detail := "BTC accumulation with BTC preference"
alpha_adjustment := -15
label_alpha_adjustment := -10
else
combined_status := "GENERAL ACCUMULATION"
context_detail := "Accumulation in balanced market"
alpha_adjustment := 0
label_alpha_adjustment := 0
// For Value Buy Zone
else if curr_multiple >= mult_strong_buy
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "VALUE BUY (ALTCOIN BIAS)"
context_detail := "Value zone with altcoin preference"
alpha_adjustment := 15
label_alpha_adjustment := 10
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "STRONG VALUE BUY"
context_detail := "Value zone with BTC preference - strong signal"
alpha_adjustment := -25
label_alpha_adjustment := -15
else
combined_status := "VALUE BUY"
context_detail := "Value zone in balanced market"
alpha_adjustment := 0
label_alpha_adjustment := 0
// For Strong Buy Zone
else
if ethbtc_normalized > ethbtc_high_threshold
combined_status := "STRONG BUY (CAUTION)"
context_detail := "Strong buy but with altcoin preference"
alpha_adjustment := 10
label_alpha_adjustment := 5
else if ethbtc_normalized < ethbtc_low_threshold
combined_status := "EXTREME VALUE"
context_detail := "Strong buy with BTC preference - maximum opportunity"
alpha_adjustment := -30
label_alpha_adjustment := -20
else
combined_status := "STRONG BUY"
context_detail := "Strong buy in balanced market"
alpha_adjustment := 0
label_alpha_adjustment := 0
else
// Fallback to basic status if not using ETH/BTC or if data is NA
if not na(curr_multiple)
if curr_multiple >= mult_bubble
combined_status := "BUBBLE ZONE"
else if curr_multiple >= mult_take_profit
combined_status := "TAKE PROFIT ZONE"
else if curr_multiple >= mult_fair_value
combined_status := "FAIR VALUE ZONE"
else if curr_multiple >= 1.0
combined_status := "FAIR VALUE ZONE"
else if curr_multiple >= mult_value_buy
combined_status := "ACCUMULATION ZONE"
else if curr_multiple >= mult_strong_buy
combined_status := "VALUE BUY ZONE"
else
combined_status := "STRONG BUY ZONE"
// =====================================================
// Color Definitions - Dynamic based on context
// =====================================================
// Primary colors for lines
color color_ma200 = color.new(color.white, 0)
color color_06x = color.new(#1E88E5, 0) // Blue
color color_08x = color.new(#00ACC1, 0) // Cyan
color color_20x = color.new(#FB8C00, 0) // Orange
color color_25x = color.new(#F44336, 0) // Red
color color_30x = color.new(#9C27B0, 0) // Purple
color color_accum = color.new(#FDD835, 0) // Yellow
// Base transparency values
var int base_zone_alpha = 85
var int base_label_alpha = 60
// Compute actual alpha values with context adjustments
int zone_strong_buy_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int zone_value_buy_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int zone_accum_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int zone_fair_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int zone_profit_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int zone_bubble_alpha = math.max(0, math.min(100, base_zone_alpha + alpha_adjustment))
int label_strong_buy_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
int label_value_buy_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
int label_accum_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
int label_fair_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
int label_profit_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
int label_bubble_alpha = math.max(0, math.min(100, base_label_alpha + label_alpha_adjustment))
// Apply dynamic transparency based on context
color color_zone_strong_buy = color.new(color_06x, zone_strong_buy_alpha)
color color_zone_value_buy = color.new(color_08x, zone_value_buy_alpha)
color color_zone_accum = color.new(color_accum, zone_accum_alpha)
color color_zone_fair = color.new(color_20x, zone_fair_alpha)
color color_zone_profit = color.new(color_25x, zone_profit_alpha)
color color_zone_bubble = color.new(color_30x, zone_bubble_alpha)
// Dynamic label colors
color color_label_06x = color.new(color_06x, label_strong_buy_alpha)
color color_label_08x = color.new(color_08x, label_value_buy_alpha)
color color_label_20x = color.new(color_20x, label_fair_alpha)
color color_label_25x = color.new(color_25x, label_profit_alpha)
color color_label_30x = color.new(color_30x, label_bubble_alpha)
color color_label_accum = color.new(color_accum, label_accum_alpha)
// Precomputed even more transparent colors for table backgrounds
var color color_bg_25x = color.new(color_25x, 95)
var color color_bg_30x = color.new(color_30x, 95)
var color color_bg_gray = color.new(color.gray, 95)
// =====================================================
// Band Calculation Based on Multiples
// =====================================================
// Calculate band prices
band_06x = true_ma200 * mult_strong_buy
band_08x = true_ma200 * mult_value_buy
band_20x = true_ma200 * mult_fair_value
band_25x = true_ma200 * mult_take_profit
band_30x = true_ma200 * mult_bubble
// =====================================================
// Plot Lines
// =====================================================
// 200-day MA as horizontal line
plot(true_ma200, "200-Day MA", color=color_ma200, linewidth=2)
// Mayer Band plots
p_06x = plot(band_06x, "0.6x Band", color=color_06x, linewidth=1)
p_08x = plot(band_08x, "0.8x Band", color=color_08x, linewidth=1)
p_20x = plot(band_20x, "2.0x Band", color=color_20x, linewidth=1)
p_25x = plot(band_25x, "2.5x Band", color=color_25x, linewidth=1)
p_30x = plot(band_30x, "3.0x Band", color=color_30x, linewidth=1)
// Bottom reference for filling
p_bottom = plot(band_06x * 0.5, "Bottom Reference", color=color.new(color_06x, 100))
// Invisible plot for fills
p_ma200_fill = plot(true_ma200, "MA200 for Fill", color=color.new(color_ma200, 100))
// =====================================================
// Fill Between Bands with Context-Adjusted Colors
// =====================================================
fill(p_ma200_fill, p_20x, color=color_zone_fair, title="Fair Value Zone")
fill(p_20x, p_25x, color=color_zone_profit, title="Take Profit Zone")
fill(p_25x, p_30x, color=color_zone_bubble, title="Bubble Zone")
fill(p_08x, p_ma200_fill, color=color_zone_accum, title="Accumulation Zone")
fill(p_06x, p_08x, color=color_zone_value_buy, title="Value Buy Zone")
fill(p_bottom, p_06x, color=color_zone_strong_buy, title="Strong Buy Zone")
// =====================================================
// Market Status Determination
// =====================================================
var string basic_market_status = ""
var color status_color = color.white
var color status_bg_color = color.new(color.white, 20)
// Set basic status based on current multiple with error handling
if not na(curr_multiple)
if (curr_multiple < mult_strong_buy)
basic_market_status := "STRONG BUY ZONE"
status_color := color_06x
else if (curr_multiple < mult_value_buy)
basic_market_status := "VALUE BUY ZONE"
status_color := color_08x
else if (curr_multiple < 1.0)
basic_market_status := "ACCUMULATION ZONE"
status_color := color_accum
else if (curr_multiple < mult_fair_value)
basic_market_status := "FAIR VALUE ZONE"
status_color := color_20x
else if (curr_multiple < mult_take_profit)
basic_market_status := "TAKE PROFIT ZONE"
status_color := color_25x
else
basic_market_status := "BUBBLE ZONE"
status_color := color_30x
// Precompute status background color with alpha
status_bg_color := color.new(status_color, 20)
// =====================================================
// Zone Labels
// =====================================================
if barstate.islast and not na(true_ma200)
// Calculate horizontal position for labels
var int label_offset = 20
var int x_position = bar_index + label_offset
// Create labels for each zone - using context-adjusted colors
label.new(x_position, (band_25x + band_30x) / 2, "BUBBLE ZONE",
color=color_label_30x,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
label.new(x_position, (band_20x + band_25x) / 2, "TAKE PROFIT ZONE",
color=color_label_25x,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
label.new(x_position, (true_ma200 + band_20x) / 2, "FAIR VALUE ZONE",
color=color_label_20x,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
label.new(x_position, (band_08x + true_ma200) / 2, "ACCUMULATION ZONE",
color=color_label_accum,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
label.new(x_position, (band_06x + band_08x) / 2, "VALUE BUY ZONE",
color=color_label_08x,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
label.new(x_position, band_06x / 2 + band_06x * 0.25, "STRONG BUY ZONE",
color=color_label_06x,
textcolor=color.white,
style=label.style_label_left,
size=size.small)
// =====================================================
// Enhanced Information Table
// =====================================================
if (barstate.islast)
// Create table
var table infoTable = table.new(position.top_right, 2, 12,
bgcolor=color.new(color.black, 80),
border_width=1,
border_color=color.new(color.gray, 70),
frame_width=1,
frame_color=color.new(color.gray, 70))
// Text size
textSize = size.normal
// Header with Combined Status
table.cell(infoTable, 0, 0, "ENHANCED STATUS",
text_color=color.white,
bgcolor=status_bg_color,
text_size=textSize)
table.cell(infoTable, 1, 0, combined_status,
text_color=color.white,
bgcolor=status_bg_color,
text_size=textSize)
// Add context detail if available
if use_ethbtc and context_detail != ""
table.cell(infoTable, 0, 1, "CONTEXT",
text_color=color.white,
bgcolor=color.new(ethbtc_context_color, 85),
text_size=size.small)
table.cell(infoTable, 1, 1, context_detail,
text_color=color.white,
bgcolor=color.new(ethbtc_context_color, 85),
text_size=size.small)
// Current price and multiple - handle NA case
row_offset = use_ethbtc and context_detail != "" ? 2 : 1
table.cell(infoTable, 0, row_offset, "Price",
text_color=color.white,
bgcolor=color_bg_gray,
text_size=textSize)
price_str = str.tostring(close, "#.##")
multiple_str = not na(curr_multiple) ? " (" + str.tostring(curr_multiple, "#.##") + "x)" : ""
price_color = not na(curr_multiple) ?
(curr_multiple < mult_value_buy ? color_08x :
curr_multiple > mult_take_profit ? color_25x : color_accum) :
color.white
table.cell(infoTable, 1, row_offset, price_str + multiple_str,
text_color=price_color,
bgcolor=color_bg_gray,
text_size=textSize)
// MA200 value
row_offset += 1
table.cell(infoTable, 0, row_offset, "MA200",
text_color=color_ma200,
text_size=textSize)
table.cell(infoTable, 1, row_offset, str.tostring(true_ma200, "#.##"),
text_color=color_ma200,
text_size=textSize)
// ETH/BTC Section (if enabled)
if use_ethbtc
row_offset += 1
table.cell(infoTable, 0, row_offset, "ETH/BTC Context",
text_color=ethbtc_context_color,
text_size=textSize)
table.cell(infoTable, 1, row_offset, ethbtc_context,
text_color=ethbtc_context_color,
text_size=textSize)
row_offset += 1
table.cell(infoTable, 0, row_offset, "ETH/BTC Ratio",
text_color=color.white,
text_size=textSize)
ethbtc_str = str.tostring(ethbtc_normalized, "#.##") + "x MA"
ethbtc_display_color = ethbtc_context_color
table.cell(infoTable, 1, row_offset, ethbtc_str,
text_color=ethbtc_display_color,
text_size=textSize)
// Show the actual multiplier values in the labels to reflect user configuration
row_offset += 1
mult_06x_str = str.tostring(mult_strong_buy, "#.#") + "x"
mult_08x_str = str.tostring(mult_value_buy, "#.#") + "x"
mult_20x_str = str.tostring(mult_fair_value, "#.#") + "x"
mult_25x_str = str.tostring(mult_take_profit, "#.#") + "x"
mult_30x_str = str.tostring(mult_bubble, "#.#") + "x"
// 0.6x Band (or user configured value)
table.cell(infoTable, 0, row_offset, mult_06x_str,
text_color=color_06x,
text_size=textSize)
table.cell(infoTable, 1, row_offset, str.tostring(band_06x, "#.##"),
text_color=color_06x,
text_size=textSize)
// 0.8x Band (or user configured value)
row_offset += 1
table.cell(infoTable, 0, row_offset, mult_08x_str,
text_color=color_08x,
text_size=textSize)
table.cell(infoTable, 1, row_offset, str.tostring(band_08x, "#.##"),
text_color=color_08x,
text_size=textSize)
// 2.0x Band (or user configured value)
row_offset += 1
table.cell(infoTable, 0, row_offset, mult_20x_str,
text_color=color_20x,
text_size=textSize)
table.cell(infoTable, 1, row_offset, str.tostring(band_20x, "#.##"),
text_color=color_20x,
text_size=textSize)
// 2.5x Band (RED) (or user configured value)
row_offset += 1
table.cell(infoTable, 0, row_offset, mult_25x_str,
text_color=color_25x,
text_size=textSize,
bgcolor=color_bg_25x)
table.cell(infoTable, 1, row_offset, str.tostring(band_25x, "#.##"),
text_color=color_25x,
bgcolor=color_bg_25x,
text_size=textSize)
// 3.0x Band (VIOLET) (or user configured value)
row_offset += 1
table.cell(infoTable, 0, row_offset, mult_30x_str,
text_color=color_30x,
text_size=textSize,
bgcolor=color_bg_30x)
table.cell(infoTable, 1, row_offset, str.tostring(band_30x, "#.##"),
text_color=color_30x,
bgcolor=color_bg_30x,
text_size=textSize)