| import streamlit as st |
| import numpy as np |
| import pandas as pd |
|
|
| st.set_page_config(page_title="Aviator Pattern Tracker Pro", layout="centered") |
|
|
| |
| |
| |
| if "history" not in st.session_state: |
| st.session_state.history = [] |
|
|
| |
| |
| |
| st.title("🎯 Aviator Pattern Tracker Pro") |
| st.caption("Pattern + Expected Multiplier + Risk Control (Bangla UI)") |
|
|
| |
| |
| |
| st.subheader("📥 Multiplier Input") |
|
|
| new_val = st.number_input("নতুন multiplier দিন (example: 1.45)", min_value=1.0, step=0.01) |
|
|
| col1, col2 = st.columns(2) |
|
|
| with col1: |
| if st.button("➕ Add"): |
| st.session_state.history.append(round(new_val, 2)) |
|
|
| with col2: |
| if st.button("🔁 Reset"): |
| st.session_state.history = [] |
|
|
| |
| |
| |
| data = st.session_state.history[-50:] |
|
|
| st.subheader("📊 Last 50 Rounds") |
| st.write(data) |
|
|
| if len(data) < 5: |
| st.warning("কমপক্ষে 5টা multiplier দিন") |
| st.stop() |
|
|
| |
| |
| |
| low = [x for x in data if x < 1.5] |
| mid = [x for x in data if 1.5 <= x <= 3] |
| high = [x for x in data if x > 3] |
|
|
| low_ratio = len(low) / len(data) |
| high_ratio = len(high) / len(data) |
|
|
| mean = np.mean(data) |
| std = np.std(data) |
|
|
| |
| chaos = (std * high_ratio) / (low_ratio + 0.1) |
|
|
| |
| low_streak = 0 |
| for x in reversed(data): |
| if x < 1.5: |
| low_streak += 1 |
| else: |
| break |
|
|
| |
| stability_score = max(0, 1 - std/5) |
| distribution_score = 1 - abs(low_ratio - 0.5) |
| confidence = ((low_streak/5) + stability_score + distribution_score) / 3 |
| confidence = max(0, min(confidence, 1)) |
|
|
| |
| |
| |
| arr = np.array(data) |
|
|
| weights = np.linspace(1, 2, len(arr)) |
| weighted_mean = np.average(arr, weights=weights) |
|
|
| median = np.median(arr) |
|
|
| sorted_arr = np.sort(arr) |
| trim = int(len(arr) * 0.1) |
| trimmed = sorted_arr[trim: len(arr)-trim] if len(arr) > 10 else arr |
| trimmed_mean = np.mean(trimmed) |
|
|
| expected = (weighted_mean * 0.5) + (median * 0.3) + (trimmed_mean * 0.2) |
|
|
| lower = expected - (std * 0.5) |
| upper = expected + (std * 0.5) |
| lower = max(1.01, lower) |
|
|
| |
| |
| |
| if chaos > 1.2: |
| signal = "🔴 SKIP" |
| risk = "HIGH RISK" |
| elif low_streak >= 3 and std < 1.5: |
| signal = "🟢 ENTER (SMALL)" |
| risk = "LOW RISK" |
| else: |
| signal = "🟡 WAIT" |
| risk = "MEDIUM" |
|
|
| |
| if signal.startswith("🟢") and expected < 1.4: |
| signal = "🟡 WAIT (Expected Low)" |
|
|
| if signal.startswith("🟢") and expected > 2.0: |
| signal = "🟢 ENTER (GOOD ZONE)" |
|
|
| |
| |
| |
| st.subheader("📈 Analysis") |
|
|
| c1, c2, c3 = st.columns(3) |
| c1.metric("Mean", round(mean,2)) |
| c2.metric("Std Dev", round(std,2)) |
| c3.metric("Chaos", round(chaos,2)) |
|
|
| st.divider() |
|
|
| st.subheader("🎯 Expected Multiplier") |
| e1, e2 = st.columns(2) |
| e1.metric("Expected", round(expected,2)) |
| e2.metric("Range", f"{round(lower,2)} - {round(upper,2)}") |
|
|
| st.divider() |
|
|
| st.subheader("🧠 Decision") |
| st.markdown(f"### {signal}") |
| st.markdown(f"**Confidence:** {round(confidence,2)}") |
| st.markdown(f"**Risk Level:** {risk}") |
|
|
| |
| |
| |
| st.divider() |
| st.subheader("📘 Strategy Guide") |
|
|
| st.markdown(""" |
| **Entry Rule:** |
| - ছোট bet only |
| - auto cashout: 1.5x – 1.8x |
| |
| **Stop Rule:** |
| - 2 loss in row → STOP |
| - 1 big win (>3x) → next 2 round skip |
| |
| **Expected Guide:** |
| - <1.4 → weak |
| - 1.4–1.8 → safe |
| - 1.8–2.5 → medium |
| - >2.5 → volatile |
| |
| ⚠️ এটি কোনো নিশ্চিত জেতার tool না |
| """) |