From ee7d8f6a58e847179ebc072bcfb253be553f8b5c Mon Sep 17 00:00:00 2001 From: aaron <> Date: Fri, 20 Sep 2024 23:50:42 +0800 Subject: [PATCH] 1 --- datasource/crypto.py | 27 +++++++++++++++++++++------ monitors/macd_boll.py | 4 ++-- monitors/vegas_cross.py | 5 ++--- test.py | 8 ++++++++ 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/datasource/crypto.py b/datasource/crypto.py index 12cf4ba..d75eab5 100644 --- a/datasource/crypto.py +++ b/datasource/crypto.py @@ -1,12 +1,15 @@ import requests from binance.spot import Spot import pandas as pd +from binance.cm_futures import CMFutures + import urllib3 api_key = "HCpeel8g6fsTK2630b7BvGBcS09Z3qfXkLVcAY2JkpaiMm1J6DWRvoQZBQlElDJg" api_secret= "TySs6onlHOTrGzV8fMdDxLKTWWYnQ4rCHVAmjrcHby17acKflmo7xVTWVsbqtxe7" client = Spot(api_key, api_secret) +future_client = CMFutures(api_key, api_secret) # 获取市值前top的币种 def _get_top_coins_by_market_cap(top): @@ -58,17 +61,29 @@ def get_symbols(): # 创建DataFrame columns = ['symbol', 'status', 'baseAsset', 'quoteAsset'] df = pd.DataFrame(data, columns=columns) + df = df[(df['status'] == 'TRADING') & (df['quoteAsset'] == 'USDT')] - # 过滤出在架交易对 - df_in_trade = df[df['status'] == 'TRADING'] - df_in_USDT = df_in_trade[df_in_trade['quoteAsset'] == 'USDT'] + return df['symbol'] - return df_in_USDT['symbol'] +def get_future_symbols(): + data = future_client.exchange_info()["symbols"] + + # 创建DataFrame + columns = ['symbol', 'contractStatus','contractType', 'baseAsset', 'quoteAsset'] + df = pd.DataFrame(data, columns=columns) + # 过滤出交易对 + df = df[(df['contractStatus'] == 'TRADING') & (df['quoteAsset'] == 'USD') & (df['contractType'] == 'PERPETUAL')] + + return df['symbol'] ## 根据交易对和周期获取数据集 -def get_klines(symbol,interval , limit=1000): +def get_klines(symbol,interval, future = False,limit=1000): # 获取 k 线数据 - data = client.klines(symbol, interval,limit=limit) + data = {} + if future == True: + data = future_client.klines(symbol, interval, limit=limit) + else: + data = client.klines(symbol, interval,limit=limit) # 将数据转换为DataFrame columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume', diff --git a/monitors/macd_boll.py b/monitors/macd_boll.py index f7e9358..22f6bd1 100644 --- a/monitors/macd_boll.py +++ b/monitors/macd_boll.py @@ -68,8 +68,8 @@ def stratergy_run(symbol, interval, df, debug): def run_crypto(interval, debug=False): print('Vegas策略运行.') - for s in setting.symbols: - df = crypto.get_klines(s, interval) + for s in crypto.get_future_symbols(): + df = crypto.get_klines(s, interval, True) stratergy_run(s,interval, df, debug) time.sleep(1) \ No newline at end of file diff --git a/monitors/vegas_cross.py b/monitors/vegas_cross.py index 8e87795..5e0b499 100644 --- a/monitors/vegas_cross.py +++ b/monitors/vegas_cross.py @@ -58,12 +58,11 @@ def stratergy_run(symbol, interval, df, debug): print(message) - def run_crypto(interval, debug=False): print('Vegas策略运行.') - for s in setting.symbols: - df = crypto.get_klines(s, interval) + for s in crypto.get_future_symbols(): + df = crypto.get_klines(s, interval,True) stratergy_run(s,interval, df, debug) time.sleep(1) \ No newline at end of file diff --git a/test.py b/test.py index 62b73d8..7814541 100644 --- a/test.py +++ b/test.py @@ -1,4 +1,5 @@ import requests +import datasource.crypto from monitors import move from datasource import crypto import talib @@ -7,6 +8,13 @@ from binance.cm_futures import CMFutures from monitors import vegas_cross from datasource import crypto from monitors import macd_boll +import datasource +from binance.cm_futures import CMFutures + +# client = CMFutures() +# print(client.exchange_info()['symbols']) + +# print(datasource.crypto.get_future_symbols()) macd_boll.run_crypto('15m', debug=True)