國信證券學習系列(1)

????????軟件不錯,滿足了我對股票,期貨,期權的全部要求。而且數據可以提供下載,簡直沒話說了。

????????數據清洗問題,我其實很早以前就在思考這個問題,回測,到底在測什么?什么樣的數據可以用來回測?什么樣的回測才是好的回測,才是可以拿來實盤的?說什么tick回測更精準,我到哪去找?我交易也沒指望那么高頻率,誤差出現,我能hold住就行。

不管了,就這樣,默認他的數據有用,直接上來干吧!

? ? ? ? 先做多因子選股策略:

? ? ? ? 擇時函數:

def signal(ContextInfo):buy = {i:0 for i in ContextInfo.s}sell = {i:0 for i in ContextInfo.s}data_high = ContextInfo.get_history_data(22,'1d','high',3)data_high_pre = ContextInfo.get_history_data(2,'1d','high',3)data_close60 = ContextInfo.get_history_data(62,'1d','close',3)#print data_high#print data_close#print data_close60
#選擇買入點for k in ContextInfo.s:if k in data_close60:if len(data_high_pre[k]) == 2 and len(data_high[k]) == 22 and len(data_close60[k]) == 62:if data_high_pre[k][-2] > max(data_high[k][:-2]):buy[k] = 1           #超過20日最高價,加入買入備選elif data_high_pre[k][-2] < np.mean(data_close60[k][:-2]):sell[k] = 1           #低于60日均線,加入賣出備選#print buy#print sellreturn buy,sell           #買入賣出備選

獲取數據排序?

for k in list(buys.keys()):if buys[k] == 1:
#找因子rank1[k] = ext_data_rank('atr',k[-2:]+k[0:6],0,ContextInfo)rank2[k] = ext_data_rank('adtm',k[-2:]+k[0:6],0,ContextInfo)#print rank1[k], rank2[k]rank_total[k] = 0.5 * rank1[k]- 0.5 * rank2[k]    #因子的權重需要人為設置,此處取了0.5print (1111111, rank1[k])

策略代碼

#coding:gbk
"""
回測模型示例(非實盤交易策略)
#HS300日線下運行,20個交易日進行 一次調倉,每次買入在買入備選中因子評分前10的股票,每支股票各分配當前可用資金的10%(權重可調整)
#擴展數據需要在補完HS300成分股數據之后生成,本模型中擴展數據暫時使用VBA指標ATR和ADTM生成,命名為atr和adtm
"""
import pandas as pd
import numpy as np
import time
import datetime
#對所有股票進行擇時交易
def signal(ContextInfo):buy = {i:0 for i in ContextInfo.s}sell = {i:0 for i in ContextInfo.s}data_high = ContextInfo.get_history_data(22,'1d','high',3)data_high_pre = ContextInfo.get_history_data(2,'1d','high',3)data_close60 = ContextInfo.get_history_data(62,'1d','close',3)#print data_high#print data_close#print data_close60for k in ContextInfo.s:if k in data_close60:if len(data_high_pre[k]) == 2 and len(data_high[k]) == 22 and len(data_close60[k]) == 62:if data_high_pre[k][-2] > max(data_high[k][:-2]):buy[k] = 1           #超過20日最高價,加入買入備選elif data_high_pre[k][-2] < np.mean(data_close60[k][:-2]):sell[k] = 1           #低于60日均線,加入賣出備選#print buy#print sellreturn buy,sell           #買入賣出備選def init(ContextInfo):ContextInfo.s = ContextInfo.get_sector('000300.SH')ContextInfo.set_universe(ContextInfo.s)ContextInfo.day = 0ContextInfo.holdings = {i:0 for i in ContextInfo.s}ContextInfo.weight = [0.1]*10         #設置資金分配權重ContextInfo.buypoint = {}ContextInfo.money = ContextInfo.capitalContextInfo.profit = 0ContextInfo.accountID='testS'
#獲取發出買入信號的股票,進行因子評級
def handlebar(ContextInfo):rank1 = {}rank2 = {}rank_total = {}tmp_stock = {}d = ContextInfo.barposprice = ContextInfo.get_history_data(1,'1d','open',3)if d > 60 and d % 20 == 0:               #每月一調倉nowDate = timetag_to_datetime(ContextInfo.get_bar_timetag(d),'%Y%m%d')print(nowDate)buys, sells = signal(ContextInfo)order = {}for k in list(buys.keys()):if buys[k] == 1:rank1[k] = ext_data_rank('atr',k[-2:]+k[0:6],0,ContextInfo)rank2[k] = ext_data_rank('adtm',k[-2:]+k[0:6],0,ContextInfo)#print rank1[k], rank2[k]rank_total[k] = 0.5 * rank1[k]- 0.5 * rank2[k]           #因子的權重需要人為設置,此處取了0.5和-0.5print (1111111, rank1[k])tmp = sorted(list(rank_total.items()), key = lambda item:item[1])#print tmpif len(tmp) >= 10:tmp_stock = {i[0] for i in tmp[:10]}else:tmp_stock = {i[0] for i in tmp}                              #買入備選中若超過10只股票則選10支,不足10支則全選for k in list(buys.keys()):if k not in tmp_stock:buys[k] = 0if tmp_stock:print('stock pool:',tmp_stock)for k in ContextInfo.s:if ContextInfo.holdings[k] > 0 and sells[k] == 1:print('ready to sell')order_shares(k,-ContextInfo.holdings[k]*100,'fix',price[k][-1],ContextInfo,ContextInfo.accountID)ContextInfo.money += price[k][-1] * ContextInfo.holdings[k] * 100 - 0.0003*ContextInfo.holdings[k]*100*price[k][-1]                  #手續費按萬三設定ContextInfo.profit += (price[k][-1]-ContextInfo.buypoint[k]) * ContextInfo.holdings[k] * 100 - 0.0003*ContextInfo.holdings[k]*100*price[k][-1]#print price[k][-1]print(k)#print ContextInfo.moneyContextInfo.holdings[k] = 0ContextInfo.money_distribution = {k:i*ContextInfo.money for (k,i) in zip(tmp_stock,ContextInfo.weight)}for k in tmp_stock:if ContextInfo.holdings[k] == 0 and buys[k] == 1:print('ready to buy')order[k] = int(ContextInfo.money_distribution[k]/(price[k][-1]))/100order_shares(k,order[k]*100,'fix',price[k][-1],ContextInfo,ContextInfo.accountID)ContextInfo.buypoint[k] = price[k][-1]ContextInfo.money -= price[k][-1] * order[k] * 100 - 0.0003*order[k]*100*price[k][-1]ContextInfo.profit -= 0.0003*order[k]*100*price[k][-1]print(k)ContextInfo.holdings[k] = order[k]print(ContextInfo.money,ContextInfo.profit,ContextInfo.capital)profit = ContextInfo.profit/ContextInfo.capitalif not ContextInfo.do_back_test:ContextInfo.paint('profit_ratio', profit, -1, 0)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449348.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449348.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JNA—JNI終結者

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.介紹 給大家介紹一個最新的訪問本機代碼的Java框架—JNA。 JNA(Java Native Access)框架是一個開源的Java框架&#xff0c;是SUN公司…

FIFO存儲器

FIFO( First Input First Output)簡單說就是指先進先出。由于微電子技術的飛速發展&#xff0c;新一代FIFO芯片容量越來越大&#xff0c;體積越來越小&#xff0c;價格越來越便宜。作為一種新型大規模集成電路&#xff0c;FIFO芯片以其靈活、方便、高效的特性&#xff0c;逐漸在…

通過8個技巧讓你成為一個超強的Linux終端用戶

本文由 極客范 - minejo 翻譯自 Chris Hoffman。歡迎加入極客翻譯小組&#xff0c;同我們一道翻譯與分享。轉載請參見文章末尾處的要求。使用Linux終端不僅僅是只輸入命令。學習這些基本的技巧&#xff0c;你就會逐漸掌握Bash shell&#xff0c;這個在大多數Linux發行版上默認…

國信證券學習系列(2)

獲取指數池&#xff1a; def init(ContextInfo):#設置股票池stock300 ContextInfo.get_stock_list_in_sector(滬深300)ContextInfo.stock300_weight {}stock300_symbol []stock300_weightlist [] ContextInfo.index_code ContextInfo.stockcode"."ContextInfo.m…

旅游服務商Bikego完成A輪融資,共建創投、馬蜂窩投資

2月26日消息&#xff0c;近日Bikego宣布完成A輪融資&#xff0c;共建創投、北京馬蜂窩之旅國際旅行社投資。目前金額尚未公開。 bikego領趣旅行成立于2016年&#xff0c;是一家目的地日游服務運營商。從內容切入&#xff0c;提供國內自由行客戶的白天玩法解決方案&#xff0c;…

python-flask-1

https://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu 1. virtualenv安裝 sudo apt-get install virtualenv sudo apt install virtualenvwrapper echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh&quo…

JSch:Java Secure Channel -- java 代碼實現 ssh 遠程操作

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 JSch 是SSH2的一個純Java實現。 它允許你連接到一個 sshd 服務器&#xff0c;使用端口轉發&#xff0c;X11轉發&#xff0c;文件傳輸等…

國信證券學習系列(3)

