GoshawkVortexAI commited on
Commit
af140bb
·
verified ·
1 Parent(s): 13c289f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -3
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