diff --git a/README.md b/README.md index a62b957..251d9d2 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,6 @@ CONFIG = EQT_CONFIG # For equity data ``` Each configuration dictionary specifies: -- `security_type`: "CRYPTO" or "EQUITY". - `data_directory`: Path to the data files. - `datafiles`: A list of database files to process. You can comment/uncomment specific files to include/exclude them from the backtest. - `db_table_name`: The name of the table within the SQLite database. diff --git a/configuration/zscore.cfg b/configuration/zscore.cfg new file mode 100644 index 0000000..b05cefe --- /dev/null +++ b/configuration/zscore.cfg @@ -0,0 +1,46 @@ +{ + "instrument_type_specifics": { + "CRYPTO": { + "data_directory": "./data/crypto", + "datafiles": [ + "20250602.mktdata.ohlcv.db" + ], + "db_table_name": "md_1min_bars", + "exchange_id": "BNBSPOT", + "instrument_id_pfx": "PAIR-", + }, + "EQUITY": { + "data_directory": "./data/equity", + "datafiles": [ + "20250602.mktdata.ohlcv.db" + ], + "db_table_name": "md_1min_bars", + "exchange_id": "BNBSPOT", + "instrument_id_pfx": "STOCK-", + } + }, + + # ====== Funding ====== + "funding_per_pair": 2000.0, + # ====== Trading Parameters ====== + "price_column": "close", + "dis-equilibrium_open_trshld": 2.0, + "dis-equilibrium_close_trshld": 0.5, + "training_minutes": 120, + "fit_method_class": "pt_trading.z-score_rolling_fit.ZScoreRollingFit", + + # ====== Stop Conditions ====== + "stop_close_conditions": { + "profit": 2.0, + "loss": -0.5 + } + + # ====== End of Session Closeout ====== + "close_outstanding_positions": true, + # "close_outstanding_positions": false, + "trading_hours": { + "begin_session": "9:30:00", + "end_session": "22:30:00", + "timezone": "America/New_York" + } +} \ No newline at end of file diff --git a/lib/tools/data_loader.py b/lib/tools/data_loader.py index 08a5f28..7149ad0 100644 --- a/lib/tools/data_loader.py +++ b/lib/tools/data_loader.py @@ -42,16 +42,11 @@ def load_market_data(datafile: str, config: Dict) -> pd.DataFrame: '"' + config["instrument_id_pfx"] + instrument + '"' for instrument in config["instruments"] ] - security_type = config["security_type"] exchange_id = config["exchange_id"] query = "select" - if security_type == "CRYPTO": - query += " strftime('%Y-%m-%d %H:%M:%S', tstamp_ns/1000000000, 'unixepoch') as tstamp" - query += ", tstamp as time_ns" - else: - query += " tstamp" - query += ", tstamp_ns as time_ns" + query += " tstamp" + query += ", tstamp_ns as time_ns" query += f", substr(instrument_id, {len(config['instrument_id_pfx']) + 1}) as symbol" query += ", open" diff --git a/research/notebooks/single_pair_test.ipynb b/research/notebooks/single_pair_test.ipynb index 3f02227..8e941f7 100644 --- a/research/notebooks/single_pair_test.ipynb +++ b/research/notebooks/single_pair_test.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -47,6 +47,7 @@ "\n", "# ================================ C R Y P T O ================================\n", "CONFIG_FILE = \"/home/oleg/develop/pairs_trading/configuration/crypto_zscore.cfg\"\n", + "CONFIG_FILE = \"/home/oleg/develop/pairs_trading/configuration/crypto_vecm.cfg\"\n", "\n", "# Date for data file selection (format: YYYYMMDD)\n", "TRADING_DATE = \"20250602\" # Change this to your desired date\n", @@ -56,6 +57,10 @@ "SYMBOL_B = \"SOL-USDT\" # Change this to your desired symbol B\n", "# ================================ C R Y P T O ================================\n", "\n", + "# ================================ E Q U I T Y VS. C R Y P T O ================================\n", + "\n", + "# ================================ E Q U I T Y VS. C R Y P T O ================================\n", + "\n", "FIT_METHOD_TYPE = \"RollingFit\"\n", "TRD_DATE = f\"{TRADING_DATE[0:4]}-{TRADING_DATE[4:6]}-{TRADING_DATE[6:8]}\"\n" ] @@ -76,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -117,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -196,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -223,7 +228,7 @@ " PT_BT_CONFIG = dict(CONFIG)\n", "\n", " if PT_BT_CONFIG:\n", - " print(f\"✓ Successfully loaded {PT_BT_CONFIG['security_type']} configuration\")\n", + " print(f\"✓ Successfully loaded configuration\")\n", " print(f\" Data directory: {PT_BT_CONFIG['data_directory']}\")\n", " print(f\" Database table: {PT_BT_CONFIG['db_table_name']}\")\n", " print(f\" Exchange: {PT_BT_CONFIG['exchange_id']}\")\n", @@ -244,7 +249,6 @@ " \n", " print(f\"\\nData Configuration:\")\n", " print(f\" Data File: {DATA_FILE}\")\n", - " print(f\" Security Type: {PT_BT_CONFIG['security_type']}\")\n", " \n", " # Verify data file exists\n", " data_file_path = f\"{PT_BT_CONFIG['data_directory']}/{DATA_FILE}\"\n", @@ -283,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -344,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -389,7 +393,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -481,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -552,7 +556,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -1045,7 +1049,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -1115,7 +1119,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -1196,7 +1200,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1205,26 +1209,25 @@ "text": [ "Setup complete!\n", "Trading Parameters:\n", - " Configuration: /home/oleg/develop/pairs_trading/configuration/crypto_zscore.cfg\n", + " Configuration: /home/oleg/develop/pairs_trading/configuration/crypto_vecm.cfg\n", " Symbol A: ADA-USDT\n", " Symbol B: SOL-USDT\n", " Trading Date: 2025-06-02\n", "\n", - "Loading /home/oleg/develop/pairs_trading/configuration/crypto_zscore.cfg configuration using HJSON...\n", - "✓ Successfully loaded CRYPTO configuration\n", + "Loading /home/oleg/develop/pairs_trading/configuration/crypto_vecm.cfg configuration using HJSON...\n", + "✓ Successfully loaded configuration\n", " Data directory: /home/oleg/develop/pairs_trading/data/crypto\n", " Database table: md_1min_bars\n", " Exchange: BNBSPOT\n", " Training window: 120 minutes\n", " Open threshold: 2\n", - " Close threshold: 0.5\n", - "Fit Model: pt_trading.z-score_rolling_fit.ZScoreRollingFit\n", + " Close threshold: 1\n", + "Fit Model: pt_trading.vecm_rolling_fit.VECMRollingFit\n", "Load configuration SUCCESS\n", - " Fit Method: ZScoreRollingFit\n", + " Fit Method: VECMRollingFit\n", "\n", "Data Configuration:\n", " Data File: 20250602.mktdata.ohlcv.db\n", - " Security Type: CRYPTO\n", " ✓ Data file found: /home/oleg/develop/pairs_trading/data/crypto/20250602.mktdata.ohlcv.db\n", "Loading data from: /home/oleg/develop/pairs_trading/data/crypto/20250602.mktdata.ohlcv.db\n", "Loaded 1258 rows of market data\n", @@ -1403,7 +1406,7 @@ "\n", "Strategy Configuration:\n", " Open threshold: 2\n", - " Close threshold: 0.5\n", + " Close threshold: 1\n", " Training minutes: 120\n", " Funding per pair: $2000\n" ] @@ -1444,108 +1447,89 @@ "Processing first 200 iterations for demonstration...\n", "***ADA-USDT & SOL-USDT*** STARTING....\n", "ADA-USDT & SOL-USDT: current offset=510 * Training data length=119 < 120 * Not enough training data. Completing the job.\n", - "OPEN_TRADES: 2025-06-02 15:31:00 open_scaled_disequilibrium=2.892080636255072\n", + "OPEN_TRADES: 2025-06-02 15:48:00 open_scaled_disequilibrium=2.0818049024547634\n", "OPEN TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 15:31:00 ADA-USDT BUY OPEN 0.6733 -2.892081 2.892081 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 15:31:00 SOL-USDT SELL OPEN 153.1600 -2.892081 2.892081 ADA-USDT & SOL-USDT OPEN\n", + "0 2025-06-02 15:48:00 ADA-USDT SELL OPEN 0.6736 0.002199 2.081805 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 15:48:00 SOL-USDT BUY OPEN 152.8000 0.002199 2.081805 ADA-USDT & SOL-USDT OPEN\n", "CLOSE TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 15:41:00 ADA-USDT SELL CLOSE 0.6735 0.014633 0.014633 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 15:41:00 SOL-USDT BUY CLOSE 153.0800 0.014633 0.014633 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 16:44:00 open_scaled_disequilibrium=2.364778510607668\n", + "0 2025-06-02 16:04:00 ADA-USDT BUY CLOSE 0.6731 0.000948 0.798953 ADA-USDT & SOL-USDT CLOSE\n", + "1 2025-06-02 16:04:00 SOL-USDT SELL CLOSE 152.9400 0.000948 0.798953 ADA-USDT & SOL-USDT CLOSE\n", + "OPEN_TRADES: 2025-06-02 17:29:00 open_scaled_disequilibrium=2.1389572377792994\n", "OPEN TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 16:44:00 ADA-USDT BUY OPEN 0.6708 -2.364779 2.364779 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 16:44:00 SOL-USDT SELL OPEN 152.4700 -2.364779 2.364779 ADA-USDT & SOL-USDT OPEN\n", - "CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 17:01:00 ADA-USDT SELL CLOSE 0.6745 -0.45725 0.45725 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 17:01:00 SOL-USDT BUY CLOSE 153.2100 -0.45725 0.45725 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 17:06:00 open_scaled_disequilibrium=2.191024540541887\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 17:06:00 ADA-USDT BUY OPEN 0.6738 -2.191025 2.191025 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 17:06:00 SOL-USDT SELL OPEN 152.9000 -2.191025 2.191025 ADA-USDT & SOL-USDT OPEN\n", + "0 2025-06-02 17:29:00 ADA-USDT BUY OPEN 0.6745 -0.001016 2.138957 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 17:29:00 SOL-USDT SELL OPEN 153.4400 -0.001016 2.138957 ADA-USDT & SOL-USDT OPEN\n", "STOP CLOSE TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 17:14:00 ADA-USDT SELL CLOSE 0.6717 -0.939467 0.939467 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "1 2025-06-02 17:14:00 SOL-USDT BUY CLOSE 152.5400 -0.939467 0.939467 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "OPEN_TRADES: 2025-06-02 17:24:00 open_scaled_disequilibrium=2.748538160528875\n", + "0 2025-06-02 17:35:00 ADA-USDT SELL CLOSE 0.6712 -0.00227 3.90593 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "1 2025-06-02 17:35:00 SOL-USDT BUY CLOSE 153.0300 -0.00227 3.90593 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "OPEN_TRADES: 2025-06-02 17:36:00 open_scaled_disequilibrium=2.9327807569100677\n", "OPEN TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 17:24:00 ADA-USDT BUY OPEN 0.6755 -2.748538 2.748538 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 17:24:00 SOL-USDT SELL OPEN 153.5600 -2.748538 2.748538 ADA-USDT & SOL-USDT OPEN\n", + "0 2025-06-02 17:36:00 ADA-USDT BUY OPEN 0.6715 -0.001793 2.932781 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 17:36:00 SOL-USDT SELL OPEN 152.9900 -0.001793 2.932781 ADA-USDT & SOL-USDT OPEN\n", + "CLOSE TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 18:16:00 ADA-USDT SELL CLOSE 0.6752 0.000173 0.95951 ADA-USDT & SOL-USDT CLOSE\n", + "1 2025-06-02 18:16:00 SOL-USDT BUY CLOSE 153.8700 0.000173 0.95951 ADA-USDT & SOL-USDT CLOSE\n", + "OPEN_TRADES: 2025-06-02 19:03:00 open_scaled_disequilibrium=2.2278377496743373\n", + "OPEN TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 19:03:00 ADA-USDT SELL OPEN 0.6775 0.002985 2.227838 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 19:03:00 SOL-USDT BUY OPEN 153.6100 0.002985 2.227838 ADA-USDT & SOL-USDT OPEN\n", "STOP CLOSE TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 17:33:00 ADA-USDT SELL CLOSE 0.6722 -1.168442 1.168442 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "1 2025-06-02 17:33:00 SOL-USDT BUY CLOSE 153.2400 -1.168442 1.168442 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "OPEN_TRADES: 2025-06-02 18:02:00 open_scaled_disequilibrium=2.0472288892294728\n", + "0 2025-06-02 19:08:00 ADA-USDT BUY CLOSE 0.6763 0.00987 2.980161 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "1 2025-06-02 19:08:00 SOL-USDT SELL CLOSE 153.0100 0.00987 2.980161 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "OPEN_TRADES: 2025-06-02 19:09:00 open_scaled_disequilibrium=2.8642081530160217\n", "OPEN TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 18:02:00 ADA-USDT SELL OPEN 0.6741 2.047229 2.047229 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 18:02:00 SOL-USDT BUY OPEN 153.5900 2.047229 2.047229 ADA-USDT & SOL-USDT OPEN\n", - "CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 18:06:00 ADA-USDT BUY CLOSE 0.6746 -0.089168 0.089168 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 18:06:00 SOL-USDT SELL CLOSE 153.7900 -0.089168 0.089168 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 19:35:00 open_scaled_disequilibrium=2.016877535891162\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 19:35:00 ADA-USDT BUY OPEN 0.6719 -2.016878 2.016878 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 19:35:00 SOL-USDT SELL OPEN 151.9900 -2.016878 2.016878 ADA-USDT & SOL-USDT OPEN\n", - "STOP CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 20:09:00 ADA-USDT SELL CLOSE 0.6791 -1.119561 1.119561 ADA-USDT & SOL-USDT CLOSE_STOP_PROFIT\n", - "1 2025-06-02 20:09:00 SOL-USDT BUY CLOSE 153.7500 -1.119561 1.119561 ADA-USDT & SOL-USDT CLOSE_STOP_PROFIT\n", - "OPEN_TRADES: 2025-06-02 20:32:00 open_scaled_disequilibrium=2.1193116614341356\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 20:32:00 ADA-USDT BUY OPEN 0.6811 -2.119312 2.119312 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 20:32:00 SOL-USDT SELL OPEN 154.2200 -2.119312 2.119312 ADA-USDT & SOL-USDT OPEN\n", - "CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 21:04:00 ADA-USDT SELL CLOSE 0.6845 -0.316305 0.316305 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 21:04:00 SOL-USDT BUY CLOSE 154.7200 -0.316305 0.316305 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 21:33:00 open_scaled_disequilibrium=2.1162146947771068\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 21:33:00 ADA-USDT SELL OPEN 0.6819 2.116215 2.116215 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 21:33:00 SOL-USDT BUY OPEN 154.5100 2.116215 2.116215 ADA-USDT & SOL-USDT OPEN\n", - "CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 21:40:00 ADA-USDT BUY CLOSE 0.6833 -0.195611 0.195611 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 21:40:00 SOL-USDT SELL CLOSE 154.9200 -0.195611 0.195611 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 21:58:00 open_scaled_disequilibrium=2.0841568077931436\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 21:58:00 ADA-USDT BUY OPEN 0.6842 -2.084157 2.084157 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 21:58:00 SOL-USDT SELL OPEN 155.2900 -2.084157 2.084157 ADA-USDT & SOL-USDT OPEN\n", - "CLOSE TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 22:06:00 ADA-USDT SELL CLOSE 0.6887 -0.396354 0.396354 ADA-USDT & SOL-USDT CLOSE\n", - "1 2025-06-02 22:06:00 SOL-USDT BUY CLOSE 155.8300 -0.396354 0.396354 ADA-USDT & SOL-USDT CLOSE\n", - "OPEN_TRADES: 2025-06-02 22:19:00 open_scaled_disequilibrium=2.10216298924875\n", - "OPEN TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 22:19:00 ADA-USDT SELL OPEN 0.6905 2.102163 2.102163 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 22:19:00 SOL-USDT BUY OPEN 156.2700 2.102163 2.102163 ADA-USDT & SOL-USDT OPEN\n", + "0 2025-06-02 19:09:00 ADA-USDT BUY OPEN 0.6765 -0.006175 2.864208 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 19:09:00 SOL-USDT SELL OPEN 153.0500 -0.006175 2.864208 ADA-USDT & SOL-USDT OPEN\n", "STOP CLOSE TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 22:22:00 ADA-USDT BUY CLOSE 0.6882 1.931205 1.931205 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "1 2025-06-02 22:22:00 SOL-USDT SELL CLOSE 155.9200 1.931205 1.931205 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "OPEN_TRADES: 2025-06-02 23:55:00 open_scaled_disequilibrium=2.2438675739562233\n", + "0 2025-06-02 19:11:00 ADA-USDT SELL CLOSE 0.6748 -0.009987 2.846697 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "1 2025-06-02 19:11:00 SOL-USDT BUY CLOSE 152.6200 -0.009987 2.846697 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "OPEN_TRADES: 2025-06-02 19:12:00 open_scaled_disequilibrium=3.418633634727695\n", "OPEN TRADES:\n", " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 23:55:00 ADA-USDT BUY OPEN 0.6892 -2.243868 2.243868 ADA-USDT & SOL-USDT OPEN\n", - "1 2025-06-02 23:55:00 SOL-USDT SELL OPEN 156.9400 -2.243868 2.243868 ADA-USDT & SOL-USDT OPEN\n", - "ADA-USDT & SOL-USDT: *** Position is NOT CLOSED. ***\n", - "CLOSE_POSITION TRADES:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 23:59:00 ADA-USDT SELL CLOSE 0.6896 -2.951683 2.951683 ADA-USDT & SOL-USDT CLOSE_POSITION\n", - "1 2025-06-02 23:59:00 SOL-USDT BUY CLOSE 156.8300 -2.951683 2.951683 ADA-USDT & SOL-USDT CLOSE_POSITION\n", - "***ADA-USDT & SOL-USDT*** FINISHED *** Num Trades:44\n", - "Generated 44 trading signals\n", + "0 2025-06-02 19:12:00 ADA-USDT SELL OPEN 0.6739 0.009692 3.418634 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 19:12:00 SOL-USDT BUY OPEN 152.1700 0.009692 3.418634 ADA-USDT & SOL-USDT OPEN\n", + "STOP CLOSE TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 19:34:00 ADA-USDT BUY CLOSE 0.6717 -0.00109 1.588587 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "1 2025-06-02 19:34:00 SOL-USDT SELL CLOSE 151.8300 -0.00109 1.588587 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "OPEN_TRADES: 2025-06-02 21:48:00 open_scaled_disequilibrium=2.5214214864370303\n", + "OPEN TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 21:48:00 ADA-USDT BUY OPEN 0.6827 -0.00224 2.521421 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 21:48:00 SOL-USDT SELL OPEN 155.2000 -0.00224 2.521421 ADA-USDT & SOL-USDT OPEN\n", + "CLOSE TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 22:04:00 ADA-USDT SELL CLOSE 0.6883 -0.002265 0.428332 ADA-USDT & SOL-USDT CLOSE\n", + "1 2025-06-02 22:04:00 SOL-USDT BUY CLOSE 156.0400 -0.002265 0.428332 ADA-USDT & SOL-USDT CLOSE\n", + "OPEN_TRADES: 2025-06-02 22:09:00 open_scaled_disequilibrium=2.670046055313119\n", + "OPEN TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 22:09:00 ADA-USDT SELL OPEN 0.69 0.002581 2.670046 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 22:09:00 SOL-USDT BUY OPEN 155.67 0.002581 2.670046 ADA-USDT & SOL-USDT OPEN\n", + "CLOSE TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 22:14:00 ADA-USDT BUY CLOSE 0.6891 0.000614 0.859073 ADA-USDT & SOL-USDT CLOSE\n", + "1 2025-06-02 22:14:00 SOL-USDT SELL CLOSE 155.8800 0.000614 0.859073 ADA-USDT & SOL-USDT CLOSE\n", + "OPEN_TRADES: 2025-06-02 23:40:00 open_scaled_disequilibrium=2.1923551272389994\n", + "OPEN TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 23:40:00 ADA-USDT BUY OPEN 0.6896 -0.001467 2.192355 ADA-USDT & SOL-USDT OPEN\n", + "1 2025-06-02 23:40:00 SOL-USDT SELL OPEN 157.0000 -0.001467 2.192355 ADA-USDT & SOL-USDT OPEN\n", + "CLOSE TRADES:\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 23:58:00 ADA-USDT SELL CLOSE 0.6896 -0.000184 0.896276 ADA-USDT & SOL-USDT CLOSE\n", + "1 2025-06-02 23:58:00 SOL-USDT BUY CLOSE 156.8200 -0.000184 0.896276 ADA-USDT & SOL-USDT CLOSE\n", + "***ADA-USDT & SOL-USDT*** FINISHED *** Num Trades:36\n", + "Generated 36 trading signals\n", "\n", "Strategy execution completed!\n", "\n", @@ -1574,58 +1558,50 @@ "text": [ "=== SLIDING FIT INTERACTIVE VISUALIZATION ===\n", "Note: Rolling Fit strategy visualization with interactive plotly charts\n", - "Using consistent timeline with 749 timestamps\n", + "Using consistent timeline with 629 timestamps\n", "Timeline range: 2025-06-02 13:30:00 to 2025-06-02 23:59:00\n", "\n", "Symbol_A trades:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "0 2025-06-02 15:31:00 ADA-USDT BUY OPEN 0.6733 -2.892081 2.892081 ADA-USDT & SOL-USDT OPEN\n", - "2 2025-06-02 15:41:00 ADA-USDT SELL CLOSE 0.6735 0.014633 0.014633 ADA-USDT & SOL-USDT CLOSE\n", - "4 2025-06-02 16:44:00 ADA-USDT BUY OPEN 0.6708 -2.364779 2.364779 ADA-USDT & SOL-USDT OPEN\n", - "6 2025-06-02 17:01:00 ADA-USDT SELL CLOSE 0.6745 -0.457250 0.457250 ADA-USDT & SOL-USDT CLOSE\n", - "8 2025-06-02 17:06:00 ADA-USDT BUY OPEN 0.6738 -2.191025 2.191025 ADA-USDT & SOL-USDT OPEN\n", - "10 2025-06-02 17:14:00 ADA-USDT SELL CLOSE 0.6717 -0.939467 0.939467 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "12 2025-06-02 17:24:00 ADA-USDT BUY OPEN 0.6755 -2.748538 2.748538 ADA-USDT & SOL-USDT OPEN\n", - "14 2025-06-02 17:33:00 ADA-USDT SELL CLOSE 0.6722 -1.168442 1.168442 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "16 2025-06-02 18:02:00 ADA-USDT SELL OPEN 0.6741 2.047229 2.047229 ADA-USDT & SOL-USDT OPEN\n", - "18 2025-06-02 18:06:00 ADA-USDT BUY CLOSE 0.6746 -0.089168 0.089168 ADA-USDT & SOL-USDT CLOSE\n", - "20 2025-06-02 19:35:00 ADA-USDT BUY OPEN 0.6719 -2.016878 2.016878 ADA-USDT & SOL-USDT OPEN\n", - "22 2025-06-02 20:09:00 ADA-USDT SELL CLOSE 0.6791 -1.119561 1.119561 ADA-USDT & SOL-USDT CLOSE_STOP_PROFIT\n", - "24 2025-06-02 20:32:00 ADA-USDT BUY OPEN 0.6811 -2.119312 2.119312 ADA-USDT & SOL-USDT OPEN\n", - "26 2025-06-02 21:04:00 ADA-USDT SELL CLOSE 0.6845 -0.316305 0.316305 ADA-USDT & SOL-USDT CLOSE\n", - "28 2025-06-02 21:33:00 ADA-USDT SELL OPEN 0.6819 2.116215 2.116215 ADA-USDT & SOL-USDT OPEN\n", - "30 2025-06-02 21:40:00 ADA-USDT BUY CLOSE 0.6833 -0.195611 0.195611 ADA-USDT & SOL-USDT CLOSE\n", - "32 2025-06-02 21:58:00 ADA-USDT BUY OPEN 0.6842 -2.084157 2.084157 ADA-USDT & SOL-USDT OPEN\n", - "34 2025-06-02 22:06:00 ADA-USDT SELL CLOSE 0.6887 -0.396354 0.396354 ADA-USDT & SOL-USDT CLOSE\n", - "36 2025-06-02 22:19:00 ADA-USDT SELL OPEN 0.6905 2.102163 2.102163 ADA-USDT & SOL-USDT OPEN\n", - "38 2025-06-02 22:22:00 ADA-USDT BUY CLOSE 0.6882 1.931205 1.931205 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "40 2025-06-02 23:55:00 ADA-USDT BUY OPEN 0.6892 -2.243868 2.243868 ADA-USDT & SOL-USDT OPEN\n", - "42 2025-06-02 23:59:00 ADA-USDT SELL CLOSE 0.6896 -2.951683 2.951683 ADA-USDT & SOL-USDT CLOSE_POSITION\n", + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "0 2025-06-02 15:48:00 ADA-USDT SELL OPEN 0.6736 0.002199 2.081805 ADA-USDT & SOL-USDT OPEN\n", + "2 2025-06-02 16:04:00 ADA-USDT BUY CLOSE 0.6731 0.000948 0.798953 ADA-USDT & SOL-USDT CLOSE\n", + "4 2025-06-02 17:29:00 ADA-USDT BUY OPEN 0.6745 -0.001016 2.138957 ADA-USDT & SOL-USDT OPEN\n", + "6 2025-06-02 17:35:00 ADA-USDT SELL CLOSE 0.6712 -0.002270 3.905930 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "8 2025-06-02 17:36:00 ADA-USDT BUY OPEN 0.6715 -0.001793 2.932781 ADA-USDT & SOL-USDT OPEN\n", + "10 2025-06-02 18:16:00 ADA-USDT SELL CLOSE 0.6752 0.000173 0.959510 ADA-USDT & SOL-USDT CLOSE\n", + "12 2025-06-02 19:03:00 ADA-USDT SELL OPEN 0.6775 0.002985 2.227838 ADA-USDT & SOL-USDT OPEN\n", + "14 2025-06-02 19:08:00 ADA-USDT BUY CLOSE 0.6763 0.009870 2.980161 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "16 2025-06-02 19:09:00 ADA-USDT BUY OPEN 0.6765 -0.006175 2.864208 ADA-USDT & SOL-USDT OPEN\n", + "18 2025-06-02 19:11:00 ADA-USDT SELL CLOSE 0.6748 -0.009987 2.846697 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "20 2025-06-02 19:12:00 ADA-USDT SELL OPEN 0.6739 0.009692 3.418634 ADA-USDT & SOL-USDT OPEN\n", + "22 2025-06-02 19:34:00 ADA-USDT BUY CLOSE 0.6717 -0.001090 1.588587 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "24 2025-06-02 21:48:00 ADA-USDT BUY OPEN 0.6827 -0.002240 2.521421 ADA-USDT & SOL-USDT OPEN\n", + "26 2025-06-02 22:04:00 ADA-USDT SELL CLOSE 0.6883 -0.002265 0.428332 ADA-USDT & SOL-USDT CLOSE\n", + "28 2025-06-02 22:09:00 ADA-USDT SELL OPEN 0.6900 0.002581 2.670046 ADA-USDT & SOL-USDT OPEN\n", + "30 2025-06-02 22:14:00 ADA-USDT BUY CLOSE 0.6891 0.000614 0.859073 ADA-USDT & SOL-USDT CLOSE\n", + "32 2025-06-02 23:40:00 ADA-USDT BUY OPEN 0.6896 -0.001467 2.192355 ADA-USDT & SOL-USDT OPEN\n", + "34 2025-06-02 23:58:00 ADA-USDT SELL CLOSE 0.6896 -0.000184 0.896276 ADA-USDT & SOL-USDT CLOSE\n", "\n", "Symbol_B trades:\n", - " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", - "1 2025-06-02 15:31:00 SOL-USDT SELL OPEN 153.16 -2.892081 2.892081 ADA-USDT & SOL-USDT OPEN\n", - "3 2025-06-02 15:41:00 SOL-USDT BUY CLOSE 153.08 0.014633 0.014633 ADA-USDT & SOL-USDT CLOSE\n", - "5 2025-06-02 16:44:00 SOL-USDT SELL OPEN 152.47 -2.364779 2.364779 ADA-USDT & SOL-USDT OPEN\n", - "7 2025-06-02 17:01:00 SOL-USDT BUY CLOSE 153.21 -0.457250 0.457250 ADA-USDT & SOL-USDT CLOSE\n", - "9 2025-06-02 17:06:00 SOL-USDT SELL OPEN 152.90 -2.191025 2.191025 ADA-USDT & SOL-USDT OPEN\n", - "11 2025-06-02 17:14:00 SOL-USDT BUY CLOSE 152.54 -0.939467 0.939467 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "13 2025-06-02 17:24:00 SOL-USDT SELL OPEN 153.56 -2.748538 2.748538 ADA-USDT & SOL-USDT OPEN\n", - "15 2025-06-02 17:33:00 SOL-USDT BUY CLOSE 153.24 -1.168442 1.168442 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "17 2025-06-02 18:02:00 SOL-USDT BUY OPEN 153.59 2.047229 2.047229 ADA-USDT & SOL-USDT OPEN\n", - "19 2025-06-02 18:06:00 SOL-USDT SELL CLOSE 153.79 -0.089168 0.089168 ADA-USDT & SOL-USDT CLOSE\n", - "21 2025-06-02 19:35:00 SOL-USDT SELL OPEN 151.99 -2.016878 2.016878 ADA-USDT & SOL-USDT OPEN\n", - "23 2025-06-02 20:09:00 SOL-USDT BUY CLOSE 153.75 -1.119561 1.119561 ADA-USDT & SOL-USDT CLOSE_STOP_PROFIT\n", - "25 2025-06-02 20:32:00 SOL-USDT SELL OPEN 154.22 -2.119312 2.119312 ADA-USDT & SOL-USDT OPEN\n", - "27 2025-06-02 21:04:00 SOL-USDT BUY CLOSE 154.72 -0.316305 0.316305 ADA-USDT & SOL-USDT CLOSE\n", - "29 2025-06-02 21:33:00 SOL-USDT BUY OPEN 154.51 2.116215 2.116215 ADA-USDT & SOL-USDT OPEN\n", - "31 2025-06-02 21:40:00 SOL-USDT SELL CLOSE 154.92 -0.195611 0.195611 ADA-USDT & SOL-USDT CLOSE\n", - "33 2025-06-02 21:58:00 SOL-USDT SELL OPEN 155.29 -2.084157 2.084157 ADA-USDT & SOL-USDT OPEN\n", - "35 2025-06-02 22:06:00 SOL-USDT BUY CLOSE 155.83 -0.396354 0.396354 ADA-USDT & SOL-USDT CLOSE\n", - "37 2025-06-02 22:19:00 SOL-USDT BUY OPEN 156.27 2.102163 2.102163 ADA-USDT & SOL-USDT OPEN\n", - "39 2025-06-02 22:22:00 SOL-USDT SELL CLOSE 155.92 1.931205 1.931205 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", - "41 2025-06-02 23:55:00 SOL-USDT SELL OPEN 156.94 -2.243868 2.243868 ADA-USDT & SOL-USDT OPEN\n", - "43 2025-06-02 23:59:00 SOL-USDT BUY CLOSE 156.83 -2.951683 2.951683 ADA-USDT & SOL-USDT CLOSE_POSITION\n" + " time symbol side action price disequilibrium scaled_disequilibrium pair status\n", + "1 2025-06-02 15:48:00 SOL-USDT BUY OPEN 152.80 0.002199 2.081805 ADA-USDT & SOL-USDT OPEN\n", + "3 2025-06-02 16:04:00 SOL-USDT SELL CLOSE 152.94 0.000948 0.798953 ADA-USDT & SOL-USDT CLOSE\n", + "5 2025-06-02 17:29:00 SOL-USDT SELL OPEN 153.44 -0.001016 2.138957 ADA-USDT & SOL-USDT OPEN\n", + "7 2025-06-02 17:35:00 SOL-USDT BUY CLOSE 153.03 -0.002270 3.905930 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "9 2025-06-02 17:36:00 SOL-USDT SELL OPEN 152.99 -0.001793 2.932781 ADA-USDT & SOL-USDT OPEN\n", + "11 2025-06-02 18:16:00 SOL-USDT BUY CLOSE 153.87 0.000173 0.959510 ADA-USDT & SOL-USDT CLOSE\n", + "13 2025-06-02 19:03:00 SOL-USDT BUY OPEN 153.61 0.002985 2.227838 ADA-USDT & SOL-USDT OPEN\n", + "15 2025-06-02 19:08:00 SOL-USDT SELL CLOSE 153.01 0.009870 2.980161 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "17 2025-06-02 19:09:00 SOL-USDT SELL OPEN 153.05 -0.006175 2.864208 ADA-USDT & SOL-USDT OPEN\n", + "19 2025-06-02 19:11:00 SOL-USDT BUY CLOSE 152.62 -0.009987 2.846697 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "21 2025-06-02 19:12:00 SOL-USDT BUY OPEN 152.17 0.009692 3.418634 ADA-USDT & SOL-USDT OPEN\n", + "23 2025-06-02 19:34:00 SOL-USDT SELL CLOSE 151.83 -0.001090 1.588587 ADA-USDT & SOL-USDT CLOSE_STOP_LOSS\n", + "25 2025-06-02 21:48:00 SOL-USDT SELL OPEN 155.20 -0.002240 2.521421 ADA-USDT & SOL-USDT OPEN\n", + "27 2025-06-02 22:04:00 SOL-USDT BUY CLOSE 156.04 -0.002265 0.428332 ADA-USDT & SOL-USDT CLOSE\n", + "29 2025-06-02 22:09:00 SOL-USDT BUY OPEN 155.67 0.002581 2.670046 ADA-USDT & SOL-USDT OPEN\n", + "31 2025-06-02 22:14:00 SOL-USDT SELL CLOSE 155.88 0.000614 0.859073 ADA-USDT & SOL-USDT CLOSE\n", + "33 2025-06-02 23:40:00 SOL-USDT SELL OPEN 157.00 -0.001467 2.192355 ADA-USDT & SOL-USDT OPEN\n", + "35 2025-06-02 23:58:00 SOL-USDT BUY CLOSE 156.82 -0.000184 0.896276 ADA-USDT & SOL-USDT CLOSE\n" ] }, { @@ -1644,126 +1620,6 @@ "opacity": 0.8, "type": "scatter", "x": [ - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", - "NaT", "2025-06-02T13:30:00.000000000", "2025-06-02T13:31:00.000000000", "2025-06-02T13:32:00.000000000", @@ -2396,7 +2252,7 @@ ], "xaxis": "x", "y": { - "bdata": "fABUm66iA0BcKOOn51j3P8QzALvGoPw/IQ3nNxuf5z+I0yEpr+TKPyF0+1eMK80/sZklCPSK4j/8w8OPvqbAPzCaZfrVCuk/j0GbCWm8AUAxWa9cV2ToP/i7iYjPcfw/R7E/NcHa6T8LqpegDbLyP7rbX9zqBe0/dXLiFuOO8T8Gj4/9Vmz4P+4SpeINye8/fLACFamv9D9Hz2e9IL36P4F7ddCJHPE/pR5GC4+M5T9yukfZJte5P82FgI2+8u8/Fn8aFEe0/T+RPXXBEOoCQCwGePnp9gBAWVPYStLe+D8v+90RIe70PzLCuATvavU/NXa75SuC8z8SQrLqGgPnP3U6hb2B89Y/pE62J3gHzD8HWM97dCPWP75WHKL+cuk/nDXEmw/w3T/LvN4gQ8fIP5sFeyh1HqU/K2mnoar14D/zFjPbYYPyPynIVbWP2vM/ZTS3VC6q7z9cpVhEBd3xP13yVWPIxfM/XELrSp6e8T8uWaNjPsTwPy0Jt6b1vu8/lG3r+NaJ8T/x/8IAvi30P1rIDXeTCvM/WY7oaWGH8z8xvRBdpQLxP08yKADSMPo/LvY1ateF8D+Lrr2V4PT3P7VpJcj4I/w/VGAItRnc9j9ZjuhpYYfzPy3jBoPT8+o/J6M5zlcI1z8Z5TYU+dPiPyBERcufc9A/T1h2NZaHxT9luIFPS2HvP0o/ZcSQs9M/ziD3lMzv6T9hyx1WyoL7P2McVDGIhABAysPgSfr68j8LmnJUqlngP+T0tLeyrcw/j023UCNb4z/HeLf+W0bjP5VUc9MnEcQ/COmxVUQ3yz/Q9/gjk9vQP5R0MtZ/uac/AptYs/TE2j9hKLP1gj+QPw0U0jXTV+o/6ibYry8z5j8MAF1Mw5/vP+iM3XGpYeI/bs6bSKwY8D9ScztbAJrXPx3+R4X+p+Q/x3i3/ltG4z9Q1bdazRzjP0vNh8mnPOs/iP4vHyqQ3z+nKh6uJcWlPyg8sZ1hiss/Zq8bsbbQzT/0yewv2iTZP1NDyz4XH+E/NqRQ5VRN6j+4ysw26eTVP1mx5cdVReg/F+rq25aI5D9DM6XLyQPiP9LIL4ZIdec/4ThKD4eb7j+9MXUUeKTfP1RbAdgUXcU/tkh/4IhU2D9mRk91j/PqPzSpBK3yAew/lql0MPph6j8i4FS/FY7cPyLgVL8Vjtw/RG3K2PuG4T/JppQp66HtP20OKmhdcOs/B1RaEe5w8D9s1ARbK+3rPzNv35/Afuw/3CTw79fL4D/n+xjRKx3PP5K3QXLAsdA/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/HeIwLPsiB0D7ZI6+zL4GQAaixX4o+vg/hf6wLTje/j/KOlUbmWsAQHLTDR2zBPw/uATLujJF9j/P618gfKP2PyVdrQZw4uw/mSHqqkxI5z9xm/fT9PeNP6byz/FGAdQ/C1vwLHfY5D8TLAxij0TvPy7ZLx00b+I/sGKIWqoB8j9M7TqLGwzQP8kGos2fB9M/hK7iO+ka2T+2NNJiQeXuPxQTd/9uZNA/3byNxIJXrD8Iki2Hq4fVP0EBjTCymlE/aRx+z7VU2j+w79xITkLZP1k0U5zQhtY/wrKku5v8kD/lI+TIIxuyP9yCErE/ZYE/VYkgN+JO5z93mU6K3ArZPzT5PulqbNw/l+MyFJ7Z2T9R5rtJmbzeP7foE2F0vuo/Q/a24nY66T8LSiSwPxvaP1Y6ZBBVseU/U31DvB/21j/c+rGOScjrPxGIAWZ1c+s/P0aQAZkk4T8C9Er0sNvjP5oUDamnFPc/hW2jpq2G+j+l+7qkqv31P70BZ6/V9PY/OmAT8FcD9D9iLZnyWxPdP7r9NLHpkM8/up+masDU0j8jSLRV0EpiPwza73ybMZs/YVbpZP0Lxj9jJ7iCAWzYP29a4DCH7Oc/qHG57zQ9vz/sYIYDJEGuP3kXI6G2moQ/s9Ur82Orwz9rOdHTvgZjP2iE08u2vsI/VVyM6TFM0z8j550TRmK2P0SzK4KaMdc/qA4qpdMe5T9fXQMfflLoP9arayVuq/E/z5vrKGxy+T9lljDXzEjzP0F4jEqhmPk/6bOnER5B/T+Jv+r+EOsCQJVO4zuk6whABSa1ZpGYCEDtSq7M9U4QQGANCTYHFw9AgifssmsKEUCp/KxbDswOQLzF806S8QtAYgPn6qXYCkCHTq5FofYFQIDjJcY8zQNAl3tTyh/KB0BAXXf35xwDQBeq5/sbzQRACwIgUAGhA0DYKA8lAj/5P0KygQMRJvE/JJIGAJRD3T+thr80mcD0P5s6MjZTiu0/aG8DxAu69z8v0E6t/qD2P/vi0t83hwFAbxsgDflcAkCBL+d3qKwCQDBlPYWc0Po/vKp6SY3H/T8ZtAdUAhjhP43MBzuPyvg/1z/ag0tN9T/cLlZZHRDuPzJma7ZdW/Y/EfOAnyf28z860WUuJYXDP8yt07Dp99Y/Dp2ILiFd5z8YbtWVeO7yPxV2LBpJmPs/OYFUHHJx8D/8RJjKuKT3P3M8OpMB/QVAmvGy2nyP+z9WExKx5X/2P8SfwAMDqvo/FnrbtlRn+z8YhZs7PTr3P1WO3coVIvQ/DPPWlE/c+j/nn3pG6ZP5P/6W7QLwsfI/p0YxD7X14T/axuM4mW/aP+P/Eo+OMMQ/dtJSGo4lwj+dqVsucIXVPx3a4VDgfdY/uNOE8Vg14D+VG+6+JQG9P51hZ49VINQ/8uX5a0TOuD+A0KLtV1DgP5/6xnfeSec/eiWWQien2z+YjgGBQZ7tP3WFjUbxjfQ/I38ZsMfG6z9ynbEeXy75P1l4HkcvNPQ/5dgk0hQj8z+FbdiFWO3wPykhzwJoSvc/hLszsduu9j/qsnXtaZrxP/Axtrx7b+g/2zXqEpZH8j/PEjwYxDnyP3RfMeQtWPI/w3CF4f3k9z8AVjWKuWAAQEi90tCJgfY/nzAazOi44T+lYZhkomPjP40uR6O+07Y/HdubnYPk3D+mGUWJuXPZP+NUFyi/geU//203TiNv4D+4WKuE/iXvP8GQlIabjtw/HZjeQF996D/97JfHkUDlP+hmFtLp2e0/kQoQ6ONW5T80cn6nOPDvP4PQ75UVEvA/eVD8KVs04T8iI3ZJf+7gPxzwa4NsLuo/pzwZ6tCG3D8wCTN+cbDPP7Y8mrw1C9Q/CMzw8cOruj+pKeiJ0CzpP8gwl8JlINQ/BP88P3iWxT+BiXyfouvQP9U7nQvjRuE/t4wwxnHh4j/aHOU+XQTsPyt+TwnQqe8/f+bHQlb95T8etrS91inSP6AYpYhmMdU/GlMKiRAajz9YZ5oIYvrTP79uc2QBpcw/vDuSi8P21j+HrxA1JbbYPxOLTF2sQNM/sWtF1yLV0D+cUdZIelbdP+GuH8Knz8I/YVPgv0gE0j+nnwNwFS/hP3NomQntItQ/6D3JAYx3wj8LvjVD0v3VP+t7K1iSP90/pGVktwzLzj+5xoEr5X/dP1rtUEyp4+k//lvc4xMv1z+SNL2ie+vkP10w3LJfiu4/OZXP1f5G6D/01EP/dE3mP93+f7Sn1ec/3oap72uk8T9lnj2bi5D2PyUR43WwufI/yMPzAdi18j+DrJDo9Df1PwlII8mTMPI/FeUTLEEr7T8GmbFpMAzYP8ll5TLBw+U/67s3II7L8D8N01hdvwHmPy/tVysPfc0/sayJBiW21D9q4Pdz6s3UP2+FFAGni+E/ehZYdDOi1D/3FQIIRWvUP6iTpl20qdY/mNiF9k9i3D/E0+4pBK3gPzUqyrPgL9c/GgIqJ5go1D9TXBqhJ0rLP9AkCmx6uNg/pisNqd8z3j+4uvOumT3FP1yb46GT270/sMNqXrjTrD8pcA7D6ePGP2HuyxMuVOc/xbD+Ijj17j/PQALl1tzoP0IrYgrPYfg/jHz51bn89z9RhIWwkCIAQJgzAOieEP0/AJqpjHF9+j9LUYMhimX5Pw1H0ml04/g/1qxDMU8SAUDSsOCVmHYBQLsC8FaFoQJACKnOHr6SA0AGliUUaG4AQNKQC2OjlQFAFwLm2ToQAEDpnmttiTsAQI88sPAmJgFAxgH0AiSt+z8ckTbf7kL7P+t/NS3PEvw/ulXPcZ6Y/T+zImkorzD3P5/H2U5zpfs/H0WYvLfT+z9uXREKwPr4PwSXzFE5z/M/ULTRznEC9z8t9dZdRGH0P1MLoIn/CfM/46INfJsC8j+9DOyiZ/zyP/d18C5M/fE/x+X+Hqbx6j/NAHppx6DsPx2542HrwfI/2eu+3YoP8z/lcQnuhxvxP6Lt/FW46fE/U4RN36ym9j9eMMMi4C/5P5UXTUG7ifo/NelTEWNn+j/jTYd7a9z2P5FJoFaQCPQ/bkSGqhgj8j+h6dFeWejtP2f44IytQOk//ohLfouI5z9CebPdWo7pP7VNlwsuzOs/syFcPEmW4z/rAkl685DvP3i5zz0lI/A/xehx3/R98D9+XHZcVDvwP3ztbJDJ+fM/equhmQUa9j8I8OI9Zx34PyzHEX3Eh/s/q8F8pzgz/j/YIB+sWfQAQLS1e7h4yv8/M5vxQ6W4/z+hgGutwaIAQJGlIEvoaABAdpJ2p1C8AUDpBALh8hYCQJS4U508/QNADqiosrmaA0BDAOqgnDgDQCceIfh04QNAXQbgWKkRBUBZdQs1CVMFQBeLBuk7pgRAgoXwQIvZAEBs34d60fL+P32svKSqpv8/5eO6uQWC/z/8cV5ebrr7P5sxwaJTdP4/lWfIyYud/z+iRzfsAG//P2BTgOBX1ABAiJs0nsnr+j9IHQAGS8/6P3kH2QX9ZPo/FgC5hk+n/z9nv5+HMHH9Px3MCx8NI/4/rDerZ9u//j/RgQu/1d/1P4/NHn75Fu8/KOSlaVc+1D+lWRFoCdDdP4Ju64VVIa8/Zhr0YHt+1T+9/FpGU0PVPyB5SD9jhdY/LwDAbfBiwD/yM7F2mKnhP9QDTXufI/k/vE+PU8xd+T/BXhDlTuH8Pxg7aHjbsfg/ZKk6jDcz9j+iPtEBa+f6P7vqfxXz0v0/LSodqPkw/T/F6XgFNKH4PzmzlbcaL/U/mTPyw4q3+D8QQRF9TIjuP7z0wEPF+uo/RM3ce7sO8j9XsYtaCvfwPybezzV1Svs/a6PZyTdi/T/MeHubH0D/P1JaPoR7F/4/aHeF5JKo/D+s+k6lRPD5P/EOS/gB7gBA3UXVC+onAEC8yBgVpJX4P/f1MVEIp/E/hb5Wzo5U7D+iQSXplNbjP128c8lj3ew/JLFobcsJyT8GGxtZ5IqjP1BcGzE8BdQ/2NHKwwSz1T/j92sqXQzEPzb/P5XW47M/ykT9pUuF6T/4008LAiHwP5RyHzWeltY/YXeSA0GQ1z/1kUnfEma8Px7HJ1a+xeQ/ZEFsaeVd4z9lEqGPqVPzP6T8yVcnZ/Q/AMw4+PIt7j8qXf3yHpn2P72Oa0rIyP0/kqiJZ1qsAEC00uH4MCoGQPRZC/SiSAVAZKFAauRDA0AP/aG7r1ICQE42NBOJ1ANAz2bI/hHF4z8uaCaGH1rkPyJW5o/eXdk/+Ayoh3W/3T8QuHUCb/fgPznnc4A+V9k/jj3ZX0RLwj9zl/9MvFThPweIo8+jzOc/dag0dihH1D/cj1BHhnLQP6/GzBrA/uQ/wGTEenjZ7D8X3TJ2mQ7zP4kivWXlv/k/13pN1DrRAEC/rYHefb/4P598ky0qAf0/PVFASzfm/j9EmMMjELL+P34vC/J88fo/ucfNq5Au+T+Hg35qUWL+P1pWQmiMZ/8/LHpv/+s1+z9O/ah9hT78P9L5g/950vc/gRDpnlof9z8zXkdxohrjP9Y0gi6xAMQ/LQm0IcYh2z/MIcgpvBnRP5se3d6rYNU/4iiyPzv6wT/xhpJPLBjEP5IYGjHG1ZU/fz7Mu93F3D9KzJOVTl/EP6sgybqDo8E/SqeCTqvT4D/hfNzSRFjTPwkTYVjjsNE/aB9DpMjB2D/AI3mjUxXHPwni66h1b+Q/7Ii8lbav4j/D8yzsjraoP2E1XuT2gGc/FdbZpOKA1j9YpIAgMlzoP6Su22mxc+M/1auEp/tm2D+P+V0MBVHfP4A52wqoTt0/ErdMQGvLtD+vMl6jcB3BPxpJQGX4ZtA/wxyMZXbs8D9x7Wx+a1XtP+g9ijo5S/Y/6BTz0R+R+z9X86AUzA30P71jT0Zjl/o/W039cxny/j+2edkT0Nz/P20SESWiFPY/+1dFjYIv1D+6T8Ccb+/TP97AEPFh7+I/tf1nuHmr6D9Knxets3XWP7utqCqCl9c/fu7gI13E6D/blttMFP7UPz1s0U7Csdc/uJGCE2LM2D8gSK7ylZPTP+RYmjB8W7c/siRwyYBCzz80Yg+U34DhPz+vZwBuNpI/2ZDFo/Ta3j+OtdW6NFXSP7k87j3IntI/jCrUH4ki0T8UslpCeQHOPz/5gv3Drr8/qX1KooOu1T8RSaMbTAqIP20LAVp9rdc/HGo+70mgoj+YhP+avpXWP+P/hEi/PuM/q0bBThua8T9D0WckAYvwP0bwcW8ChN4/PSiwtTQXxz8kJh0sRHS1P/JVGkTYueM/1m1EwZnR4D/YaNHbM/TnPyZ/x2c6ZfI/vWsuhriB8j8mtww3p8bzP1tEGXM+xv0/S7wslkcY/T/xT+iAEvz1P1uWAKy/4vY/fVVqMnzN9z/1/lZjH/f5P/2aRJOV3/s/IZO113DzAUCqC3fzfmcEQKGcpBVQcgVAjx6/pt7+A0ADTcsMDJ0HQA==", + "bdata": "AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAA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", "dtype": "f8" }, "yaxis": "y" @@ -3693,112 +3549,6 @@ }, "yaxis": "y2" }, - { - "hovertemplate": "%{text}", - "marker": { - "color": "green", - "size": 14, - "symbol": "triangle-up" - }, - "mode": "markers", - "name": "ADA-USDT BUY", - "showlegend": true, - "text": [ - "ADA-USDT BUY OPEN
Time: 2025-06-02 15:31:00
Normalized Price: 1.0036
Actual Price: $0.67", - "ADA-USDT BUY OPEN
Time: 2025-06-02 16:44:00
Normalized Price: 0.9999
Actual Price: $0.67", - "ADA-USDT BUY OPEN
Time: 2025-06-02 17:06:00
Normalized Price: 1.0043
Actual Price: $0.67", - "ADA-USDT BUY OPEN
Time: 2025-06-02 17:24:00
Normalized Price: 1.0069
Actual Price: $0.68", - "ADA-USDT BUY CLOSE
Time: 2025-06-02 18:06:00
Normalized Price: 1.0055
Actual Price: $0.67", - "ADA-USDT BUY OPEN
Time: 2025-06-02 19:35:00
Normalized Price: 1.0015
Actual Price: $0.67", - "ADA-USDT BUY OPEN
Time: 2025-06-02 20:32:00
Normalized Price: 1.0152
Actual Price: $0.68", - "ADA-USDT BUY CLOSE
Time: 2025-06-02 21:40:00
Normalized Price: 1.0185
Actual Price: $0.68", - "ADA-USDT BUY OPEN
Time: 2025-06-02 21:58:00
Normalized Price: 1.0198
Actual Price: $0.68", - "ADA-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 22:22:00
Normalized Price: 1.0258
Actual Price: $0.69", - "ADA-USDT BUY OPEN
Time: 2025-06-02 23:55:00
Normalized Price: 1.0273
Actual Price: $0.69" - ], - "type": "scatter", - "x": [ - "2025-06-02T15:31:00", - "2025-06-02T16:44:00", - "2025-06-02T17:06:00", - "2025-06-02T17:24:00", - "2025-06-02T18:06:00", - "2025-06-02T19:35:00", - "2025-06-02T20:32:00", - "2025-06-02T21:40:00", - "2025-06-02T21:58:00", - "2025-06-02T22:22:00", - "2025-06-02T23:55:00" - ], - "xaxis": "x2", - "y": [ - 1.0035772842450439, - 0.9998509464897897, - 1.0043225517960948, - 1.0068564614696676, - 1.005514979877776, - 1.0014905351021017, - 1.0152034580414369, - 1.0184826352660605, - 1.019824116857952, - 1.0257862572663585, - 1.0272767923684603 - ], - "yaxis": "y2" - }, - { - "hovertemplate": "%{text}", - "marker": { - "color": "red", - "size": 14, - "symbol": "triangle-down" - }, - "mode": "markers", - "name": "SOL-USDT SELL", - "showlegend": true, - "text": [ - "SOL-USDT SELL OPEN
Time: 2025-06-02 15:31:00
Normalized Price: 0.9966
Actual Price: $153.16", - "SOL-USDT SELL OPEN
Time: 2025-06-02 16:44:00
Normalized Price: 0.9921
Actual Price: $152.47", - "SOL-USDT SELL OPEN
Time: 2025-06-02 17:06:00
Normalized Price: 0.9949
Actual Price: $152.90", - "SOL-USDT SELL OPEN
Time: 2025-06-02 17:24:00
Normalized Price: 0.9992
Actual Price: $153.56", - "SOL-USDT SELL CLOSE
Time: 2025-06-02 18:06:00
Normalized Price: 1.0007
Actual Price: $153.79", - "SOL-USDT SELL OPEN
Time: 2025-06-02 19:35:00
Normalized Price: 0.9890
Actual Price: $151.99", - "SOL-USDT SELL OPEN
Time: 2025-06-02 20:32:00
Normalized Price: 1.0035
Actual Price: $154.22", - "SOL-USDT SELL CLOSE
Time: 2025-06-02 21:40:00
Normalized Price: 1.0081
Actual Price: $154.92", - "SOL-USDT SELL OPEN
Time: 2025-06-02 21:58:00
Normalized Price: 1.0105
Actual Price: $155.29", - "SOL-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 22:22:00
Normalized Price: 1.0146
Actual Price: $155.92", - "SOL-USDT SELL OPEN
Time: 2025-06-02 23:55:00
Normalized Price: 1.0212
Actual Price: $156.94" - ], - "type": "scatter", - "x": [ - "2025-06-02T15:31:00", - "2025-06-02T16:44:00", - "2025-06-02T17:06:00", - "2025-06-02T17:24:00", - "2025-06-02T18:06:00", - "2025-06-02T19:35:00", - "2025-06-02T20:32:00", - "2025-06-02T21:40:00", - "2025-06-02T21:58:00", - "2025-06-02T22:22:00", - "2025-06-02T23:55:00" - ], - "xaxis": "x2", - "y": [ - 0.9966163456533055, - 0.9921264966163456, - 0.9949245184799583, - 0.9992191566892243, - 1.0007157730348775, - 0.9890031233732431, - 1.0035137948984902, - 1.008068714211348, - 1.010476314419573, - 1.0145757418011452, - 1.021212909942738 - ], - "yaxis": "y2" - }, { "hovertemplate": "%{text}", "marker": { @@ -3810,44 +3560,38 @@ "name": "ADA-USDT SELL", "showlegend": true, "text": [ - "ADA-USDT SELL CLOSE
Time: 2025-06-02 15:41:00
Normalized Price: 1.0039
Actual Price: $0.67", - "ADA-USDT SELL CLOSE
Time: 2025-06-02 17:01:00
Normalized Price: 1.0054
Actual Price: $0.67", - "ADA-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 17:14:00
Normalized Price: 1.0012
Actual Price: $0.67", - "ADA-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 17:33:00
Normalized Price: 1.0019
Actual Price: $0.67", - "ADA-USDT SELL OPEN
Time: 2025-06-02 18:02:00
Normalized Price: 1.0048
Actual Price: $0.67", - "ADA-USDT SELL CLOSE_STOP_PROFIT
Time: 2025-06-02 20:09:00
Normalized Price: 1.0122
Actual Price: $0.68", - "ADA-USDT SELL CLOSE
Time: 2025-06-02 21:04:00
Normalized Price: 1.0203
Actual Price: $0.68", - "ADA-USDT SELL OPEN
Time: 2025-06-02 21:33:00
Normalized Price: 1.0164
Actual Price: $0.68", - "ADA-USDT SELL CLOSE
Time: 2025-06-02 22:06:00
Normalized Price: 1.0265
Actual Price: $0.69", - "ADA-USDT SELL OPEN
Time: 2025-06-02 22:19:00
Normalized Price: 1.0292
Actual Price: $0.69", - "ADA-USDT SELL CLOSE_POSITION
Time: 2025-06-02 23:59:00
Normalized Price: 1.0279
Actual Price: $0.69" + "ADA-USDT SELL OPEN
Time: 2025-06-02 15:48:00
Normalized Price: 1.0040
Actual Price: $0.67", + "ADA-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 17:35:00
Normalized Price: 1.0004
Actual Price: $0.67", + "ADA-USDT SELL CLOSE
Time: 2025-06-02 18:16:00
Normalized Price: 1.0064
Actual Price: $0.68", + "ADA-USDT SELL OPEN
Time: 2025-06-02 19:03:00
Normalized Price: 1.0098
Actual Price: $0.68", + "ADA-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 19:11:00
Normalized Price: 1.0058
Actual Price: $0.67", + "ADA-USDT SELL OPEN
Time: 2025-06-02 19:12:00
Normalized Price: 1.0045
Actual Price: $0.67", + "ADA-USDT SELL CLOSE
Time: 2025-06-02 22:04:00
Normalized Price: 1.0259
Actual Price: $0.69", + "ADA-USDT SELL OPEN
Time: 2025-06-02 22:09:00
Normalized Price: 1.0285
Actual Price: $0.69", + "ADA-USDT SELL CLOSE
Time: 2025-06-02 23:58:00
Normalized Price: 1.0279
Actual Price: $0.69" ], "type": "scatter", "x": [ - "2025-06-02T15:41:00", - "2025-06-02T17:01:00", - "2025-06-02T17:14:00", - "2025-06-02T17:33:00", - "2025-06-02T18:02:00", - "2025-06-02T20:09:00", - "2025-06-02T21:04:00", - "2025-06-02T21:33:00", - "2025-06-02T22:06:00", - "2025-06-02T22:19:00", - "2025-06-02T23:59:00" + "2025-06-02T15:48:00", + "2025-06-02T17:35:00", + "2025-06-02T18:16:00", + "2025-06-02T19:03:00", + "2025-06-02T19:11:00", + "2025-06-02T19:12:00", + "2025-06-02T22:04:00", + "2025-06-02T22:09:00", + "2025-06-02T23:58:00" ], "xaxis": "x2", "y": [ - 1.003875391265464, - 1.0053659263675658, - 1.0011924280816813, - 1.0019376956327322, - 1.0047697123267252, - 1.0122223878372336, - 1.0202712773885825, - 1.0163958861231182, - 1.0265315248174094, - 1.0292144880011924, + 1.0040244447756743, + 1.0004471605306304, + 1.0064093009390371, + 1.0098375316738708, + 1.0058130868981963, + 1.004471605306305, + 1.0259353107765687, + 1.0284692204501416, 1.027873006409301 ], "yaxis": "y2" @@ -3863,45 +3607,133 @@ "name": "SOL-USDT BUY", "showlegend": true, "text": [ - "SOL-USDT BUY CLOSE
Time: 2025-06-02 15:41:00
Normalized Price: 0.9961
Actual Price: $153.08", - "SOL-USDT BUY CLOSE
Time: 2025-06-02 17:01:00
Normalized Price: 0.9969
Actual Price: $153.21", - "SOL-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 17:14:00
Normalized Price: 0.9926
Actual Price: $152.54", - "SOL-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 17:33:00
Normalized Price: 0.9971
Actual Price: $153.24", - "SOL-USDT BUY OPEN
Time: 2025-06-02 18:02:00
Normalized Price: 0.9994
Actual Price: $153.59", - "SOL-USDT BUY CLOSE_STOP_PROFIT
Time: 2025-06-02 20:09:00
Normalized Price: 1.0005
Actual Price: $153.75", - "SOL-USDT BUY CLOSE
Time: 2025-06-02 21:04:00
Normalized Price: 1.0068
Actual Price: $154.72", - "SOL-USDT BUY OPEN
Time: 2025-06-02 21:33:00
Normalized Price: 1.0054
Actual Price: $154.51", - "SOL-USDT BUY CLOSE
Time: 2025-06-02 22:06:00
Normalized Price: 1.0140
Actual Price: $155.83", - "SOL-USDT BUY OPEN
Time: 2025-06-02 22:19:00
Normalized Price: 1.0169
Actual Price: $156.27", - "SOL-USDT BUY CLOSE_POSITION
Time: 2025-06-02 23:59:00
Normalized Price: 1.0205
Actual Price: $156.83" + "SOL-USDT BUY OPEN
Time: 2025-06-02 15:48:00
Normalized Price: 0.9943
Actual Price: $152.80", + "SOL-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 17:35:00
Normalized Price: 0.9958
Actual Price: $153.03", + "SOL-USDT BUY CLOSE
Time: 2025-06-02 18:16:00
Normalized Price: 1.0012
Actual Price: $153.87", + "SOL-USDT BUY OPEN
Time: 2025-06-02 19:03:00
Normalized Price: 0.9995
Actual Price: $153.61", + "SOL-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 19:11:00
Normalized Price: 0.9931
Actual Price: $152.62", + "SOL-USDT BUY OPEN
Time: 2025-06-02 19:12:00
Normalized Price: 0.9902
Actual Price: $152.17", + "SOL-USDT BUY CLOSE
Time: 2025-06-02 22:04:00
Normalized Price: 1.0154
Actual Price: $156.04", + "SOL-USDT BUY OPEN
Time: 2025-06-02 22:09:00
Normalized Price: 1.0129
Actual Price: $155.67", + "SOL-USDT BUY CLOSE
Time: 2025-06-02 23:58:00
Normalized Price: 1.0204
Actual Price: $156.82" ], "type": "scatter", "x": [ - "2025-06-02T15:41:00", - "2025-06-02T17:01:00", - "2025-06-02T17:14:00", - "2025-06-02T17:33:00", - "2025-06-02T18:02:00", - "2025-06-02T20:09:00", - "2025-06-02T21:04:00", - "2025-06-02T21:33:00", - "2025-06-02T22:06:00", - "2025-06-02T22:19:00", - "2025-06-02T23:59:00" + "2025-06-02T15:48:00", + "2025-06-02T17:35:00", + "2025-06-02T18:16:00", + "2025-06-02T19:03:00", + "2025-06-02T19:11:00", + "2025-06-02T19:12:00", + "2025-06-02T22:04:00", + "2025-06-02T22:09:00", + "2025-06-02T23:58:00" ], "xaxis": "x2", "y": [ - 0.9960957834461218, - 0.9969416970327954, - 0.9925819885476314, - 0.9971369078604894, - 0.9994143675169183, - 1.0004554919312858, - 1.0067673086933888, - 1.0054008328995314, - 1.0139901093180634, - 1.0168532014575742, - 1.0204971369078606 + 0.9942738157209787, + 0.995770432066632, + 1.0012363352420615, + 0.9995445080687143, + 0.9931025507548152, + 0.9901743883394064, + 1.0153565851119208, + 1.012948984903696, + 1.0204320666319624 + ], + "yaxis": "y2" + }, + { + "hovertemplate": "%{text}", + "marker": { + "color": "green", + "size": 14, + "symbol": "triangle-up" + }, + "mode": "markers", + "name": "ADA-USDT BUY", + "showlegend": true, + "text": [ + "ADA-USDT BUY CLOSE
Time: 2025-06-02 16:04:00
Normalized Price: 1.0033
Actual Price: $0.67", + "ADA-USDT BUY OPEN
Time: 2025-06-02 17:29:00
Normalized Price: 1.0054
Actual Price: $0.67", + "ADA-USDT BUY OPEN
Time: 2025-06-02 17:36:00
Normalized Price: 1.0009
Actual Price: $0.67", + "ADA-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 19:08:00
Normalized Price: 1.0080
Actual Price: $0.68", + "ADA-USDT BUY OPEN
Time: 2025-06-02 19:09:00
Normalized Price: 1.0083
Actual Price: $0.68", + "ADA-USDT BUY CLOSE_STOP_LOSS
Time: 2025-06-02 19:34:00
Normalized Price: 1.0012
Actual Price: $0.67", + "ADA-USDT BUY OPEN
Time: 2025-06-02 21:48:00
Normalized Price: 1.0176
Actual Price: $0.68", + "ADA-USDT BUY CLOSE
Time: 2025-06-02 22:14:00
Normalized Price: 1.0271
Actual Price: $0.69", + "ADA-USDT BUY OPEN
Time: 2025-06-02 23:40:00
Normalized Price: 1.0279
Actual Price: $0.69" + ], + "type": "scatter", + "x": [ + "2025-06-02T16:04:00", + "2025-06-02T17:29:00", + "2025-06-02T17:36:00", + "2025-06-02T19:08:00", + "2025-06-02T19:09:00", + "2025-06-02T19:34:00", + "2025-06-02T21:48:00", + "2025-06-02T22:14:00", + "2025-06-02T23:40:00" + ], + "xaxis": "x2", + "y": [ + 1.0032791772246237, + 1.0053659263675658, + 1.0008943210612609, + 1.0080488895513489, + 1.008346996571769, + 1.0011924280816813, + 1.0175883142047994, + 1.02712773885825, + 1.027873006409301 + ], + "yaxis": "y2" + }, + { + "hovertemplate": "%{text}", + "marker": { + "color": "red", + "size": 14, + "symbol": "triangle-down" + }, + "mode": "markers", + "name": "SOL-USDT SELL", + "showlegend": true, + "text": [ + "SOL-USDT SELL CLOSE
Time: 2025-06-02 16:04:00
Normalized Price: 0.9952
Actual Price: $152.94", + "SOL-USDT SELL OPEN
Time: 2025-06-02 17:29:00
Normalized Price: 0.9984
Actual Price: $153.44", + "SOL-USDT SELL OPEN
Time: 2025-06-02 17:36:00
Normalized Price: 0.9955
Actual Price: $152.99", + "SOL-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 19:08:00
Normalized Price: 0.9956
Actual Price: $153.01", + "SOL-USDT SELL OPEN
Time: 2025-06-02 19:09:00
Normalized Price: 0.9959
Actual Price: $153.05", + "SOL-USDT SELL CLOSE_STOP_LOSS
Time: 2025-06-02 19:34:00
Normalized Price: 0.9880
Actual Price: $151.83", + "SOL-USDT SELL OPEN
Time: 2025-06-02 21:48:00
Normalized Price: 1.0099
Actual Price: $155.20", + "SOL-USDT SELL CLOSE
Time: 2025-06-02 22:14:00
Normalized Price: 1.0143
Actual Price: $155.88", + "SOL-USDT SELL OPEN
Time: 2025-06-02 23:40:00
Normalized Price: 1.0216
Actual Price: $157.00" + ], + "type": "scatter", + "x": [ + "2025-06-02T16:04:00", + "2025-06-02T17:29:00", + "2025-06-02T17:36:00", + "2025-06-02T19:08:00", + "2025-06-02T19:09:00", + "2025-06-02T19:34:00", + "2025-06-02T21:48:00", + "2025-06-02T22:14:00", + "2025-06-02T23:40:00" + ], + "xaxis": "x2", + "y": [ + 0.9951847995835502, + 0.9984383133784487, + 0.9955101509630401, + 0.9956402915148359, + 0.9959005726184279, + 0.9879619989588756, + 1.0098906819364912, + 1.0143154606975533, + 1.0216033315981259 ], "yaxis": "y2" }, @@ -4562,18 +4394,15 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T15:31:00.000000000", - "2025-06-02T16:44:00.000000000", - "2025-06-02T17:06:00.000000000", - "2025-06-02T17:24:00.000000000", - "2025-06-02T19:35:00.000000000", - "2025-06-02T20:32:00.000000000", - "2025-06-02T21:58:00.000000000", - "2025-06-02T23:55:00.000000000" + "2025-06-02T17:29:00.000000000", + "2025-06-02T17:36:00.000000000", + "2025-06-02T19:09:00.000000000", + "2025-06-02T21:48:00.000000000", + "2025-06-02T23:40:00.000000000" ], "xaxis": "x3", "y": { - "bdata": "lrIMcayL5T+BBMWPMXflPwBvgQTFj+U/BFYOLbKd5T851sVtNIDlP3rHKTqSy+U/24r9Zffk5T8E54wo7Q3mPw==", + "bdata": "L90kBoGV5T+wcmiR7XzlP9nO91PjpeU/m1Wfq63Y5T+MSuoENBHmPw==", "dtype": "f8" }, "yaxis": "y3" @@ -4589,13 +4418,14 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T18:06:00.000000000", - "2025-06-02T21:40:00.000000000", - "2025-06-02T22:22:00.000000000" + "2025-06-02T16:04:00.000000000", + "2025-06-02T19:08:00.000000000", + "2025-06-02T19:34:00.000000000", + "2025-06-02T22:14:00.000000000" ], "xaxis": "x3", "y": { - "bdata": "ETY8vVKW5T/oaiv2l93lPy9uowG8BeY/", + "bdata": "0gDeAgmK5T8VHcnlP6TlP3Qkl/+QfuU/Io51cRsN5j8=", "dtype": "f8" }, "yaxis": "y3" @@ -4611,13 +4441,14 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T18:02:00.000000000", - "2025-06-02T21:33:00.000000000", - "2025-06-02T22:19:00.000000000" + "2025-06-02T15:48:00.000000000", + "2025-06-02T19:03:00.000000000", + "2025-06-02T19:12:00.000000000", + "2025-06-02T22:09:00.000000000" ], "xaxis": "x3", "y": { - "bdata": "p3nHKTqS5T+KjuTyH9LlP39qvHSTGOY/", + "bdata": "PL1SliGO5T+uR+F6FK7lP+PHmLuWkOU/FK5H4XoU5j8=", "dtype": "f8" }, "yaxis": "y3" @@ -4633,18 +4464,15 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T15:41:00.000000000", - "2025-06-02T17:01:00.000000000", - "2025-06-02T17:14:00.000000000", - "2025-06-02T17:33:00.000000000", - "2025-06-02T20:09:00.000000000", - "2025-06-02T21:04:00.000000000", - "2025-06-02T22:06:00.000000000", - "2025-06-02T23:59:00.000000000" + "2025-06-02T17:35:00.000000000", + "2025-06-02T18:16:00.000000000", + "2025-06-02T19:11:00.000000000", + "2025-06-02T22:04:00.000000000", + "2025-06-02T23:58:00.000000000" ], "xaxis": "x3", "y": { - "bdata": "WmQ730+N5T8v3SQGgZXlP3Qkl/+QfuU/3+ALk6mC5T/Q1VbsL7vlP4GVQ4ts5+U/mSoYldQJ5j+MSuoENBHmPw==", + "bdata": "CmgibHh65T9eS8gHPZvlP9Xnaiv2l+U/Ece6uI0G5j+MSuoENBHmPw==", "dtype": "f8" }, "yaxis": "y3" @@ -5306,13 +5134,14 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T18:02:00.000000000", - "2025-06-02T21:33:00.000000000", - "2025-06-02T22:19:00.000000000" + "2025-06-02T15:48:00.000000000", + "2025-06-02T19:03:00.000000000", + "2025-06-02T19:12:00.000000000", + "2025-06-02T22:09:00.000000000" ], "xaxis": "x4", "y": { - "bdata": "exSuR+EyY0C4HoXrUVBjQHE9CtejiGNA", + "bdata": "mpmZmZkZY0DsUbgehTNjQD0K16NwBWNAPQrXo3B1Y0A=", "dtype": "f8" }, "yaxis": "y4" @@ -5328,18 +5157,15 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T15:41:00.000000000", - "2025-06-02T17:01:00.000000000", - "2025-06-02T17:14:00.000000000", - "2025-06-02T17:33:00.000000000", - "2025-06-02T20:09:00.000000000", - "2025-06-02T21:04:00.000000000", - "2025-06-02T22:06:00.000000000", - "2025-06-02T23:59:00.000000000" + "2025-06-02T17:35:00.000000000", + "2025-06-02T18:16:00.000000000", + "2025-06-02T19:11:00.000000000", + "2025-06-02T22:04:00.000000000", + "2025-06-02T23:58:00.000000000" ], "xaxis": "x4", "y": { - "bdata": "w/UoXI8iY0AfhetRuCZjQOF6FK5HEWNASOF6FK4nY0AAAAAAADhjQNejcD0KV2NAw/UoXI96Y0DD9Shcj5pjQA==", + "bdata": "KVyPwvUgY0CkcD0K1ztjQKRwPQrXE2NA4XoUrkeBY0AK16NwPZpjQA==", "dtype": "f8" }, "yaxis": "y4" @@ -5355,18 +5181,15 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T15:31:00.000000000", - "2025-06-02T16:44:00.000000000", - "2025-06-02T17:06:00.000000000", - "2025-06-02T17:24:00.000000000", - "2025-06-02T19:35:00.000000000", - "2025-06-02T20:32:00.000000000", - "2025-06-02T21:58:00.000000000", - "2025-06-02T23:55:00.000000000" + "2025-06-02T17:29:00.000000000", + "2025-06-02T17:36:00.000000000", + "2025-06-02T19:09:00.000000000", + "2025-06-02T21:48:00.000000000", + "2025-06-02T23:40:00.000000000" ], "xaxis": "x4", "y": { - "bdata": "hetRuB4lY0DXo3A9Cg9jQM3MzMzMHGNAUrgehesxY0BI4XoUrv9iQNejcD0KR2NA4XoUrkdpY0CuR+F6FJ5jQA==", + "bdata": "rkfhehQuY0BI4XoUrh9jQJqZmZmZIWNAZmZmZmZmY0AAAAAAAKBjQA==", "dtype": "f8" }, "yaxis": "y4" @@ -5382,13 +5205,14 @@ "showlegend": true, "type": "scatter", "x": [ - "2025-06-02T18:06:00.000000000", - "2025-06-02T21:40:00.000000000", - "2025-06-02T22:22:00.000000000" + "2025-06-02T16:04:00.000000000", + "2025-06-02T19:08:00.000000000", + "2025-06-02T19:34:00.000000000", + "2025-06-02T22:14:00.000000000" ], "xaxis": "x4", "y": { - "bdata": "4XoUrkc5Y0A9CtejcF1jQD0K16NwfWNA", + "bdata": "rkfhehQeY0C4HoXrUSBjQMP1KFyP+mJAXI/C9Sh8Y0A=", "dtype": "f8" }, "yaxis": "y4" @@ -5493,8 +5317,8 @@ "x0": "2025-06-02T13:30:00", "x1": "2025-06-02T23:59:00", "xref": "x", - "y0": 0.5, - "y1": 0.5, + "y0": 1, + "y1": 1, "yref": "y" }, { @@ -5508,8 +5332,8 @@ "x0": "2025-06-02T13:30:00", "x1": "2025-06-02T23:59:00", "xref": "x", - "y0": -0.5, - "y1": -0.5, + "y0": -1, + "y1": -1, "yref": "y" }, { @@ -6399,9 +6223,9 @@ }, "text/html": [ "
\n", - "