[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

相关文章

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i