From 4efcbb95e9136927f492870d5c9ca2fcd1a2e366 Mon Sep 17 00:00:00 2001 From: aazhou Date: Sun, 2 Jul 2023 22:50:31 +0800 Subject: [PATCH] add builder --- signals/ema_arrangement.py | 8 +++++--- signals/macd.py | 6 ++++-- signals/signal_builder.py | 5 +++++ signals/volume_growing.py | 37 ------------------------------------- strategy_test.py | 1 - 5 files changed, 14 insertions(+), 43 deletions(-) create mode 100644 signals/signal_builder.py delete mode 100644 signals/volume_growing.py diff --git a/signals/ema_arrangement.py b/signals/ema_arrangement.py index baece76..5a52f2e 100644 --- a/signals/ema_arrangement.py +++ b/signals/ema_arrangement.py @@ -5,7 +5,7 @@ import tg import datetime import setting import db - +import signal_builder flags = {} def check_ema_arrange(data): @@ -37,12 +37,14 @@ def run(symbol, interval): data = {} if bullish and (flag_name not in flags or flags[flag_name] == False): flags[flag_name] = True - text = f'📶信号预警📶\r\n\r\n品种:【{symbol}】\r\n当前价格:{ticker_price}\r\n周期:{interval}\r\n信号类型:EMA排列\r\n信号:多头\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' + text = signal_builder.signal_text(symbol, interval, "EMA排列","【多】") + data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 1} if bearish and (flag_name not in flags or flags[flag_name] == True): flags[flag_name] = False - text = f'📶信号预警📶\r\n\r\n品种:【{symbol}】\r\n当前价格:{ticker_price}\r\n周期:{interval}\r\n信号类型:EMA排列\r\n信号:空头\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' + text = signal_builder.signal_text(symbol, interval, "EMA排列","【空】") + data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 3} if text != "": signals = db.get_list('signals', f'symbol="{symbol}" and `interval`="{interval}"') diff --git a/signals/macd.py b/signals/macd.py index 46b17f1..1ac0d47 100644 --- a/signals/macd.py +++ b/signals/macd.py @@ -5,6 +5,7 @@ import tg import datetime import setting import db +import signal_builder def check_macd(data): close_prices = np.array([float(entry[4]) for entry in data]) @@ -57,11 +58,12 @@ def run(symbol, interval): text = "" data = {} if signal == 1 or signal == 2: - text = f'📶信号预警📶\r\n\r\n品种:【${symbol}】\r\n周期:{interval}\r\n信号:【多头】MACD\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' + text = signal_builder.signal_text(symbol, interval, "MACD","【多】") + data = {"type": 2, "symbol": symbol, "interval": interval, "signal": signal} if signal == 3 or signal == 4: - text = f'📶信号预警📶\r\n\r\n品种:【${symbol}】\r\n周期:{interval}\r\n信号:【空头】MACD\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' + text = signal_builder.signal_text(symbol, interval, "MACD","【空】") data = {"type": 2, "symbol": symbol, "interval": interval, "signal": signal} if text != "": signals = db.get_list('signals', f'symbol="{symbol}" and `interval`="{interval}"') diff --git a/signals/signal_builder.py b/signals/signal_builder.py new file mode 100644 index 0000000..cfed477 --- /dev/null +++ b/signals/signal_builder.py @@ -0,0 +1,5 @@ +import datetime + + +def signal_text(symbol, interval, signal_type ,signal): + return f'📶信号预警📶\r\n\r\n品种:【${symbol}】\r\n周期:{interval}\r\n信号类型:{signal_type}\r\n信号:{signal}\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' \ No newline at end of file diff --git a/signals/volume_growing.py b/signals/volume_growing.py deleted file mode 100644 index 8e5fa9f..0000000 --- a/signals/volume_growing.py +++ /dev/null @@ -1,37 +0,0 @@ -import talib -import numpy as np -import bn -import tg -import datetime -import setting -import db - -def check_volume_growing(data): - # 提取收盘价 - close_prices = np.array([float(entry[4]) for entry in data]) - - # 提取交易量 - volumes = np.array([float(entry[5]) for entry in data]) - - # 计算量能指标 - obv = talib.OBV(close_prices, volumes) - - return obv[-1] > obv[-2] - - -def run(symbol, interval): - # 获取kline数据 - data = bn.klines(symbol, interval) - - is_growing= check_volume_growing(data) - - if is_growing: - text = f'📶信号预警📶\r\n\r\n品种:【{symbol}】\r\n周期:{interval}\r\n信号名称:量能监控\r\n信号:量能上升\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}' - print(text) - tg.send_message(setting.chat_id, text) - else: - print(f'{symbol} - {interval} 量能上升: {is_growing}') - - - - diff --git a/strategy_test.py b/strategy_test.py index 409ad15..4a9abed 100644 --- a/strategy_test.py +++ b/strategy_test.py @@ -1,7 +1,6 @@ import monitors.large_transfer as lt import bn import signals.ema_arrangement as maa -import signals.volume_growing as vg import signals.macd as macd