- Added support for multi-symbol trading (XRP, TRX, DOGE) in the dashboard. - Updated bot log messages to include [SYMBOL] prefix for better tracking. - Enhanced log parser for multi-symbol state tracking and updated database schema. - Introduced new API endpoints and UI components for symbol filtering and display. - Added new model files and backtest results for multi-symbol strategies. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
455 lines
12 KiB
JSON
455 lines
12 KiB
JSON
{
|
|
"config": {
|
|
"symbols": [
|
|
"XRPUSDT",
|
|
"TRXUSDT",
|
|
"DOGEUSDT"
|
|
],
|
|
"start": null,
|
|
"end": null,
|
|
"initial_balance": 1000.0,
|
|
"leverage": 10,
|
|
"fee_pct": 0.04,
|
|
"slippage_pct": 0.01,
|
|
"use_ml": true,
|
|
"ml_threshold": 0.55,
|
|
"max_daily_loss_pct": 0.05,
|
|
"max_positions": 3,
|
|
"max_same_direction": 2,
|
|
"margin_max_ratio": 0.5,
|
|
"margin_min_ratio": 0.2,
|
|
"margin_decay_rate": 0.0006,
|
|
"atr_sl_mult": 1.5,
|
|
"atr_tp_mult": 3.0,
|
|
"min_notional": 5.0
|
|
},
|
|
"summary": {
|
|
"total_trades": 15,
|
|
"total_pnl": 198.4051,
|
|
"return_pct": 19.84,
|
|
"win_rate": 53.33,
|
|
"avg_win": 32.5332,
|
|
"avg_loss": -8.8372,
|
|
"profit_factor": 4.21,
|
|
"max_drawdown_pct": 2.24,
|
|
"sharpe_ratio": 79.77,
|
|
"total_fees": 18.8564,
|
|
"close_reasons": {
|
|
"TAKE_PROFIT": 7,
|
|
"REVERSE_SIGNAL": 3,
|
|
"STOP_LOSS": 5
|
|
}
|
|
},
|
|
"trades": [
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-05-23 02:15:00+00:00",
|
|
"exit_time": "2025-05-23 04:30:00+00:00",
|
|
"entry_price": 2.470853,
|
|
"exit_price": 2.438268,
|
|
"quantity": 674.5,
|
|
"sl": 2.487145,
|
|
"tp": 2.438268,
|
|
"gross_pnl": 21.978348,
|
|
"entry_fee": 0.666636,
|
|
"exit_fee": 0.657845,
|
|
"net_pnl": 20.653867,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.5847,
|
|
"indicators": {
|
|
"rsi": 75.08406565689027,
|
|
"macd_hist": 0.004905452274126379,
|
|
"atr": 0.010861550575088958,
|
|
"adx": 21.704459542796908
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2025-05-30 00:45:00+00:00",
|
|
"exit_time": "2025-05-30 02:15:00+00:00",
|
|
"entry_price": 2.155015,
|
|
"exit_price": 2.207692,
|
|
"quantity": 770.0,
|
|
"sl": 2.128677,
|
|
"tp": 2.207692,
|
|
"gross_pnl": 40.56076,
|
|
"entry_fee": 0.663745,
|
|
"exit_fee": 0.679969,
|
|
"net_pnl": 39.217046,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.7602,
|
|
"indicators": {
|
|
"rsi": 13.158390769693794,
|
|
"macd_hist": -0.00797002840932291,
|
|
"atr": 0.01755877038478085,
|
|
"adx": 31.17699185815243
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-06-14 04:15:00+00:00",
|
|
"exit_time": "2025-06-14 08:15:00+00:00",
|
|
"entry_price": 2.164584,
|
|
"exit_price": 2.169417,
|
|
"quantity": 757.7,
|
|
"sl": 2.175701,
|
|
"tp": 2.142349,
|
|
"gross_pnl": -3.662267,
|
|
"entry_fee": 0.656042,
|
|
"exit_fee": 0.657507,
|
|
"net_pnl": -4.975816,
|
|
"close_reason": "REVERSE_SIGNAL",
|
|
"ml_proba": 0.6115,
|
|
"indicators": {
|
|
"rsi": 69.92512937431012,
|
|
"macd_hist": 0.0026939087409630215,
|
|
"atr": 0.007411409293121909,
|
|
"adx": 20.278562659091943
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-08-14 12:30:00+00:00",
|
|
"exit_time": "2025-08-14 21:30:00+00:00",
|
|
"entry_price": 3.132487,
|
|
"exit_price": 3.035326,
|
|
"quantity": 524.6,
|
|
"sl": 3.181067,
|
|
"tp": 3.035326,
|
|
"gross_pnl": 50.970515,
|
|
"entry_fee": 0.657321,
|
|
"exit_fee": 0.636933,
|
|
"net_pnl": 49.676261,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.8857,
|
|
"indicators": {
|
|
"rsi": 20.976757311144258,
|
|
"macd_hist": -0.0032317207367513617,
|
|
"atr": 0.032386907216145205,
|
|
"adx": 38.70665879423988
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2025-09-01 00:15:00+00:00",
|
|
"exit_time": "2025-09-01 02:45:00+00:00",
|
|
"entry_price": 2.750075,
|
|
"exit_price": 2.73304,
|
|
"quantity": 586.2,
|
|
"sl": 2.73304,
|
|
"tp": 2.784144,
|
|
"gross_pnl": -9.985662,
|
|
"entry_fee": 0.644838,
|
|
"exit_fee": 0.640843,
|
|
"net_pnl": -11.271343,
|
|
"close_reason": "STOP_LOSS",
|
|
"ml_proba": 0.5754,
|
|
"indicators": {
|
|
"rsi": 20.77769666120342,
|
|
"macd_hist": -0.0054454742314916215,
|
|
"atr": 0.01135637668410908,
|
|
"adx": 32.97685850211662
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2025-10-05 19:00:00+00:00",
|
|
"exit_time": "2025-10-06 02:45:00+00:00",
|
|
"entry_price": 2.953995,
|
|
"exit_price": 2.990353,
|
|
"quantity": 548.6,
|
|
"sl": 2.935817,
|
|
"tp": 2.990353,
|
|
"gross_pnl": 19.945579,
|
|
"entry_fee": 0.648225,
|
|
"exit_fee": 0.656203,
|
|
"net_pnl": 18.641151,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.6037,
|
|
"indicators": {
|
|
"rsi": 22.68978567945751,
|
|
"macd_hist": -0.003579814992577557,
|
|
"atr": 0.012119078271027253,
|
|
"adx": 40.35268005132035
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-10-10 20:45:00+00:00",
|
|
"exit_time": "2025-10-10 21:00:00+00:00",
|
|
"entry_price": 2.49595,
|
|
"exit_price": 2.373231,
|
|
"quantity": 643.9,
|
|
"sl": 2.55731,
|
|
"tp": 2.373231,
|
|
"gross_pnl": 79.019141,
|
|
"entry_fee": 0.642857,
|
|
"exit_fee": 0.611249,
|
|
"net_pnl": 77.765034,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.8864,
|
|
"indicators": {
|
|
"rsi": 17.950089434981262,
|
|
"macd_hist": -0.010381022790605134,
|
|
"atr": 0.0409065283069771,
|
|
"adx": 56.13982003832872
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-10-14 16:15:00+00:00",
|
|
"exit_time": "2025-10-15 02:15:00+00:00",
|
|
"entry_price": 2.508449,
|
|
"exit_price": 2.523552,
|
|
"quantity": 612.4,
|
|
"sl": 2.544104,
|
|
"tp": 2.437139,
|
|
"gross_pnl": -9.2492,
|
|
"entry_fee": 0.61447,
|
|
"exit_fee": 0.618169,
|
|
"net_pnl": -10.481839,
|
|
"close_reason": "REVERSE_SIGNAL",
|
|
"ml_proba": 0.5683,
|
|
"indicators": {
|
|
"rsi": 68.85343626442496,
|
|
"macd_hist": 0.010657476860447013,
|
|
"atr": 0.023769893751947626,
|
|
"adx": 39.4255156509299
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-10-27 16:00:00+00:00",
|
|
"exit_time": "2025-10-27 21:00:00+00:00",
|
|
"entry_price": 2.674233,
|
|
"exit_price": 2.623904,
|
|
"quantity": 578.8,
|
|
"sl": 2.699397,
|
|
"tp": 2.623904,
|
|
"gross_pnl": 29.129941,
|
|
"entry_fee": 0.619138,
|
|
"exit_fee": 0.607486,
|
|
"net_pnl": 27.903316,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.5625,
|
|
"indicators": {
|
|
"rsi": 66.34709912155408,
|
|
"macd_hist": 0.005634259928464551,
|
|
"atr": 0.01677605457389115,
|
|
"adx": 23.34205636197947
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2025-11-28 01:45:00+00:00",
|
|
"exit_time": "2025-11-28 05:30:00+00:00",
|
|
"entry_price": 2.171517,
|
|
"exit_price": 2.200054,
|
|
"quantity": 699.4,
|
|
"sl": 2.157249,
|
|
"tp": 2.200054,
|
|
"gross_pnl": 19.958706,
|
|
"entry_fee": 0.607504,
|
|
"exit_fee": 0.615487,
|
|
"net_pnl": 18.735716,
|
|
"close_reason": "TAKE_PROFIT",
|
|
"ml_proba": 0.6381,
|
|
"indicators": {
|
|
"rsi": 22.942287299402874,
|
|
"macd_hist": -0.003478384036068617,
|
|
"atr": 0.009512299239799599,
|
|
"adx": 35.89384138114383
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2025-12-19 13:15:00+00:00",
|
|
"exit_time": "2025-12-19 15:15:00+00:00",
|
|
"entry_price": 1.878712,
|
|
"exit_price": 1.889911,
|
|
"quantity": 796.9,
|
|
"sl": 1.889911,
|
|
"tp": 1.856315,
|
|
"gross_pnl": -8.924064,
|
|
"entry_fee": 0.598858,
|
|
"exit_fee": 0.602428,
|
|
"net_pnl": -10.12535,
|
|
"close_reason": "STOP_LOSS",
|
|
"ml_proba": 0.5945,
|
|
"indicators": {
|
|
"rsi": 68.16547032772114,
|
|
"macd_hist": -4.5929936914913816e-05,
|
|
"atr": 0.007465649526915487,
|
|
"adx": 40.69667585881617
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2025-12-25 22:45:00+00:00",
|
|
"exit_time": "2025-12-25 23:30:00+00:00",
|
|
"entry_price": 1.844884,
|
|
"exit_price": 1.836907,
|
|
"quantity": 818.5,
|
|
"sl": 1.836907,
|
|
"tp": 1.86084,
|
|
"gross_pnl": -6.529692,
|
|
"entry_fee": 0.604015,
|
|
"exit_fee": 0.601403,
|
|
"net_pnl": -7.735111,
|
|
"close_reason": "STOP_LOSS",
|
|
"ml_proba": 0.6099,
|
|
"indicators": {
|
|
"rsi": 22.431779710524914,
|
|
"macd_hist": -0.0022220637884117073,
|
|
"atr": 0.005318421811566107,
|
|
"adx": 20.682478174103885
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2026-01-17 15:00:00+00:00",
|
|
"exit_time": "2026-01-17 15:15:00+00:00",
|
|
"entry_price": 2.074093,
|
|
"exit_price": 2.080899,
|
|
"quantity": 732.6,
|
|
"sl": 2.080899,
|
|
"tp": 2.06048,
|
|
"gross_pnl": -4.986389,
|
|
"entry_fee": 0.607792,
|
|
"exit_fee": 0.609787,
|
|
"net_pnl": -6.203967,
|
|
"close_reason": "STOP_LOSS",
|
|
"ml_proba": 0.594,
|
|
"indicators": {
|
|
"rsi": 69.16433708427633,
|
|
"macd_hist": 0.0015812464458042678,
|
|
"atr": 0.004537618137465387,
|
|
"adx": 16.189151941493567
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "SHORT",
|
|
"entry_time": "2026-01-30 01:30:00+00:00",
|
|
"exit_time": "2026-01-30 02:15:00+00:00",
|
|
"entry_price": 1.743626,
|
|
"exit_price": 1.733473,
|
|
"quantity": 875.8,
|
|
"sl": 1.766432,
|
|
"tp": 1.698012,
|
|
"gross_pnl": 8.891376,
|
|
"entry_fee": 0.610827,
|
|
"exit_fee": 0.60727,
|
|
"net_pnl": 7.673278,
|
|
"close_reason": "REVERSE_SIGNAL",
|
|
"ml_proba": 0.6829,
|
|
"indicators": {
|
|
"rsi": 19.89605260729724,
|
|
"macd_hist": -0.003114826868995284,
|
|
"atr": 0.015204543588406344,
|
|
"adx": 20.39618087837
|
|
}
|
|
},
|
|
{
|
|
"symbol": "XRPUSDT",
|
|
"side": "LONG",
|
|
"entry_time": "2026-02-28 06:15:00+00:00",
|
|
"exit_time": "2026-02-28 06:30:00+00:00",
|
|
"entry_price": 1.331433,
|
|
"exit_price": 1.322797,
|
|
"quantity": 1141.2,
|
|
"sl": 1.322797,
|
|
"tp": 1.348705,
|
|
"gross_pnl": -9.855576,
|
|
"entry_fee": 0.607773,
|
|
"exit_fee": 0.60383,
|
|
"net_pnl": -11.067179,
|
|
"close_reason": "STOP_LOSS",
|
|
"ml_proba": 0.7416,
|
|
"indicators": {
|
|
"rsi": 22.07257216583472,
|
|
"macd_hist": -0.0019878129960472814,
|
|
"atr": 0.005757434514952236,
|
|
"adx": 36.23941502849302
|
|
}
|
|
}
|
|
],
|
|
"validation": {
|
|
"overall": "FAIL",
|
|
"checks": [
|
|
{
|
|
"name": "exit_after_entry",
|
|
"passed": true,
|
|
"level": "FAIL",
|
|
"message": "모든 트레이드에서 청산 > 진입"
|
|
},
|
|
{
|
|
"name": "sl_tp_direction",
|
|
"passed": true,
|
|
"level": "FAIL",
|
|
"message": "SL/TP 방향 정합"
|
|
},
|
|
{
|
|
"name": "no_overlap",
|
|
"passed": true,
|
|
"level": "FAIL",
|
|
"message": "포지션 비중첩 확인"
|
|
},
|
|
{
|
|
"name": "positive_fees",
|
|
"passed": true,
|
|
"level": "FAIL",
|
|
"message": "수수료 양수 확인"
|
|
},
|
|
{
|
|
"name": "no_negative_balance",
|
|
"passed": true,
|
|
"level": "FAIL",
|
|
"message": "잔고 양수 유지"
|
|
},
|
|
{
|
|
"name": "win_rate_high",
|
|
"passed": true,
|
|
"level": "WARNING",
|
|
"message": "승률 정상 (53.3%)"
|
|
},
|
|
{
|
|
"name": "win_rate_low",
|
|
"passed": true,
|
|
"level": "WARNING",
|
|
"message": "승률 정상 (53.3%)"
|
|
},
|
|
{
|
|
"name": "mdd_nonzero",
|
|
"passed": true,
|
|
"level": "WARNING",
|
|
"message": "MDD 정상 (2.2%)"
|
|
},
|
|
{
|
|
"name": "trade_frequency",
|
|
"passed": false,
|
|
"level": "WARNING",
|
|
"message": "월 평균 1.6건 < 5건 — 신호 생성 부족"
|
|
},
|
|
{
|
|
"name": "profit_factor_high",
|
|
"passed": true,
|
|
"level": "WARNING",
|
|
"message": "PF 정상 (4.21)"
|
|
}
|
|
]
|
|
}
|
|
} |