[041]量化交易]简单交易策略:当日涨幅超过3%买入,当持有股票亏损超过3%,平仓

本文主要是介绍[041]量化交易]简单交易策略:当日涨幅超过3%买入,当持有股票亏损超过3%,平仓,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
# 导入tushare
import tushare as ts
import talib# 当日涨幅超过3%买入。
# 当持有股票亏损超过3%,平仓# 初始化pro接口
pro = ts.pro_api('')# 通过股票代码获取股票数据,这里没有指定开始及结束日期
df = pro.daily(ts_code='300104.SZ', start_date='20180101', end_date='20180819')
df.sort_index(ascending=False, inplace=True)
# ascending=True为顺序排列,False为倒序,inplace一定要设置为Trueprint(df)
print(type(df))
print('df有行数:' + str(df.shape[1]))
print('df有列数:' + str(df.shape[0]))
print('++++++++++++++++++++')
print(df.index)
print(df.index.values)
print('++++++++++++++++++++')
# 处理数据
df.index = pd.to_datetime(df.trade_date)  # 20180124转换为2018-07-18
print('*******df.index******')
print(df.index)
print('*********************')# Pct_change是一个统计函数,用于表示当前元素与前面元素的相差百分比。
# 比如说给定三个元素[2,3,6],计算相差百分比后得到[NaN, 0.5,  1.0],从第一个元素到第二个元素增加50%,从第二个元素到第三个元素增加100%。
# 计算浮动比例
df["pchange"] = df.close.pct_change()
# # 计算浮动点数
# df["diff_change"] = df.close.diff()
# df.to_csv('vvv.csv')
# 设定回撤值
withdraw = 0.03
# 设定突破值
breakthrough = 0.03
# 设定账户资金
account = 10000
# 持有仓位手数
position = 0def buy(bar):global account, positionprint("{}: buy {}".format(bar.trade_date, bar.close))# 一手价格one = bar.close * 100position = account // one  # //运算符表示向下取整除,它会返回整除结果的整数部分 print(7//2)==3account = account - (position * one)  # 买完几手剩下资金def sell(bar):global account, position# 一手价格print("{}: sell {}".format(bar.trade_date, bar.close))one = bar.close * 100account += position * oneposition = 0# iloc 按行取参数
print("开始时间投资时间: ", df.iloc[0].trade_date)# loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)
# iloc函数:通过行号来取行数据(如取第二行的数据)
for date in df.index:bar = df.loc[date]  # 取一行数据# 浮动百分比*** and 浮动百分比大于0.03  and 仓位为0   则买入if bar.pchange and bar.pchange > breakthrough and position == 0:buy(bar)elif bar.pchange and bar.pchange < withdraw and position > 0:sell(bar)# if  中    0、''、[]、()、{}、None、False在布尔上下文中为假;其它任何东西都为真;
print("最终可有现金: ", account)
print("最终持有市值: ", position * df.iloc[-1].close * 100)

在这里插入图片描述

这篇关于[041]量化交易]简单交易策略:当日涨幅超过3%买入,当持有股票亏损超过3%,平仓的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/260439

相关文章

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