daafa999 commited on
Commit
16c2507
·
verified ·
1 Parent(s): bf63dc9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -89
app.py CHANGED
@@ -2,15 +2,12 @@ import os
2
  import time
3
  import logging
4
  import traceback
5
- from datetime import datetime
6
 
7
  import gradio as gr
8
  import pandas as pd
9
  import numpy as np
10
- import joblib
11
  import requests
12
-
13
- from binance.client import Client
14
 
15
  from sklearn.preprocessing import MinMaxScaler
16
  from sklearn.model_selection import TimeSeriesSplit
@@ -31,27 +28,19 @@ SYMBOLS = [
31
  "BNBUSDT",
32
  "XRPUSDT",
33
  "DOGEUSDT",
34
- "AVAXUSDT",
35
- "LINKUSDT",
36
  ]
37
 
38
  WINDOW = 20
39
 
40
  MODEL_DIR = "models"
41
  DATA_DIR = "data"
42
- LOG_DIR = "logs"
43
 
44
  os.makedirs(MODEL_DIR, exist_ok=True)
45
  os.makedirs(DATA_DIR, exist_ok=True)
46
- os.makedirs(LOG_DIR, exist_ok=True)
47
-
48
- BOT_TOKEN = "YOUR_BOT_TOKEN"
49
- CHAT_ID = "YOUR_CHAT_ID"
50
 
51
  CACHE_SECONDS = 60
52
 
53
  LAST_DOWNLOAD = {}
54
- LAST_SIGNALS = {}
55
  LAST_RETRAIN = 0
56
 
57
 
@@ -64,13 +53,6 @@ logging.basicConfig(level=logging.INFO)
64
  logger = logging.getLogger("crypto_ai")
65
 
66
 
67
- # ============================================================
68
- # BINANCE CLIENT
69
- # ============================================================
70
-
71
- client = Client()
72
-
73
-
74
  # ============================================================
75
  # PATHS
76
  # ============================================================
@@ -99,36 +81,6 @@ def data_path(symbol):
99
  )
100
 
101
 
102
- # ============================================================
103
- # TELEGRAM
104
- # ============================================================
105
-
106
- def send_telegram(message):
107
-
108
- try:
109
-
110
- if "YOUR_BOT_TOKEN" in BOT_TOKEN:
111
- return
112
-
113
- url = (
114
- f"https://api.telegram.org/"
115
- f"bot{BOT_TOKEN}/sendMessage"
116
- )
117
-
118
- requests.post(
119
- url,
120
- data={
121
- "chat_id": CHAT_ID,
122
- "text": message
123
- },
124
- timeout=10
125
- )
126
-
127
- except Exception as e:
128
-
129
- logger.warning(e)
130
-
131
-
132
  # ============================================================
133
  # DOWNLOAD BINANCE DATA
134
  # ============================================================
@@ -157,21 +109,33 @@ def safe_download(symbol):
157
  parse_dates=True
158
  )
159
 
160
- return df, True
161
 
162
  # ============================================
163
- # DOWNLOAD
164
  # ============================================
165
 
166
- klines = client.get_klines(
167
- symbol=symbol,
168
- interval=Client.KLINE_INTERVAL_1HOUR,
169
- limit=1000
 
 
 
 
 
 
 
 
 
 
170
  )
171
 
 
 
172
  rows = []
173
 
174
- for k in klines:
175
 
