{% extends "base.html" %} {% block title %}Analysis - {{ coin.name }}{% endblock %} {% block content %}
← Analysis

{{ coin.name }} {{ coin.symbol }}

{% for tf in ['1h', '4h', '1D'] %} {{ tf }} {% endfor %}
{% if ctx.errors %}

Errors:

{% for e in ctx.errors %}

{{ e.algorithm }}: {{ e.error }}

{% endfor %}
{% endif %}

Harga

Rp {{ ctx.current_price|price }}

RSI (14)

{% set rsi = ctx.indicators.get('rsi_latest') %} {% if rsi %}

{{ rsi|num1 }}

{% else %}

-

{% endif %}

ATR

{% set atr = ctx.indicators.get('atr_latest') %} {% set atr_pct = ctx.indicators.get('atr_pct') %} {% if atr %}

{{ atr|idr2 }}

{{ atr_pct|pct2 if atr_pct else '' }} volatility

{% else %}

-

{% endif %}

Bollinger Position

{% set bb_pos = ctx.indicators.get('bb_position_latest') %}

{{ bb_pos|upper if bb_pos else '-' }}

Price Chart ({{ timeframe }})

Signal Contributions

{% if ctx.signal_contributions %}
{% for algo_id, contrib in ctx.signal_contributions.items() %}
{{ algo_id }} {{ contrib.signal }} weight {{ contrib.weight|num3 }} {{ contrib.reason }}
{% endfor %}
{% else %}

Tidak ada sinyal. Pastikan data OHLCV sudah di-sync.

{% endif %}

Moving Averages

{% for key in ['ema_9_latest', 'ema_20_latest', 'ema_50_latest', 'sma_20_latest', 'sma_50_latest', 'sma_200_latest'] %} {% set val = ctx.indicators.get(key) %} {% if val %} {% endif %} {% endfor %}
{{ key.replace('_latest','').upper() }} {{ val|idr2 }}

Ichimoku Cloud

{% set cloud = ctx.indicators.get('ichimoku_cloud') %}

Cloud: {{ cloud|upper if cloud else '-' }}

{% for key in ['ichimoku_tenkan_latest', 'ichimoku_kijun_latest', 'ichimoku_senkou_a_latest', 'ichimoku_senkou_b_latest'] %} {% set val = ctx.indicators.get(key) %} {% if val %} {% endif %} {% endfor %}
{{ key.replace('ichimoku_','').replace('_latest','').title() }} {{ val|idr2 }}

Support & Resistance

S/R Flip: {{ ctx.indicators.get('sr_flip') or 'None' }}

Support

{% set ns = ctx.indicators.get('nearest_support') %} {% if ns %}

{{ ns|idr2 }}

{% endif %}

Resistance

{% set nr = ctx.indicators.get('nearest_resistance') %} {% if nr %}

{{ nr|idr2 }}

{% endif %}

Patterns

{% set m = ctx.patterns.get('marubozu', {}) %} {% set cs = ctx.patterns.get('candlestick', {}) %}

Marubozu: {% if m.get('latest_bullish') %}Bullish ({{ m.latest_aggression }}%) {% elif m.get('latest_bearish') %}Bearish ({{ m.latest_aggression }}%) {% else %}None{% endif %}

{% if cs.get('detected') %}

Candlestick: {{ cs.detected|join(', ') }}

{% endif %}
{% set pp = ctx.quantitative.get('prorated_profit') %} {% if pp %}

Pro-rated Profit Target

Capital: Rp {{ pp.capital_idr|idr }} | Breakeven: {{ pp.breakeven_pct|pct2 }} (Rp {{ pp.breakeven_price|price }}) | Fee roundtrip: {{ pp.total_fee_roundtrip_pct }}%

{% for t in pp.targets %} {% endfor %}
Target Sell Price Net Profit Net % Fee
+{{ t.target_pct }}% {{ t.sell_price|price }} Rp {{ t.net_profit_idr|idr }} {{ t.net_profit_pct|spct2 }} {{ t.fee_total_idr|idr }}
{% endif %} {% set eta = ctx.quantitative.get('eta') %} {% if eta and eta.projections %}

Price Projections (ETA)

{% for period, proj in eta.projections.items() %}

{{ period }}

Upper{{ proj.upper_conservative|idr }}
Current{{ proj.current|idr }}
Lower{{ proj.lower_conservative|idr }}
{% endfor %}
{% endif %} {% set ml_horizons = ctx.ml_predictions.get('horizons', {}) %} {% if ml_horizons %}

ML Predictions

Ensemble: GradientBoosting + XGBoost + LightGBM | Trend: {{ ctx.ml_predictions.get('short_term_trend', 'unknown')|upper }}

{% for label, data in ml_horizons.items() %}

{{ label|title }} ({{ data.steps }} candles)

{{ data.pct_change|spct2 }}

Rp {{ data.predicted_price|price }}

{% endfor %}
{% endif %} {% set selector = ctx.strategy.get('selector', {}) %} {% if selector %}

Strategy Recommendation

Recommended

{{ selector.get('recommended', '-')|upper }}

Safety Rating

{% set safety = selector.get('safety_rating', 'MODERATE') %}

{{ safety }}

Volatility

{{ selector.atr_pct|pct if selector.atr_pct else '-' }}

{% set scalp_plan = ctx.strategy.get('scalping', {}).get('plan') %} {% if scalp_plan %}

Scalping Entry Plan

Entry

Rp {{ scalp_plan.entry_price|price }}

Stop Loss

Rp {{ scalp_plan.stop_loss|price }}

TP1

Rp {{ scalp_plan.take_profit_1|price }}

TP2

Rp {{ scalp_plan.take_profit_2|price }}

R:R

{{ scalp_plan.risk_reward }}x

{% endif %}
{% for strat_name, strat_data in selector.get('strategies', {}).items() %}
{{ strat_name|title }} {{ strat_data.score }}
{% endfor %}
{% endif %} {% set comp = ctx.strategy.get('compounding', {}) %} {% if comp.get('simulations') %}

Compounding Projections

Capital: Rp {{ comp.initial_capital|idr }} | Fee roundtrip: {{ comp.fee_roundtrip }}%

{% for sim in comp.simulations %}

{{ sim.scenario }}

{{ sim.profit_per_trade }}% profit/trade, {{ sim.trades_per_day }}x/day (net {{ sim.net_per_trade }}%)

+Rp {{ sim.compound_30d.profit|idr }}

30-day compound: {{ sim.compound_30d.profit_pct|spct }}

{% endfor %}
{% endif %}

Algorithms Used

{% for aid, ver in ctx.algorithm_versions.items() %} {{ aid }} v{{ ver }} {% endfor %}
{% endblock %} {% block scripts %} {% endblock %}