python alpha策略_从零开始学量化:04阿尔法策略
# !/usr/bin/env python
# -*- coding: utf-8 -*-
from Alpha import Alpha
'''
请在Strategy中修改个人账号密码和策略ID
'''
class Strategy(Alpha):
def __init__(self, *args, **kwargs):
super(Strategy, self).__init__(*args, **kwargs)
self.md.subscribe('SHSE.000300.bar.60') # 订阅一个symbol,在交易时间触发下单
def initialize(self):
# region 获取沪深300中当天可交易的股票
instruments1 = self.get_instruments('SHSE', 1, 1)
instruments2 = self.get_instruments('SZSE', 1, 1)
symbol_list1 = set(instrument.symbol for instrument in instruments2 + instruments1) # 获取当日可交易的股票,剔除B股
constituents = self.get_constituents('SHSE.000300')
symbol_list2 = set(constituent.symbol for constituent in constituents) # 获取沪深300成分股(剔除ST、*ST股票,以及上市时间不足3个月等股票后剩余的股票)
symbol_list = symbol_list1 & symbol_list2
symbol_list = ','.join(symbol for symbol in symbol_list)
# endregion
# region 选出市值最小的5只
market_index = self.get_last_market_index(symbol_list)
data = [mi for mi in market_index]
data = sorted(data, key=lambda mi: mi.market_value)[:5] # 市值最小的5只
# endregion
# region 为了计算仓位,获取昨日dailybar,存入buy_dict
buy_list = ','.join(d.symbol for d in data)
dailybars = self.get_last_dailybars(buy_list)
self.buy_dict = {dailybar.sec_id: dailybar for dailybar in dailybars}
# endregion
def handle_data(self):
# region 没有持仓时直接open_long
print(self.buy_dict.keys())
positions = self.get_positions()
if len(positions) == 0:
cash = self.get_cash()
for b in self.buy_dict.values():
vol = int(cash.available * 0.95 / len(self.buy_dict) / b.close / 100) * 100
self.open_long(b.exchange, b.sec_id, 0, vol)
return
# endregion
# region 有持仓时结合持仓获取buy_dict,sell_dict
for p in positions:
if p.sec_id in self.buy_dict:
self.buy_dict.pop(p.sec_id)
else:
self.sell_dict[p.sec_id] = p
# endregion
for p in self.sell_dict.values(): # 先卖出,卖盘成交时再买入,若资金足够也可以直接买入
self.close_long(p.exchange, p.sec_id, 0, p.volume)
def on_order_status(self, order):
pass
if __name__ == '__main__':
my_strategy = Strategy(
username='username', # 请修改账号
password='password', # 请修改密码
strategy_id='strategy_id', # 请修改策略ID
mode=2,
td_addr='localhost:8001')
ret = my_strategy.run()
print('exit code: ', ret)
python alpha策略_从零开始学量化:04阿尔法策略相关推荐
- 米筐量化不支持c语言_从零开始学量化(三):数据获取途径
本系列的前两篇都是一些笼统的介绍,供小白制定学习计划时参考,现在该铺垫的都铺垫的差不多了.循序渐进,从本篇开始会写一些能实操的内容,尽量写的很细节,有任何问题欢迎私戳. 本篇给出一些数据获取途径,基本 ...
- 从零开始学python人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...
原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...
- python attention机制_从零开始学Python自然语言处理(26)—— 强大的Attention机制...
前文传送门: 在上一次面试失利后,我回来仔细研究了一下Attention机制,研究完我不禁感悟,这机制真的厉害啊!因为我之前面试被问到的Encoder - Decoder框架中有个瓶颈是编码的结果以固 ...
- python jieba分词_从零开始学自然语言处理(八)—— jieba 黑科技
小编喜欢用 jieba 分词,是因为它操作简单,速度快,而且可以添加自定义词,从而让 jieba 分出你想要分出的词,特别适用于特定场景的中文分词任务. 然鹅,万事都有两面性,jieba 分词这么好用 ...
- python数字推盘_从零开始学编程做游戏:一个文科生策划的14周
点击 "humans flee" 按钮则人类移动一回合,点击 "zombies stalk" 按钮则僵尸移动一回合.它们采取的寻路策略都是广度优先搜索.游戏不会 ...
- python 空数组_从零开始学python之numpy
Numpy是python中一个常用的库,其支持大量的维度数据与矩阵运算,也拥有针对数据运算的数学函数库,用于独特的数组存储方式及对应的处理方法.一般用以下方式导入: import numpy as n ...
- python集合运算_从零开始学Python - 第014课:常用数据结构之集合
在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set).说到集合这个词大家一定不会陌生,在数学课本上就有这个概念.通常我们对集合的定义是"把一定范围的.确定的.可 ...
- 学python处理数据结构_从零开始学Python - 第009课:常用数据结构之字符串
第二次世界大战促使了现代电子计算机的诞生,世界上的第一台通用电子计算机叫ENIAC(电子数值积分计算机),诞生于美国的宾夕法尼亚大学,占地167平米,重量27吨,每秒钟大约能够完成约5000次浮点运算 ...
- python语言原理_从零开始学Python自然语言处理(十三)——CBOW原理详解
在之前的连载中我们用代码实现了word2vec,但并没有详细讲解CBOW的原理,本文手把手带你走入CBOW的算法原理. word2vec是一种将word转为向量的方法,其包含两种算法,分别是skip- ...
最新文章
- python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
- HTML转义字符大全
- 初学Python常见异常错误,总有一处你会遇到!
- 矩阵乘法的本质是什么
- 回溯法(其实是递归)
- 【THUSC2018】史莱姆之友【长链剖分】【链分治NTT】
- mysql 学习笔记03修改表以及其他操作
- linux系统键盘记录器,可截获到 QQ 密码 键盘记录器源码
- python之路《七》文件的处理
- 音乐直链php,【原创】百度音乐直链 + 实现方法
- 使用pathogen管理Vim插件并托管到Github 参照文章【1】【2】的办法,将vim打造成一个Python开发环境。文章中使用的是 pathogen + git 来管理 Vim 插件的。对这种
- PCB板常用检测方法
- 【Selenium】Selenium的3种等待方式
- rrpp协议如何修改_Rrpp详解
- 03.ReactDOM.render
- Latex 数学公式学习
- 032 参数方程确定的函数导数
- 美国TELEMARK电源维修电子枪高压控制电源修理
- MySQL索引底层:B+树详解
- 看完这些经典面试题,你就是vue的超级英雄!