[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 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir