做网站送推广,5G网站建设要多少个,湖南建设网站,国外js网站机器学习篇章#xff0c;本章不过时脚本小子#xff0c;机器学习最核心的是机器#xff0c;是模型。
学习#xff0c;无非就是找些有的没的因子扔进去#xff0c;但说实话#xff0c;机器学习#xff0c;太过容易过拟合#xff0c;容易无效化。回测好看的一笔#xf…机器学习篇章本章不过时脚本小子机器学习最核心的是机器是模型。
学习无非就是找些有的没的因子扔进去但说实话机器学习太过容易过拟合容易无效化。回测好看的一笔实盘垃圾的不行。
获取训练数据 #获取训练数据#用20160101到20170101一年间的数据生成训练集df ContextInfo.get_market_data([open,high,low,close,volume],stock_code[ContextInfo.stock],start_time20160101,end_time20200101,dividend_typefront)df df.sort_index()days df.index.valuesdays_close df[close].values 获取训练因子 #计算训练因子for i in range(14, len(days) - 5):start_day days[i - 14]end_day days[i]data ContextInfo.get_market_data([open,high,low,close,volume],stock_code[ContextInfo.stock],end_timeend_day,count15,skip_pausedFalse,dividend_typefront)data data.sort_index()open data[open].valuesclose data[close].valuesmax data[high].valuesmin data[low].valuesvolume data[volume].valuesclose_mean close[-1] / np.mean(close)volume_mean volume[-1] / np.mean(volume)max_mean max[-1] / np.mean(max)min_mean min[-1] / np.mean(min)vol volume[-1]return_now close[-1] / close[0]std np.std(np.array(close), axis 0)#features用于存放因子features [close_mean, volume_mean, max_mean, min_mean, vol, return_now, std] #计算出的6个因子作为特征x_all.append(features)for i in range(len(days_close) - 19):if days_close[i19] days_close[i14]:label 1else:label 0y_all.append(label) 生成训练模型 x_train x_all[:-1]y_train y_all[:-1]#生成训练好的模型ContextInfo.clf svm.SVC(C1.0, kernelrbf, degree3, gammaauto, coef00.0, shrinkingTrue, probabilityFalse,tol0.001, cache_size200, verboseFalse, max_iter-1, decision_function_shapeovr, random_stateNone)try:ContextInfo.clf.fit(x_train, y_train)except:e traceback.format_exc()运用模型判断涨跌信号 #运用模型判断涨跌信号try:prediction ContextInfo.clf.predict(features)[0] # 机器学习判断涨跌if prediction 1:ContextInfo.holding int(ContextInfo.money*0.95/(open_today))/100order_shares(ContextInfo.stock,ContextInfo.holding*100,fix,open_today,ContextInfo,ContextInfo.accountid)ContextInfo.buyprice open_todaybuy_condition Trueprint(today)print(open long position to 0.95)except :print((predict error occur,bar:, d)) 策略代码
#coding:gbk
#!/usr/bin/python回测模型示例非实盘交易策略#单股机器学习模型在主图下直接运行即可
#模型中以过去15个交易日数据生成特征变量以预测5个交易日后的涨跌
#特征变量我们选取了平均收盘价平均成交量平均最高价平均最低价总收益收盘价的标准差
#训练结束后回测过程中在每个星期一预测本周五的涨跌以此为据开仓import pandas as pd
import numpy as np
import time
from datetime import *
from sklearn import svm
import traceback
def init(ContextInfo):ContextInfo.stock ContextInfo.stockcode . ContextInfo.marketContextInfo.set_universe([ContextInfo.stock])ContextInfo.holding 0ContextInfo.days 0ContextInfo.money ContextInfo.capitalContextInfo.accountid testSdef handlebar(ContextInfo):buy_condition Falsesell_condition Falsed ContextInfo.barposif ContextInfo.days 0:#用20160101到20170101一年间的数据生成训练集df ContextInfo.get_market_data([open,high,low,close,volume],stock_code[ContextInfo.stock],start_time20160101,end_time20170101,dividend_typefront)df df.sort_index()days df.index.valuesdays_close df[close].valuesprint(start training SVM)x_all []y_all []for i in range(14, len(days) - 5):start_day days[i - 14]end_day days[i]data ContextInfo.get_market_data([open,high,low,close,volume],stock_code[ContextInfo.stock],end_timeend_day,count15,skip_pausedFalse,dividend_typefront)data data.sort_index()open data[open].valuesclose data[close].valuesmax data[high].valuesmin data[low].valuesvolume data[volume].valuesclose_mean close[-1] / np.mean(close)volume_mean volume[-1] / np.mean(volume)max_mean max[-1] / np.mean(max)min_mean min[-1] / np.mean(min)vol volume[-1]return_now close[-1] / close[0]std np.std(np.array(close), axis 0)#features用于存放因子features [close_mean, volume_mean, max_mean, min_mean, vol, return_now, std] #计算出的6个因子作为特征x_all.append(features)for i in range(len(days_close) - 19):if days_close[i19] days_close[i14]:label 1else:label 0y_all.append(label)x_train x_all[:-1]y_train y_all[:-1]ContextInfo.clf svm.SVC(C1.0, kernelrbf, degree3, gammaauto, coef00.0, shrinkingTrue, probabilityFalse,tol0.001, cache_size200, verboseFalse, max_iter-1, decision_function_shapeovr, random_stateNone)try:ContextInfo.clf.fit(x_train, y_train)except:e traceback.format_exc()print((value error, bar:, e))print(training finish!)timetag ContextInfo.get_bar_timetag(d)timetag_start ContextInfo.get_bar_timetag(d-15)timetag_end ContextInfo.get_bar_timetag(d-1) #过去15个交易日的起止时间today timetag_to_datetime(timetag, %Y%m%d)start_date timetag_to_datetime(timetag_start, %Y%m%d)end_date timetag_to_datetime(timetag_end, %Y%m%d)weekday datetime.strptime(today, %Y%m%d).isoweekday()open_today ContextInfo.get_market_data([open],stock_code[ContextInfo.stock],skip_pausedFalse,dividend_typefront)close_today ContextInfo.get_market_data([close],stock_code[ContextInfo.stock],skip_pausedFalse,dividend_typefront)#print ContextInfo.holding#print weekdayif ContextInfo.holding 0 and weekday 1: #每个星期一判断是否开仓data ContextInfo.get_market_data([open,high,low,close,volume],stock_code[ContextInfo.stock],end_timeend_date,count15,skip_pausedFalse, dividend_typefront)data data.sort_index()close data[close].valuesmax data[high].valuesmin data[low].valuesvolume data[volume].valuesclose_mean close[-1] / np.mean(close)volume_mean volume[-1] / np.mean(volume)max_mean max[-1] / np.mean(max)min_mean min[-1] / np.mean(min)vol volume[-1]return_now close[-1] / close[0]std np.std(np.array(close), axis 0)features [close_mean, volume_mean, max_mean, min_mean, vol, return_now, std]features np.array(features).reshape(1, -1)try:prediction ContextInfo.clf.predict(features)[0]if prediction 1:ContextInfo.holding int(ContextInfo.money*0.95/(open_today))/100order_shares(ContextInfo.stock,ContextInfo.holding*100,fix,open_today,ContextInfo,ContextInfo.accountid)ContextInfo.buyprice open_todaybuy_condition Trueprint(today)print(open long position to 0.95)except :print((predict error occur,bar:, d))elif ContextInfo.holding 0 and close_today/ContextInfo.buyprice 1.1: #每个交易日判断止盈止损order_shares(ContextInfo.stock,-ContextInfo.holding*100,fix,close_today,ContextInfo,ContextInfo.accountid)ContextInfo.holding 0sell_condition Trueprint(today)print(reach profit stop limit, close position)elif ContextInfo.holding 0 and close_today/ContextInfo.buyprice 0.98 and weekday 5:order_shares(ContextInfo.stock,-ContextInfo.holding*100,fix,close_today,ContextInfo,ContextInfo.accountid)ContextInfo.holding 0sell_condition Trueprint(today)print(reach lose stop limit, close position)ContextInfo.days 1ContextInfo.paint(do_buy, int(buy_condition), -1, 0)ContextInfo.paint(do_sell, int(sell_condition), -1, 0)