Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -342,6 +342,23 @@ def equity_figure(curve, dds):
|
|
| 342 |
return fig
|
| 343 |
|
| 344 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 345 |
def mc_figure(mc):
|
| 346 |
p = mc["pct"]*100
|
| 347 |
x = np.arange(p.shape[1])
|
|
@@ -363,7 +380,7 @@ def run_engine(ticker, period, horizon, side_mode, equity, min_risk, max_risk,
|
|
| 363 |
max_leverage, fee, slip, train_window,
|
| 364 |
p_min, p_gap, flat_max, agree_min, bacc_min, min_trades,
|
| 365 |
skip_overlap, whole_units):
|
| 366 |
-
empty = (None, None, None, None, pd.DataFrame(), None)
|
| 367 |
try:
|
| 368 |
ticker = str(ticker).strip().upper()
|
| 369 |
h = int(horizon)
|
|
@@ -613,6 +630,7 @@ TP/SL optimizasyon rejimi: {regime_used}. Yeterli rejim örneği yoksa tüm geli
|
|
| 613 |
|
| 614 |
price_fig = price_figure(df, ticker, trades_df, trade_ok, stop, target)
|
| 615 |
eq_fig = equity_figure(curve, dds) if len(R) else None
|
|
|
|
| 616 |
mc_fig = mc_figure(mc) if mc else None
|
| 617 |
|
| 618 |
disclaimer = (
|
|
@@ -628,7 +646,7 @@ TP/SL optimizasyon rejimi: {regime_used}. Yeterli rejim örneği yoksa tüm geli
|
|
| 628 |
"broker fiyatı farklı olabilir. Gap ve kayma kaybı planlanan riskin üstüne çıkarabilir. "
|
| 629 |
"Canlı hesap öncesi paper trading ve broker bazlı doğrulama zorunludur."
|
| 630 |
)
|
| 631 |
-
return (report, prob_figure(p_down, p_flat, p_up), price_fig, eq_fig, mc_fig,
|
| 632 |
top_df, csv_path, disclaimer)
|
| 633 |
|
| 634 |
except Exception as exc:
|
|
@@ -679,6 +697,7 @@ with gr.Blocks(title=APP_TITLE, theme=gr.themes.Soft()) as demo:
|
|
| 679 |
with gr.Tab("Grafik"):
|
| 680 |
chart = gr.Plot()
|
| 681 |
with gr.Tab("OOS backtest"):
|
|
|
|
| 682 |
equity_plot = gr.Plot()
|
| 683 |
with gr.Tab("Monte Carlo"):
|
| 684 |
mc_plot = gr.Plot()
|
|
@@ -694,9 +713,10 @@ with gr.Blocks(title=APP_TITLE, theme=gr.themes.Soft()) as demo:
|
|
| 694 |
max_leverage, fee, slip, train_window,
|
| 695 |
p_min, p_gap, flat_max, agree_min, bacc_min, min_trades,
|
| 696 |
skip_overlap, whole_units],
|
| 697 |
-
outputs=[output, prob_plot, chart, equity_plot, mc_plot, optimization,
|
| 698 |
csv_file, disclaimer],
|
| 699 |
)
|
| 700 |
|
| 701 |
if __name__ == "__main__":
|
| 702 |
demo.launch(server_name="0.0.0.0", server_port=7860)
|
|
|
|
|
|
| 342 |
return fig
|
| 343 |
|
| 344 |
|
| 345 |
+
def pf_gauge(pf, n):
|
| 346 |
+
shown = 3.0 if np.isinf(pf) else float(min(pf, 3.0))
|
| 347 |
+
fig = go.Figure(go.Indicator(
|
| 348 |
+
mode="gauge+number", value=shown,
|
| 349 |
+
number=dict(valueformat=".2f", suffix=" (∞)" if np.isinf(pf) else ""),
|
| 350 |
+
title=dict(text=f"Profit Factor — OOS ({n} işlem)"),
|
| 351 |
+
gauge=dict(
|
| 352 |
+
axis=dict(range=[0, 3]),
|
| 353 |
+
bar=dict(color="#1d4ed8"),
|
| 354 |
+
steps=[dict(range=[0, 1], color="#fecaca"),
|
| 355 |
+
dict(range=[1, 1.5], color="#fef08a"),
|
| 356 |
+
dict(range=[1.5, 3], color="#bbf7d0")],
|
| 357 |
+
threshold=dict(line=dict(color="black", width=3), thickness=0.8, value=1.0))))
|
| 358 |
+
fig.update_layout(height=320, margin=dict(t=70, b=20))
|
| 359 |
+
return fig
|
| 360 |
+
|
| 361 |
+
|
| 362 |
def mc_figure(mc):
|
| 363 |
p = mc["pct"]*100
|
| 364 |
x = np.arange(p.shape[1])
|
|
|
|
| 380 |
max_leverage, fee, slip, train_window,
|
| 381 |
p_min, p_gap, flat_max, agree_min, bacc_min, min_trades,
|
| 382 |
skip_overlap, whole_units):
|
| 383 |
+
empty = (None, None, None, None, None, pd.DataFrame(), None)
|
| 384 |
try:
|
| 385 |
ticker = str(ticker).strip().upper()
|
| 386 |
h = int(horizon)
|
|
|
|
| 630 |
|
| 631 |
price_fig = price_figure(df, ticker, trades_df, trade_ok, stop, target)
|
| 632 |
eq_fig = equity_figure(curve, dds) if len(R) else None
|
| 633 |
+
pf_fig = pf_gauge(stats["pf"], stats["n"]) if stats else None
|
| 634 |
mc_fig = mc_figure(mc) if mc else None
|
| 635 |
|
| 636 |
disclaimer = (
|
|
|
|
| 646 |
"broker fiyatı farklı olabilir. Gap ve kayma kaybı planlanan riskin üstüne çıkarabilir. "
|
| 647 |
"Canlı hesap öncesi paper trading ve broker bazlı doğrulama zorunludur."
|
| 648 |
)
|
| 649 |
+
return (report, prob_figure(p_down, p_flat, p_up), price_fig, eq_fig, pf_fig, mc_fig,
|
| 650 |
top_df, csv_path, disclaimer)
|
| 651 |
|
| 652 |
except Exception as exc:
|
|
|
|
| 697 |
with gr.Tab("Grafik"):
|
| 698 |
chart = gr.Plot()
|
| 699 |
with gr.Tab("OOS backtest"):
|
| 700 |
+
pf_plot = gr.Plot()
|
| 701 |
equity_plot = gr.Plot()
|
| 702 |
with gr.Tab("Monte Carlo"):
|
| 703 |
mc_plot = gr.Plot()
|
|
|
|
| 713 |
max_leverage, fee, slip, train_window,
|
| 714 |
p_min, p_gap, flat_max, agree_min, bacc_min, min_trades,
|
| 715 |
skip_overlap, whole_units],
|
| 716 |
+
outputs=[output, prob_plot, chart, equity_plot, pf_plot, mc_plot, optimization,
|
| 717 |
csv_file, disclaimer],
|
| 718 |
)
|
| 719 |
|
| 720 |
if __name__ == "__main__":
|
| 721 |
demo.launch(server_name="0.0.0.0", server_port=7860)
|
| 722 |
+
0
|