日內回轉策略&#xff1a;做T策略 擇時交易&#xff1a; if date[-8:-3] ! 14:55:if macd > 0 and macd_pre < 0:# 根據MACD>0則開倉,小于0則平倉if avaliable > df.iloc[-1, 0] * ContextInfo.Lots * 100:order_shares(ContextInfo.get_universe()[0], ContextIn…

時序數據庫連載系列: 時序數據庫一哥InfluxDB之存儲機制解析

2019獨角獸企業重金招聘Python工程師標準>>> InfluxDB 的存儲機制解析 本文介紹了InfluxDB對于時序數據的存儲/索引的設計。由于InfluxDB的集群版已在0.12版就不再開源&#xff0c;因此如無特殊說明&#xff0c;本文的介紹對象都是指 InfluxDB 單機版 1. InfluxDB 的…

如何在Linux上提高文本的搜索效率

本文由 極客范 - minejo 翻譯自 Xmodulo。歡迎加入極客翻譯小組&#xff0c;同我們一道翻譯與分享。轉載請參見文章末尾處的要求。對于系統管理員或程序員來說&#xff0c;當需要在復雜配置的目錄中或者在大型源碼樹中搜尋特定的文本或模式時&#xff0c;grep類型的工具大概是…

Spring Boot 10:處理Json數據中的null值

Jackson版&#xff1a; /*** Jackson 配置類 對Json數據進行特殊處理** Author YangXuyue* Date 2019/04/02 07:12*/ Configuration public class JacksonConfig {/*** 配置Jackson** param builder* return* Author YangXuyue* Date 2019/04/02 07:14*/BeanPrimaryConditional…

國信證券學習系列(4)

機器學習篇章&#xff0c;本章不過時腳本小子&#xff0c;機器學習最核心的是機器&#xff0c;是模型。 學習&#xff0c;無非就是找些有的沒的因子扔進去&#xff0c;但說實話&#xff0c;機器學習&#xff0c;太過容易過擬合&#xff0c;容易無效化。回測好看的一筆&#xf…

JSch - Java Secure Channel : java 代碼實現服務器遠程操作

一、前言 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 JSch是SSH2的純Java實現 。 JSch允許您連接到sshd服務器并使用端口轉發&#xff0c;X11轉發&#xff0c;文件傳輸等&#xff0…

前嗅ForeSpider教程:數據建表

今天&#xff0c;小編為大家帶來的教程是&#xff1a;如何在前嗅ForeSpider中&#xff0c;進行數據建表操作及各注意事項。主要內容包括&#xff1a;快速建表&#xff0c;自由建表&#xff0c;字段參數&#xff0c;數據表的創建&#xff0c;關聯與刪除&#xff0c;以及表單變更…

世紀大爭論:Linux還是GNU/Linux?

本文由 極客范 - 愛開源的貢獻開源社區 翻譯自 Chris Hoffman。歡迎加入極客翻譯小組&#xff0c;同我們一道翻譯與分享。轉載請參見文章末尾處的要求。我們在網上已經習慣用“Linux”來稱呼Linux操作系統了&#xff0c;然而&#xff0c;偶爾也用“GNU/Linux”來稱呼和指代同…

PyTorch Softmax

PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. The other is do softmax on a spatial matrix sized in B, C, H, W. But it seems like some problems existing in Softmax2d. : ( 轉載于:https://www.cnblogs.com/hiz…

國信證券學習系列(5)

網格策略&#xff0c;號稱勝率100%的策略&#xff0c;只要扛得住回撤&#xff0c;怎么說呢&#xff0c;它包含了最簡單的思想&#xff0c;大道至簡&#xff0c;真的是沒有什么復雜的&#xff0c;原理清晰&#xff0c;思路簡單。可以明確知道我掙的是那筆錢&#xff0c;為什么獲…

promise

## 前言 今天來分享下promise的用法&#xff0c;es6偉大發明之一&#xff0c;當初我學習的時候也是蠻頭大的&#xff0c;不知道為啥&#xff0c;整個腦子就是&#xff0c;我在哪&#xff0c;我要干啥的懵圈&#xff0c;后面認真學習之后&#xff0c;覺得真是十分好用&#xff0…

計算機集群 解說

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 計算機集群簡稱集群是一種計算機系統&#xff0c;它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。 在某…

同時尋找最大數和最小數的最優算法 第二大數

我們知道&#xff0c;在一個容量為n的數據集合中尋找一個最大數&#xff0c;不管用什么樣的比較算法&#xff0c;至少要比較n-1次&#xff0c;就算是用競標賽排序也得比較n-1次&#xff0c;否則你找到的就不能保證是最大的數。那么&#xff0c;在一個容量為n的數據集合中同時尋…