176
  rows.append({
177
  "time": pd.to_datetime(
@@ -193,13 +157,11 @@ def safe_download(symbol):
193
 
194
  LAST_DOWNLOAD[symbol] = now
195
 
196
- return df, True
197
 
198
  except Exception as e:
199
 
200
- logger.warning(
201
- f"{symbol} download failed: {e}"
202
- )
203
 
204
  # ============================================
205
  # FALLBACK CACHE
@@ -219,13 +181,13 @@ def safe_download(symbol):
219
  parse_dates=True
220
  )
221
 
222
- return df, False
223
 
224
  except Exception as e:
225
 
226
  logger.warning(e)
227
 
228
- return None, False
229
 
230
 
231
  # ============================================================
@@ -234,7 +196,7 @@ def safe_download(symbol):
234
 
235
  def fetch_and_prepare(symbol):
236
 
237
- df, is_real = safe_download(symbol)
238
 
239
  if df is None:
240
 
@@ -537,7 +499,7 @@ def train_all():
537
 
538
  run_train(symbol)
539
 
540
- time.sleep(0.5)
541
 
542
  except Exception as e:
543
 
@@ -693,30 +655,6 @@ def run_predict(symbol):
693
  signal
694
  )
695
 
696
- previous = LAST_SIGNALS.get(symbol)
697
-
698
- if previous != signal:
699
-
700
- LAST_SIGNALS[symbol] = signal
701
-
702
- send_telegram(
703
- f"""
704
- 🚨 NEW SIGNAL
705
-
706
- PAIR: {symbol}
707
-
708
- SIGNAL: {signal}
709
-
710
- CONFIDENCE: {confidence:.2f}%
711
-
712
- ENTRY: {levels['entry']}
713
- TP1: {levels['tp1']}
714
- TP2: {levels['tp2']}
715
- TP3: {levels['tp3']}
716
- SL: {levels['sl']}
717
- """
718
- )
719
-
720
  return {
721
  "Pair": symbol,
722
  "Signal": signal,
@@ -761,7 +699,7 @@ def realtime_scan():
761
 
762
  try:
763
 
764
- time.sleep(0.3)
765
 
766
  result = run_predict(symbol)
767
 
 
2
  import time
3
  import logging
4
  import traceback
 
5
 
6
  import gradio as gr
7
  import pandas as pd
8
  import numpy as np
 
9
  import requests
10
+ import joblib
 
11
 
12
  from sklearn.preprocessing import MinMaxScaler
13
  from sklearn.model_selection import TimeSeriesSplit
 
28
  "BNBUSDT",
29
  "XRPUSDT",
30
  "DOGEUSDT",
 
 
31
  ]
32
 
33
  WINDOW = 20
34
 
35
  MODEL_DIR = "models"
36
  DATA_DIR = "data"
 
37
 
38
  os.makedirs(MODEL_DIR, exist_ok=True)
39
  os.makedirs(DATA_DIR, exist_ok=True)
 
 
 
 
40
 
41
  CACHE_SECONDS = 60
42
 
43
  LAST_DOWNLOAD = {}
 
44
  LAST_RETRAIN = 0
45
 
46
 
 
53
  logger = logging.getLogger("crypto_ai")
54
 
55
 
 
 
 
 
 
 
 
56
  # ============================================================
57
  # PATHS
58
  # ============================================================
 
81
  )
82
 
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  # ============================================================
85
  # DOWNLOAD BINANCE DATA
86
  # ============================================================
 
109
  parse_dates=True
110
  )
111
 
112
+ return df
113
 
114
  # ============================================
115
+ # BINANCE PUBLIC API
116
  # ============================================
117
 
118
+ url = (
119
+ "https://api.binance.com/api/v3/klines"
120
+ )
121
+
122
+ params = {
123
+ "symbol": symbol,
124
+ "interval": "1h",
125
+ "limit": 1000
126
+ }
127
+
128
+ response = requests.get(
129
+ url,
130
+ params=params,
131
+ timeout=20
132
  )
133
 
134
+ data = response.json()
135
+
136
  rows = []
137
 
138
+ for k in data:
139
 
140
  rows.append({
141
  "time": pd.to_datetime(
 
157
 
158
  LAST_DOWNLOAD[symbol] = now
159
 
160
+ return df
161
 
162
  except Exception as e:
163
 
164
+ logger.warning(e)
 
 
165
 
166
  # ============================================
167
  # FALLBACK CACHE
 
181
  parse_dates=True
182
  )
183
 
184
+ return df
185
 
186
  except Exception as e:
187
 
188
  logger.warning(e)
189
 
190
+ return None
191
 
192
 
193
  # ============================================================
 
196
 
197
  def fetch_and_prepare(symbol):
198
 
199
+ df = safe_download(symbol)
200
 
201
  if df is None:
202
 
 
499
 
500
  run_train(symbol)
501
 
502
+ time.sleep(1)
503
 
504
  except Exception as e:
505
 
 
655
  signal
656
  )
657
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
658
  return {
659
  "Pair": symbol,
660
  "Signal": signal,
 
699
 
700
  try:
701
 
702
+ time.sleep(0.5)
703
 
704
  result = run_predict(symbol)
705