根据MACD指标自动盯盘软件的使用开发
[概要] 当5分钟MACD指标出现金叉/死叉时 发送短信提醒
1 需求描述
最近有个老哥,是做期货高频交易的,他由于不方便长时间盯盘,并且符合他策略的指标形态出现并不频繁.
找了一圈,市面上也没有现成的软件.于是找到我让我给他开发一个工具.
开始他的需求并不复杂, 就是根据品种的5分钟MACD指标,去判定入场时机.
当5分钟MACD指标出现金叉/死叉时给他发送短信提醒,后面他再自己判断是否入场建仓.
2 开发步骤
2.1 数据源
数据源采用的是同花顺的IFIND数据接口,采用Python开发.
# 高频序列:获取分钟数据
def high_frequency():
thsUrl = 'https://quantapi.51ifind.com/api/v1/high_frequency'
thsPara = {"codes":
"000001.SZ",
"indicators":
"open,high,low,close,volume,amount,changeRatio",
"starttime":
"2022-07-05 09:15:00",
"endtime":
"2022-07-05 15:15:00"}
thsResponse = requests.post(url=thsUrl, json=thsPara, headers=thsHeaders)
print(thsResponse.content)
2.2主要代码
def compute_macd_5(codes):
# 当前时间 前推 一个月内的 5分钟 K 数据
curr_time = dt.now()
today = dt.now().weekday()
if today == 0 :
#周一
hours = 72
else:
hours = 20
s_time = curr_time - datetime.timedelta(hours=hours)
s_time_str = dt.strftime(s_time,time_sp)
rs = high_frequency(codes=codes,starttime=s_time_str,endtime=dt.strftime((curr_time),time_sp))
if len(rs) ==0:
return False
rs_table = rs['table']
dif, dea, hist = ta.MACD(np.array(rs_table['close']), fastperiod=12, slowperiod=26, signalperiod=9)
df3 = pd.DataFrame({'dif':dif[33:],'dea':dea[33:],'hist':hist[33:]},
index=rs['time'][33:],columns=['dif','dea','hist'])
# 寻找MACD金叉和死叉
datenumber = int(df3.shape[0])
jin_cha = None
si_cha = None
for i in range(datenumber-1):
if ((df3.iloc[i,0]<=df3.iloc[i,1]) & (df3.iloc[i+1,0]>=df3.iloc[i+1,1])):
print("MACD金叉的日期:"+df3.index[i+1])
if ((df3.iloc[i,0]>=df3.iloc[i,1]) & (df3.iloc[i+1,0]<=df3.iloc[i+1,1])):
print("MACD死叉的日期:"+df3.index[i+1])
2.3 运行结果
MACD死叉的日期:2022-08-04 02:30
MACD金叉的日期:2022-08-04 09:35
MACD死叉的日期:2022-08-04 11:10
MACD金叉的日期:2022-08-04 14:50
总结
最后得出5分钟MACD 发生金叉/死叉的具体时间,我们的主要功能也就写完了. 然后再调用发送短信的接口.就可以正常使用了. 经过测试通知短信的延时最长不超过1分钟,对于这个频率的交易也够用了.