@djoffrey can you help me out? I think discord would be better. But here it is:
def fetch_usdt_pairs():
exclude_symbols = ["SRMUSDT", "HNTUSDT", "CVCUSDT", "BTSUSDT", "BTCSTUSDT", "SCUSDT", "TLMUSDT", "RAYUSDT", "FTTUSDT", "1000SHIBUSDT", "BTCDOMUSDT", "1000LUNCUSDT", "BLUEBIRDUSDT", "1000XECUSDT", "FOOTBALLUSDT", "ETHUSDT_230630", "LUNA2USDT", "DEFIUSDT"]
futures_pairs = client.futures_exchange_info()["symbols"]
return [pair["symbol"] for pair in futures_pairs if pair["quoteAsset"] == "USDT" and pair["symbol"] not in exclude_symbols]
def fetch_historical_data(symbol, interval, limit=500, start_time=None, end_time=None):
try:
klines = client.get_klines(symbol=symbol, interval=interval, limit=limit, startTime=start_time, endTime=end_time)
data = pd.DataFrame(klines, columns=["open_time", "open", "high", "low", "close", "volume", "close_time", "quote_asset_volume", "number_of_trades", "taker_buy_base_asset_volume", "taker_buy_quote_asset_volume", "ignore"])
data = data.astype({"open": "float64", "high": "float64", "low": "float64", "close": "float64"})
return data
except BinanceAPIException as e:
print(f"Error fetching historical data for {symbol}: {e}")
return pd.DataFrame()
def analyze_patterns(interval):
usdt_pairs = fetch_usdt_pairs()
bullish_patterns = []
bearish_patterns = []
for symbol in usdt_pairs:
data = fetch_historical_data(symbol, interval)
if not data.empty:
if data.shape[0] < 500:
print(f"Symbol: {symbol}")
print("Insufficient data\n")
harmonic_detector = HarmonicDetector()
patterns, _ = harmonic_detector.search_patterns(data) # Extract only the found patterns list
if len(patterns) > 0:
latest_pattern = patterns[-1]
if "bullish" in latest_pattern[2]:
bullish_patterns.append((symbol, latest_pattern))
elif "bearish" in latest_pattern[2]:
bearish_patterns.append((symbol, latest_pattern))
else:
print(f"Symbol: {symbol}")
print("No data available\n")
time.sleep(1) # Add sleep to avoid hitting rate limits
print(f"\nInterval: {interval}")
# Print bullish patterns
print(f"Bullish patterns:")
for symbol, pattern in bullish_patterns:
print(f"Symbol: {symbol}")
print(f"Pattern: {pattern[2]}")
print("Prices:", [point[1] for point in pattern[0]])
print("\n")
print("\n")
# Print bearish patterns
print(f"Bearish patterns:")
for symbol, pattern in bearish_patterns:
print(f"Symbol: {symbol}")
print(f"Pattern: {pattern[2]}")
print("Prices:", [point[1] for point in pattern[0]])
print("\n")
if name == "main":
intervals = [
Client.KLINE_INTERVAL_2HOUR,
Client.KLINE_INTERVAL_4HOUR,
Client.KLINE_INTERVAL_12HOUR,
Client.KLINE_INTERVAL_1DAY,
Client.KLINE_INTERVAL_3DAY,
]
for interval in intervals:
analyze_patterns(interval)
I get the price and the timeframe, but every time I try to add timestamp I get lots of errors. Timestamp for each point of the pattern is very important, otherwise I'll get lost. Cant validate etc. I have all the functions built in this example here inside my code: https://github.com/djoffrey/HarmonicPatterns/blob/main/src/harmonic_patterns.py
Please help.