Update app.py
Browse files
app.py
CHANGED
|
@@ -62,6 +62,25 @@ def predict_patterns(data, future_hours=24):
|
|
| 62 |
patterns["Recovery"] = [last_price + (mean_price - last_price) * (i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 63 |
patterns["Acceleration"] = [last_price + (trend * 1.5) * i for i in range(len(future_timestamps))]
|
| 64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
pattern_dfs = {
|
| 66 |
pattern_name: pd.DataFrame({"timestamp": future_timestamps, "price": prices})
|
| 67 |
for pattern_name, prices in patterns.items()
|
|
@@ -140,7 +159,24 @@ for coin, price_data in crypto_prices.items():
|
|
| 140 |
"Plateau": "Ce pattern suggère que le prix restera relativement stable et horizontal, sans mouvements majeurs.",
|
| 141 |
"Breakout": "Le breakout indique une rupture de la tendance actuelle, avec une direction plus forte dans une des deux directions.",
|
| 142 |
"Recovery": "Le pattern de récupération suggère que le prix pourrait revenir à sa moyenne historique après une variation importante.",
|
| 143 |
-
"Acceleration": "L'accélération suggère un mouvement rapide des prix, souvent après une période de stagnation ou de consolidation."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
}
|
| 145 |
|
| 146 |
# Afficher l'explication sous le graphique
|
|
|
|
| 62 |
patterns["Recovery"] = [last_price + (mean_price - last_price) * (i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 63 |
patterns["Acceleration"] = [last_price + (trend * 1.5) * i for i in range(len(future_timestamps))]
|
| 64 |
|
| 65 |
+
# Ajout des 20 autres patterns
|
| 66 |
+
patterns["Overbought"] = [last_price + cycle_amplitude * np.cos(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 67 |
+
patterns["Oversold"] = [last_price - cycle_amplitude * np.cos(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 68 |
+
patterns["DoubleTop"] = [last_price + trend * 2 if i < len(future_timestamps) // 2 else last_price - trend * 2 for i in range(len(future_timestamps))]
|
| 69 |
+
patterns["DoubleBottom"] = [last_price - trend * 2 if i < len(future_timestamps) // 2 else last_price + trend * 2 for i in range(len(future_timestamps))]
|
| 70 |
+
patterns["HeadAndShoulders"] = [last_price + (cycle_amplitude * np.sin(2 * np.pi * i / (len(future_timestamps) // 2))) for i in range(len(future_timestamps))]
|
| 71 |
+
patterns["InverseHeadAndShoulders"] = [last_price - (cycle_amplitude * np.sin(2 * np.pi * i / (len(future_timestamps) // 2))) for i in range(len(future_timestamps))]
|
| 72 |
+
patterns["Parabolic"] = [last_price + (cycle_amplitude * i ** 2) for i in range(len(future_timestamps))]
|
| 73 |
+
patterns["ExponentialGrowth"] = [last_price * (1 + 0.05) ** i for i in range(len(future_timestamps))]
|
| 74 |
+
patterns["ExponentialDecay"] = [last_price * (1 - 0.05) ** i for i in range(len(future_timestamps))]
|
| 75 |
+
patterns["Sinusoidal"] = [last_price + cycle_amplitude * np.sin(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 76 |
+
patterns["Flatline"] = [last_price for i in range(len(future_timestamps))]
|
| 77 |
+
patterns["HarmonicOscillator"] = [last_price + cycle_amplitude * np.cos(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 78 |
+
patterns["Waveform"] = [last_price + cycle_amplitude * np.sin(i) for i in range(len(future_timestamps))]
|
| 79 |
+
patterns["SwingHigh"] = [last_price + cycle_amplitude * np.sin(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 80 |
+
patterns["SwingLow"] = [last_price - cycle_amplitude * np.sin(2 * np.pi * i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 81 |
+
patterns["AscendingTriangle"] = [last_price + cycle_amplitude * np.exp(i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 82 |
+
patterns["DescendingTriangle"] = [last_price - cycle_amplitude * np.exp(i / len(future_timestamps)) for i in range(len(future_timestamps))]
|
| 83 |
+
|
| 84 |
pattern_dfs = {
|
| 85 |
pattern_name: pd.DataFrame({"timestamp": future_timestamps, "price": prices})
|
| 86 |
for pattern_name, prices in patterns.items()
|
|
|
|
| 159 |
"Plateau": "Ce pattern suggère que le prix restera relativement stable et horizontal, sans mouvements majeurs.",
|
| 160 |
"Breakout": "Le breakout indique une rupture de la tendance actuelle, avec une direction plus forte dans une des deux directions.",
|
| 161 |
"Recovery": "Le pattern de récupération suggère que le prix pourrait revenir à sa moyenne historique après une variation importante.",
|
| 162 |
+
"Acceleration": "L'accélération suggère un mouvement rapide des prix, souvent après une période de stagnation ou de consolidation.",
|
| 163 |
+
"Overbought": "Le prix est suracheté, ce qui pourrait indiquer une inversion de tendance à la baisse.",
|
| 164 |
+
"Oversold": "Le prix est survendu, ce qui pourrait indiquer une inversion de tendance à la hausse.",
|
| 165 |
+
"DoubleTop": "Il y a deux pics proches, et le prix pourrait redescendre après le deuxième sommet.",
|
| 166 |
+
"DoubleBottom": "Il y a deux creux proches, et le prix pourrait rebondir après le deuxième creux.",
|
| 167 |
+
"HeadAndShoulders": "La tête et les épaules représentent une inversion de tendance, le prix pourrait chuter après la formation.",
|
| 168 |
+
"InverseHeadAndShoulders": "L'inverse de la tête et des épaules représente une inversion à la hausse.",
|
| 169 |
+
"Parabolic": "Le prix suit une courbe parabolique, souvent avant un renversement brusque.",
|
| 170 |
+
"ExponentialGrowth": "Le prix suit une croissance exponentielle rapide.",
|
| 171 |
+
"ExponentialDecay": "Le prix suit une décroissance exponentielle rapide.",
|
| 172 |
+
"Sinusoidal": "Le prix fluctue selon un pattern sinusoïdal.",
|
| 173 |
+
"Flatline": "Le prix est stable, sans changements significatifs.",
|
| 174 |
+
"HarmonicOscillator": "Le prix suit un oscillateur harmonique, avec des fluctuations régulières.",
|
| 175 |
+
"Waveform": "Le prix suit une forme d'onde régulière.",
|
| 176 |
+
"SwingHigh": "Le prix forme des pics élevés, suggérant un renversement.",
|
| 177 |
+
"SwingLow": "Le prix forme des creux profonds, suggérant une tendance à la hausse.",
|
| 178 |
+
"AscendingTriangle": "Le prix suit une formation de triangle ascendant, avec des résistances élevées.",
|
| 179 |
+
"DescendingTriangle": "Le prix suit une formation de triangle descendant, avec des supports bas."
|
| 180 |
}
|
| 181 |
|
| 182 |
# Afficher l'explication sous le graphique
|