这个半量化策略不一定对,但我愿意和你讨论

  • Post author:
  • Post category:其他


多少人渴望在股市里实现财富自由,多少人又在股市折了腰。来来往往,不变的是人性。如果股票的涨你就会开心,股票的跌你就会郁闷。那可能这个玩法不太适合这类人。

分享一个我一直使用的策略,不能算是量化交易,但是算是半量化。按照自己的策略编写代码,筛选掉不符合策略的股票,那可能会省事一点。当然这个策略得靠谱、正确,然后重复做。我也不知道是不是正确的,我也在探索,所以就分享我最新使用的这个策略,希望可以和大神们一起讨论。同时,非常感谢Tushare平台,一直免费给出已经清洗的数据接口,让我们可以以更低成本走近量化。

量能,是我一直认为股票中最重要的指标。因为量能最能反应大资金的进场和撤退。我们经常会研究一个股票的基本面,经营状况,各项指标。这些是需要会花费大时间的,我们在这方面的能力是远远不如专业机构者,正如你不要用你的爱好去挑战别人的饭碗。所以我对于这些是不重视的。

第二,我认为也是非常重要的,最有效的指标是大家都是参考的指标。例如均线,所以在关键地方收得住就是多方的态度,或者说是诱多的陷阱。当然这些都不好说。

第三,结合指数。这方面研究就大了,有时候可能一没踩好节奏就被套,所以我认为这一块还是非常依赖于经验的。

最后给出我的完整代码,我们可以一起讨论或者更多,并且我将附上最新的代码运行出来的代码池的股票编号(编号可以方便大量的复制粘贴,从而保存到软件的某一个组)。

import pandas as pd  
import numpy as np
import datetime
import tushare as ts  # 量化工具包

# 获取当前时间,为全自动化运行做准备。
now_time = datetime.datetime.now()    # 获取当前时间,具体到秒后面一位的单位。
n_time = now_time.strftime('%Y%m%d')  # 整理出本代码需要的时间。
print('当前时间为:',n_time[:4] + "年" + n_time[4:6] + "月" + n_time[6:] + "日")

ts.set_token('你的接口号码')
# call interface
pro = ts.pro_api() 

data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
data['pre'] = data['symbol'].apply(lambda x:x[:3]) # 提取代码前缀,方便去掉300和688

data.head()

data = data[data['pre'] != '688']
data = data[data['pre'] != '300']
data = data[data['pre'] != '301']

lis_code_com = data['ts_code'].tolist()

del_amount = []
target_com = []
for com in range(len(lis_code_com)):
    try:
        #++++++直接自动寻找当天交易日的个股++++++
        df = pro.daily(ts_code=lis_code_com[com], start_date='20210913', end_date=n_time)
        #++++++手动设定指定交易日的个股++++++
        #df = pro.daily(ts_code=lis_code_com[com], start_date='20210913', end_date='20220111')
        df = df.iloc[:10,:] # 取前十个最新交易日
        # condition1 成交量大于3亿
        active = np.mean(df.amount) > 400000
        # condition2 5日均值 > 10日均值 
        m5 = np.mean(df.close[:5]) # 5日均值
        m10 = np.mean(df.close) # 10日均值
        mea = m5 > m10
        # condition3 缩量标准
        suoLiang = max(df.vol) >= df.vol[0] * 2
        # condition4 放出最大量的不能是阴量
        df1 = df.loc[df['vol'] == max(df.vol)]
        notYing = df1['close'] - df1['open'] > 0 
        notYing = notYing.bool()
        # condition5 股价大于150的不要
        price = df['open'][0] < 150
        print(com)
        if active & suoLiang & mea & notYing & price:
            target_com.append(lis_code_com[com])
            print(target_com)
            # del_amount.append(lis_code_com[com])
            # del lis_code_com[com]
    except:
        continue

target_com



版权声明:本文为zou_gr原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。