量化交易策略开发示例并将测试结果导入通达信观察

任何交易策略都不能适用市场的全部时段或所有情况,量化交易策略更是如此!每一个量化交易策略都必须要明显的特征,才能准确的描述并用程序实现。

本文简单地介绍向上跳空交易策略的一般方法,通过该示例展示量化交易策略的开发步骤。

大跌后介入反弹的策略

大多数个股连续下跌多个交易日(如A股在今年一月初的情形),如果个股当天交易日相比前一个交易日向上跳开,即可买入。另外,给该策略附加一个条件,即在最近至少3个交易日的低价都未填补前面的向上跳空,这样就变为针对震荡行情的交易策略。

策略适用背景与激活条件

本策略观察的中小盘股票,流通市值大于10亿且小于100亿,价格大于3元小于100元,筛选出了2685只股票(行情截至日期20240222);最近10个交易日至少有7根阴线(不含当前交易日)。激活该策略转入监听的条件是2685只股票中有至少四分之三下跌,该策略激活后,开盘就扫描出现跳空的个股作为交易信号。

实施该策略的部分代码

def stockswithupgaps(daily_md,n):
    open_lst = daily_md.open_p.to_list()[n:]    
    close_lst = daily_md.close_p.tolist()[n:]    
    high_lst = daily_md.high_p.tolist()[n:]    
    low_lst = daily_md.low_p.tolist()[n:]    
    dt_lst = daily_md.dt_occured.tolist()[n:]    
    md_lst = list(zip(open_lst,close_lst,high_lst,low_lst,dt_lst))    

    tmp_high = high_lst[0:-1]
    tmp_low = low_lst[1:]
    tmp_dt = dt_lst[1:]    

    upgaps =  [[i,tmp_dt[i]] for i, x in enumerate(list(zip(tmp_low,tmp_high))) if round((x[0]-x[1])/x[1],2) > 0.01]

    return upgaps


stocks_withgaps = []
for i in range(0,len(history_mddaily[0])):
    tmp_results = stockswithupgaps(history_mddaily[0][i],-10)
    if len(tmp_results)>0:
        stocks_withgaps.append([i,history_mddaily[0][i].symbol[0],tmp_results])

for itm in stocks_withgaps:
    print(itm)        
print(len(stocks_withgaps))    

输出结果(部分):

[9, '600052', [[5, Timestamp('2024-02-19 00:00:00')]]]
[17, '600080', [[6, Timestamp('2024-02-20 00:00:00')]]]
[21, '600084', [[5, Timestamp('2024-02-19 00:00:00')]]]
[31, '600113', [[5, Timestamp('2024-02-19 00:00:00')]]]
[46, '600167', [[4, Timestamp('2024-02-08 00:00:00')]]]
[61, '600212', [[5, Timestamp('2024-02-19 00:00:00')]]]
[63, '600215', [[5, Timestamp('2024-02-19 00:00:00')]]]
...
[2575, '301339', [[5, Timestamp('2024-02-19 00:00:00')]]]
[2582, '301380', [[5, Timestamp('2024-02-19 00:00:00')]]]
[2584, '301396', [[5, Timestamp('2024-02-19 00:00:00')]]]
347

从结果看,该策略筛选出347只股票,其中335只上涨,12只下跌,涨幅超过5%的个股数量142只,12只下跌股票中,跌幅大于3%的2只,跌幅小于1%的9只,还有1只的跌幅为1.71%,总体看,策略在给定的行情环境和条件下,表现很好。

把这些股票的代码转换为通达信可导入的板块个股的文件格式 :stockswithupgaps.ebk,格式如下图:

量化交易策略开发示例并将测试结果导入通达信观察

转换代码如下:

with open('stockswithupgaps.ebk','w') as f:  
    for line in stocks_withgaps:        
        if line[1][0]=='6':
            x = '1'+str(line[1])+'\n'
        else:
            x = '0'+str(line[1])+'\n'             
        f.write(x)

把stockswithupgaps.ebk文件作为通达信的自定义板块文件导入通达信客户端程序,部分结果如下:

量化交易策略开发示例并将测试结果导入通达信观察

量化交易策略开发示例并将测试结果导入通达信观察

通达信内置的量化编程功能毕竟还是很有限的,尤其是灵活性差,难以实现自动化。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/73783
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 10 日
下一篇 2024 年 7 月 10 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注