國信證券學習系列(2)

獲取指數池:

def init(ContextInfo):#設置股票池stock300 =ContextInfo.get_stock_list_in_sector('滬深300')ContextInfo.stock300_weight = {}stock300_symbol = []stock300_weightlist = [] ContextInfo.index_code = ContextInfo.stockcode+"."+ContextInfo.market#重新制作股票池for key in stock300:# 保留權重大于0.35%的成份股if (ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100) > 0.0035:stock300_symbol.append(key)ContextInfo.stock300_weight[key] = ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100stock300_weightlist.append(ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100)print('選擇的成分股權重總和為: ', np.sum(stock300_weightlist)) ContextInfo.set_universe(stock300_symbol)#print ContextInfo.stock300_weight# 資產配置的初始權重,配比為0.6-0.8-1.0ContextInfo.ratio = 0.8#賬號ContextInfo.accountid = "testS"

擇時買賣:

                # 獲取過去5天的價格數據,若連續上漲則為強勢股,調倉到(權重+0.2)的倉位if all(diff>0) and holdings[stock] < buytarget_num:buy_num = buytarget_num - holdings[stock]order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "買入",stock,buy_num# 獲取過去5天的價格數據,若連續下跌則為弱勢股,調倉到(權重-0.2)的倉位elif all(diff<0) and holdings[stock] > selltarget_num:sell_num = holdings[stock] - selltarget_numorder_shares(stock,(-1.0)*sell_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)sell_sum += 1#print "賣出",stock,sell_num

策略代碼:?

#coding:gbk
'''
回測模型示例(非實盤交易策略)本策略以0.8為初始權重跟蹤指數標的滬深300中權重大于0.35%的成份股.
個股所占的百分比為(0.8*成份股權重)*100%.然后根據個股是否:
1.連續上漲5天 2.連續下跌5天
來判定個股是否為強勢股/弱勢股,并對其把權重由0.8調至1.0或0.6'''
#在指數(例如HS300)日線下運行
import numpy as npdef init(ContextInfo):#設置股票池stock300 =ContextInfo.get_stock_list_in_sector('滬深300')ContextInfo.stock300_weight = {}stock300_symbol = []stock300_weightlist = [] ContextInfo.index_code = ContextInfo.stockcode+"."+ContextInfo.marketfor key in stock300:# 保留權重大于0.35%的成份股if (ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100) > 0.0035:stock300_symbol.append(key)ContextInfo.stock300_weight[key] = ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100stock300_weightlist.append(ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100)print('選擇的成分股權重總和為: ', np.sum(stock300_weightlist)) ContextInfo.set_universe(stock300_symbol)#print ContextInfo.stock300_weight# 資產配置的初始權重,配比為0.6-0.8-1.0ContextInfo.ratio = 0.8#賬號ContextInfo.accountid = "testS"def handlebar(ContextInfo):buy_sum = 0sell_sum = 0index  = ContextInfo.barposrealtimetag = ContextInfo.get_bar_timetag(index)print(timetag_to_datetime(realtimetag, '%Y%m%d %H:%M:%S'))dict_close=ContextInfo.get_history_data(7,'1d','close',3)print('測試1',ContextInfo.get_history_data(7,'1d','close'))print('測試',ContextInfo.get_history_data(7,'1d','close',3))print('測試',ContextInfo.get_history_data(7,'1d','close',2))print('測試',ContextInfo.get_history_data(7,'1d','close',1))#持倉市值holdvalue = 0#持倉holdings=get_holdings(ContextInfo.accountid,"STOCK")#剩余資金surpluscapital=get_avaliablecost(ContextInfo.accountid,"STOCK")for stock in ContextInfo.stock300_weight:if  stock  in holdings:if len(dict_close[stock]) == 7:holdvalue += dict_close[stock][-2] * holdings[stock]for stock in ContextInfo.stock300_weight:# 若沒有倉位則按照初始權重開倉if  stock not in holdings and stock in list(dict_close.keys()):if len(dict_close[stock]) == 7:pre_close = dict_close[stock][-1]buy_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) *ContextInfo.ratio / pre_close /100)order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "買入",stock,buy_numelif stock in list(dict_close.keys()):if len(dict_close[stock]) == 7:diff = np.array(dict_close[stock][1:6]) - np.array(dict_close[stock][:-2])pre_close = dict_close[stock][-1]buytarget_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) * (ContextInfo.ratio + 0.2)/ pre_close /100)selltarget_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) *(ContextInfo.ratio - 0.2)/ pre_close /100)# 獲取過去5天的價格數據,若連續上漲則為強勢股,調倉到(權重+0.2)的倉位if all(diff>0) and holdings[stock] < buytarget_num:buy_num = buytarget_num - holdings[stock]order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "買入",stock,buy_num# 獲取過去5天的價格數據,若連續下跌則為弱勢股,調倉到(權重-0.2)的倉位elif all(diff<0) and holdings[stock] > selltarget_num:sell_num = holdings[stock] - selltarget_numorder_shares(stock,(-1.0)*sell_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)sell_sum += 1#print "賣出",stock,sell_numif not ContextInfo.do_back_test:ContextInfo.paint('buy_num', buy_sum, -1, 0)ContextInfo.paint('sell_num', sell_sum, -1, 0)def get_holdings(accountid,datatype):holdinglist={}resultlist=get_trade_detail_data(accountid,datatype,"POSITION")for obj in resultlist:holdinglist[obj.m_strInstrumentID+"."+obj.m_strExchangeID]=obj.m_nVolume/100return holdinglistdef get_avaliablecost(accountid,datatype):result=0resultlist=get_trade_detail_data(accountid,datatype,"ACCOUNT")for obj in resultlist:result=obj.m_dAvailablereturn result

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

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

相關文章

旅游服務商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的數據集合中同時尋…

淺談mpvue項目目錄和文件結構

2019獨角獸企業重金招聘Python工程師標準>>> 在Visual Studio Code里面打開項目文件夾&#xff0c;我們可以看到類似如下的文件結構&#xff1a; 1、package.json文件 package.json是項目的主配置文件&#xff0c;里面包含了mpvue項目的基本描述信息、項目所依賴的各…

[AHOI2009]最小割(最大流+tarjan)

繼續填坑了&#xff0c;啦啦啦 這道題本來是準備枚舉每個邊&#xff0c;暫時去除它&#xff0c;但發現時間會爆炸的 于是決定另辟蹊徑 于是這篇題解就應運而生 首先還是網絡流跑一邊 畢竟題目叫最小割嘛&#xff0c;給個面子 然后跑一邊tarjan對滿流的邊處理掉&#xff0c;即不…

進程間通信---信號

什么是信號&#xff1f; 】 信號處理流程 信號類型 發送信號的函數 參數sig&#xff1a;代表 信號 接收信號的函數 參數 handle 的處理方式有幾種&#xff1f; 實例代碼 實例邏輯 圖中的等待操作使用&#xff1a;pause&#xff08;&#xff09;函數 代碼 在這里插入代碼片…

大白話解說,半分鐘就懂 --- 分布式與集群是什么 ? 區別是什么?

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS&#xff1a;這篇文章算是筆記&#xff0c;僅部分文字是原創&#xff0c;相當內容只是收集、整理、提煉、總結別人寫的。 沒有標為原創…