# !/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阿尔法策略相关推荐

  1. 米筐量化不支持c语言_从零开始学量化(三):数据获取途径

    本系列的前两篇都是一些笼统的介绍,供小白制定学习计划时参考,现在该铺垫的都铺垫的差不多了.循序渐进,从本篇开始会写一些能实操的内容,尽量写的很细节,有任何问题欢迎私戳. 本篇给出一些数据获取途径,基本 ...

  2. 从零开始学python人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...

    原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...

  3. python attention机制_从零开始学Python自然语言处理(26)—— 强大的Attention机制...

    前文传送门: 在上一次面试失利后,我回来仔细研究了一下Attention机制,研究完我不禁感悟,这机制真的厉害啊!因为我之前面试被问到的Encoder - Decoder框架中有个瓶颈是编码的结果以固 ...

  4. python jieba分词_从零开始学自然语言处理(八)—— jieba 黑科技

    小编喜欢用 jieba 分词,是因为它操作简单,速度快,而且可以添加自定义词,从而让 jieba 分出你想要分出的词,特别适用于特定场景的中文分词任务. 然鹅,万事都有两面性,jieba 分词这么好用 ...

  5. python数字推盘_从零开始学编程做游戏:一个文科生策划的14周

    点击 "humans flee" 按钮则人类移动一回合,点击 "zombies stalk" 按钮则僵尸移动一回合.它们采取的寻路策略都是广度优先搜索.游戏不会 ...

  6. python 空数组_从零开始学python之numpy

    Numpy是python中一个常用的库,其支持大量的维度数据与矩阵运算,也拥有针对数据运算的数学函数库,用于独特的数组存储方式及对应的处理方法.一般用以下方式导入: import numpy as n ...

  7. python集合运算_从零开始学Python - 第014课:常用数据结构之集合

    在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set).说到集合这个词大家一定不会陌生,在数学课本上就有这个概念.通常我们对集合的定义是"把一定范围的.确定的.可 ...

  8. 学python处理数据结构_从零开始学Python - 第009课:常用数据结构之字符串

    第二次世界大战促使了现代电子计算机的诞生,世界上的第一台通用电子计算机叫ENIAC(电子数值积分计算机),诞生于美国的宾夕法尼亚大学,占地167平米,重量27吨,每秒钟大约能够完成约5000次浮点运算 ...

  9. python语言原理_从零开始学Python自然语言处理(十三)——CBOW原理详解

    在之前的连载中我们用代码实现了word2vec,但并没有详细讲解CBOW的原理,本文手把手带你走入CBOW的算法原理. word2vec是一种将word转为向量的方法,其包含两种算法,分别是skip- ...

最新文章

  1. python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
  2. HTML转义字符大全
  3. 初学Python常见异常错误,总有一处你会遇到!
  4. 矩阵乘法的本质是什么
  5. 回溯法(其实是递归)
  6. 【THUSC2018】史莱姆之友【长链剖分】【链分治NTT】
  7. mysql 学习笔记03修改表以及其他操作
  8. linux系统键盘记录器,可截获到 QQ 密码 键盘记录器源码
  9. python之路《七》文件的处理
  10. 音乐直链php,【原创】百度音乐直链 + 实现方法
  11. 使用pathogen管理Vim插件并托管到Github 参照文章【1】【2】的办法,将vim打造成一个Python开发环境。文章中使用的是 pathogen + git 来管理 Vim 插件的。对这种
  12. PCB板常用检测方法
  13. 【Selenium】Selenium的3种等待方式
  14. rrpp协议如何修改_Rrpp详解
  15. 03.ReactDOM.render
  16. Latex 数学公式学习
  17. 032 参数方程确定的函数导数
  18. 美国TELEMARK电源维修电子枪高压控制电源修理
  19. MySQL索引底层:B+树详解
  20. 看完这些经典面试题,你就是vue的超级英雄!

热门文章

  1. mybatis的驼峰映射
  2. Chrome 扩展基础知识
  3. React学习[一]
  4. T04 Grading
  5. 成为阿里P7移动架构师到底有多难?享学课堂java架构师
  6. python correlation_python使用rabbitmq实例七,相互关联编号correlation id
  7. Java版贪食蛇游戏
  8. 微博季报图解:营收4.5亿美元同比降22% 广告需求短期内承压
  9. 面试官:作为架构师,请你谈谈Saas 应用如何搭建?
  10. Froggy Ford Gym - 100851F