同花顺Supermind量化交易 运用SVM算法“打板”-- SVM算法应用

课程简介:介绍股票涨跌停板机制,对股票涨停进行分类,并研究股票涨停后的收益情况,最终采用SVM算法进行“打板”研究。

dt = dataclosedf
dt = dt.sort_values(by='date')

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np


plt.style.use('seaborn')
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 1, 0.618]) #插入面板

x1_list=list(dt['1日收盘价'])
y=np.array(x1_list)
x=np.array(range(0,len(x1_list)))
axes.scatter(x,y,c='tomato')
axes.set_xlabel('time',fontsize=15)
axes.set_ylabel('down_up',fontsize=15)
axes.set_title(' one day distribution',fontsize=18)
# #设置X轴
axes.set_xticks([0,100,200,300,400,500])
axes.set_xticklabels([list(dt.index)[0],list(dt.index)[100],list(dt.index)[200],list(dt.index)[300],list(dt.index)[400],list(dt.index)[500]],fontsize=15)

plt.style.use('seaborn')
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 1, 0.618]) #插入面板

x1_list=list(dt['2日收盘价'])
y=np.array(x1_list)
x=np.array(range(0,len(x1_list)))
axes.scatter(x,y,c='tomato')
axes.set_xlabel('time',fontsize=15)
axes.set_ylabel('down_up',fontsize=15)
axes.set_title(' two day distribution',fontsize=18)
# #设置X轴
axes.set_xticks([0,100,200,300,400,500])
axes.set_xticklabels([list(dt.index)[0],list(dt.index)[100],list(dt.index)[200],list(dt.index)[300],list(dt.index)[400],list(dt.index)[500]],fontsize=15)

plt.style.use('seaborn')
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 1, 0.618]) #插入面板

x1_list=list(dt['3日收盘价'])
y=np.array(x1_list)
x=np.array(range(0,len(x1_list)))
axes.scatter(x,y,c='tomato')
axes.set_xlabel('time',fontsize=15)
axes.set_ylabel('down_up',fontsize=15)
axes.set_title(' three day distribution',fontsize=18)
# #设置X轴
axes.set_xticks([0,100,200,300,400,500])
axes.set_xticklabels([list(dt.index)[0],list(dt.index)[100],list(dt.index)[200],list(dt.index)[300],list(dt.index)[400],list(dt.index)[500]],fontsize=15)

Out[13]:

[<matplotlib.text.Text at 0x7f1b30cd7630>,
 <matplotlib.text.Text at 0x7f1b313e20b8>,
 <matplotlib.text.Text at 0x7f1b30b9b630>,
 <matplotlib.text.Text at 0x7f1b313b9cc0>,
 <matplotlib.text.Text at 0x7f1b31aee0f0>,
 <matplotlib.text.Text at 0x7f1b30c90b00>]

In [14]:

labeldt = dataclosedf
labeldt['1日收盘价'] = labeldt['1日收盘价'].apply(lambda x:1 if x>0 else -1)
labeldt['2日收盘价'] = labeldt['2日收盘价'].apply(lambda x:1 if x>0 else -1)
labeldt['3日收盘价'] = labeldt['3日收盘价'].apply(lambda x:1 if x>0 else -1)
labeldt = labeldt.sort_values(by='date')
labeldt

Out[14]:

