trading-quant/crossover.py
2023-06-07 13:37:38 +08:00

49 lines
1.5 KiB
Python

import talib
import numpy as np
import bn
# 检查是否出现多头排列信号
def check_bullish_crossover(data):
# 提取收盘价
close_prices = np.array([float(entry[4]) for entry in data])
# 计算移动平均线
ema7 = talib.EMA(close_prices, timeperiod=7)
ema30 = talib.EMA(close_prices, timeperiod=30)
ema100 = talib.EMA(close_prices, timeperiod=100)
ema200 = talib.EMA(close_prices, timeperiod=200)
# 判断是否出现多头排列信号
if ema7[-1] > ema30[-1] > ema100[-1] > ema200[-1] and ema7[-2] <= ema30[-2] <= ema100[-2] <= ema200[-2]:
return True
else:
return False
# 检查是否出现空头排列信号
def check_bearish_crossover(data):
# 提取收盘价
close_prices = np.array([float(entry[4]) for entry in data])
# 计算移动平均线
ema7 = talib.EMA(close_prices, timeperiod=7)
ema30 = talib.EMA(close_prices, timeperiod=30)
ema100 = talib.EMA(close_prices, timeperiod=100)
ema200 = talib.EMA(close_prices, timeperiod=200)
# 判断是否出现空头排列信号
if ema7[-1] < ema30[-1] < ema100[-1] < ema200[-1] and ema7[-2] >= ema30[-2] >= ema100[-2] >= ema200[-2]:
return True
else:
return False
def strategy_run(symbol, interval):
# 获取kline数据
data = bn.klines(symbol, interval)
if check_bullish_crossover(data):
print('多头排列信号出现!')
if check_bearish_crossover(data):
print("空头排列信号出现!")