add price.
This commit is contained in:
parent
c46aafe88e
commit
69387a5d40
4
bn.py
4
bn.py
@ -8,6 +8,10 @@ def klines(symbol, interval, limit=1000):
|
|||||||
lines = cm.klines(symbol,interval, limit=limit)
|
lines = cm.klines(symbol,interval, limit=limit)
|
||||||
return lines
|
return lines
|
||||||
|
|
||||||
|
def ticker_price(symbol):
|
||||||
|
prices = cm.ticker_price(symbol)
|
||||||
|
return prices[0]['price'] if len(prices)>0 else 0
|
||||||
|
|
||||||
# Get Symbols
|
# Get Symbols
|
||||||
def symbols():
|
def symbols():
|
||||||
info = cm.exchange_info()
|
info = cm.exchange_info()
|
||||||
|
|||||||
2
main.py
2
main.py
@ -2,7 +2,7 @@ import schedule
|
|||||||
import bn
|
import bn
|
||||||
import setting
|
import setting
|
||||||
import time
|
import time
|
||||||
import signals.ma_arrangement as maa
|
import signals.ema_arrangement as maa
|
||||||
import monitors.large_transfer as lt
|
import monitors.large_transfer as lt
|
||||||
|
|
||||||
# symbols = ['BTCUSDT','ETHUSDT','FILUSDT','MASKUSDT','DOGEUSDT','CFXUSDT','LTCUSDT']
|
# symbols = ['BTCUSDT','ETHUSDT','FILUSDT','MASKUSDT','DOGEUSDT','CFXUSDT','LTCUSDT']
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import db
|
|||||||
|
|
||||||
flags = {}
|
flags = {}
|
||||||
|
|
||||||
def check_ma_arrange(data):
|
def check_ema_arrange(data):
|
||||||
# 提取收盘价
|
# 提取收盘价
|
||||||
close_prices = np.array([float(entry[4]) for entry in data])
|
close_prices = np.array([float(entry[4]) for entry in data])
|
||||||
|
|
||||||
@ -28,19 +28,21 @@ def run(symbol, interval):
|
|||||||
# 获取kline数据
|
# 获取kline数据
|
||||||
data = bn.klines(symbol, interval)
|
data = bn.klines(symbol, interval)
|
||||||
|
|
||||||
bullish, bearish = check_ma_arrange(data)
|
ticker_price = bn.ticker_price(symbol)
|
||||||
|
|
||||||
|
bullish, bearish = check_ema_arrange(data)
|
||||||
|
|
||||||
flag_name = symbol + '_' + interval
|
flag_name = symbol + '_' + interval
|
||||||
text = ""
|
text = ""
|
||||||
data = {}
|
data = {}
|
||||||
if bullish and (flag_name not in flags or flags[flag_name] == False):
|
if bullish and (flag_name not in flags or flags[flag_name] == False):
|
||||||
flags[flag_name] = True
|
flags[flag_name] = True
|
||||||
text = f'📶信号预警📶\r\n\r\n品种:【${symbol}】\r\n周期:{interval}\r\n信号:【多头】排列\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}'
|
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")}'
|
||||||
data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 1}
|
data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 1}
|
||||||
|
|
||||||
if bearish and (flag_name not in flags or flags[flag_name] == True):
|
if bearish and (flag_name not in flags or flags[flag_name] == True):
|
||||||
flags[flag_name] = False
|
flags[flag_name] = False
|
||||||
text = f'📶信号预警📶\r\n\r\n品种:【${symbol}】\r\n周期:{interval}\r\n信号:【空头】排列\r\n\r\n{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}'
|
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")}'
|
||||||
data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 3}
|
data = {"type" : 1, "symbol": symbol, "interval" : interval, "signal": 3}
|
||||||
if text != "":
|
if text != "":
|
||||||
signals = db.get_list('signals', f'symbol="{symbol}" and `interval`="{interval}"')
|
signals = db.get_list('signals', f'symbol="{symbol}" and `interval`="{interval}"')
|
||||||
37
signals/volume_growing.py
Normal file
37
signals/volume_growing.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
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}')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,8 +1,14 @@
|
|||||||
import monitors.large_transfer as lt
|
import monitors.large_transfer as lt
|
||||||
import bn
|
import bn
|
||||||
import signals.ma_arrangement as maa
|
import signals.ema_arrangement as maa
|
||||||
|
import signals.volume_growing as vg
|
||||||
|
|
||||||
# symbols = bn.symbols()
|
# symbols = bn.symbols()
|
||||||
|
|
||||||
# for s in symbols:
|
# for s in symbols:
|
||||||
maa.run('LINKUSDT', '1h')
|
# maa.run('LINKUSDT', '1h')
|
||||||
|
|
||||||
|
symbols = bn.symbols()
|
||||||
|
|
||||||
|
for s in symbols:
|
||||||
|
vg.run(s, '1h')
|
||||||
8
test.py
8
test.py
@ -4,9 +4,11 @@ import mplfinance as mpf
|
|||||||
import datetime as dt
|
import datetime as dt
|
||||||
import monitors.large_transfer as lt
|
import monitors.large_transfer as lt
|
||||||
from binance.spot import Spot
|
from binance.spot import Spot
|
||||||
import signals.ma_arrangement as maa
|
import signals.ema_arrangement as maa
|
||||||
from binance.cm_futures import CMFutures
|
from binance.cm_futures import CMFutures
|
||||||
|
|
||||||
# maa.run('BTCUSD_PERP', '1h')
|
maa.run('MANAUSD_PERP', '1h')
|
||||||
|
|
||||||
print(len(bn.symbols()))
|
# print(len(bn.symbols()))
|
||||||
|
|
||||||
|
# print(bn.ticker_price('BTCUSD_PERP'))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user