stock date 1日收盘价 2日收盘价 3日收盘价
2014-01-03 600010.SH 2014-01-03 -1 -1 -1
2014-01-16 000767.SZ 2014-01-16 -1 -1 -1
2014-02-12 000971.SZ 2014-02-12 -1 -1 -1
2014-02-21 000554.SZ 2014-02-21 -1 -1 -1
2014-02-28 600680.SH 2014-02-28 1 1 1
2014-03-10 300116.SZ 2014-03-10 -1 -1 -1
2014-03-13 000923.SZ 2014-03-13 -1 1 1
2014-03-27 000687.SZ 2014-03-27 -1 -1 -1
2014-04-03 000918.SZ 2014-04-03 -1 -1 -1
2014-04-10 300278.SZ 2014-04-10 1 1 1
2014-04-30 601001.SH 2014-04-30 1 -1 -1
2014-05-21 002660.SZ 2014-05-21 1 1 1
2014-06-04 600601.SH 2014-06-04 -1 -1 -1
2014-06-05 600074.SH 2014-06-05 -1 -1 -1
2014-06-06 002535.SZ 2014-06-06 1 1 1
2014-06-16 300198.SZ 2014-06-16 -1 -1 -1
2014-06-30 002093.SZ 2014-06-30 -1 -1 -1
2014-07-02 300288.SZ 2014-07-02 1 1 1
2014-07-04 002070.SZ 2014-07-04 -1 -1 -1
2014-07-07 600568.SH 2014-07-07 -1 1 1
2014-07-08 600435.SH 2014-07-08 1 1 1
2014-07-11 002629.SZ 2014-07-11 1 -1 -1
2014-07-16 000868.SZ 2014-07-16 -1 -1 -1
2014-07-25 600319.SH 2014-07-25 -1 1 1
2014-07-28 600157.SH 2014-07-28 1 1 1
2014-08-07 600556.SH 2014-08-07 -1 -1 -1
2014-08-11 600222.SH 2014-08-11 -1 -1 -1
2014-08-14 300208.SZ 2014-08-14 -1 1 1
2014-08-18 002125.SZ 2014-08-18 1 -1 1
2014-08-21 000922.SZ 2014-08-21 1 1 1
... ... ... ... ... ...
2018-12-19 002845.SZ 2018-12-19 1 -1 1
2018-12-25 000531.SZ 2018-12-25 -1 -1 -1
2018-12-26 300687.SZ 2018-12-26 -1 -1 -1
2018-12-27 300407.SZ 2018-12-27 -1 -1 -1
2018-12-28 601619.SH 2018-12-28 -1 -1 -1
2019-01-04 300125.SZ 2019-01-04 1 1 1
2019-01-07 300588.SZ 2019-01-07 -1 -1 -1
2019-01-08 600677.SH 2019-01-08 -1 -1 -1
2019-01-09 600452.SH 2019-01-09 1 1 1
2019-01-10 300076.SZ 2019-01-10 -1 -1 -1
2019-01-11 002941.SZ 2019-01-11 -1 -1 -1
2019-01-14 603220.SH 2019-01-14 -1 -1 1
2019-01-16 600446.SH 2019-01-16 -1 -1 -1
2019-01-18 600470.SH 2019-01-18 1 1 1
2019-01-21 300693.SZ 2019-01-21 -1 1 1
2019-01-22 300503.SZ 2019-01-22 -1 -1 -1
2019-01-24 002170.SZ 2019-01-24 -1 -1 -1
2019-01-25 600721.SH 2019-01-25 1 -1 -1
2019-01-28 000637.SZ 2019-01-28 -1 -1 -1
2019-01-31 300250.SZ 2019-01-31 1 1 1
2019-02-01 002011.SZ 2019-02-01 -1 -1 -1
2019-02-11 600532.SH 2019-02-11 -1 -1 -1
2019-02-12 600318.SH 2019-02-12 1 -1 -1
2019-02-13 300097.SZ 2019-02-13 1 1 1
2019-02-14 300256.SZ 2019-02-14 -1 1 1
2019-02-18 002099.SZ 2019-02-18 1 1 -1
2019-02-19 300468.SZ 2019-02-19 -1 -1 -1
2019-02-20 600393.SH 2019-02-20 -1 -1 1
2019-02-21 002565.SZ 2019-02-21 1 1 -1
2019-02-22 300063.SZ 2019-02-22 1 -1 -1

503 rows × 5 columns

In [15]:

tradeday = list(get_trade_days(startdate, '20200202', count=None).strftime('%Y-%m-%d'))

timelist = []
trlist= []
lplist =[]
q_trlist = []
for d in tradeday:
    time = 0
    tr = 0
    lp = 0
    q_tr = 0
    if d in list(labeldt['date']):
        stock = labeldt['stock'][d]
        day = tradeday[tradeday.index(d)+1]
        stockdata = get_price(stock,None,day,'1m',['close','high','low','open','turnover_rate'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值