利用短期均线 MAS 和长期均线 MAL 生成开平仓信号:

MAS 上穿 MAL,形成做多信号,买入开仓;
MAS 上穿 MAL,形成做空信号,卖出开仓;
止盈 [基于 Bar 线的止盈]:浮动盈利 / 保证金 > 5%, 计算 | 浮动盈利×保证金比例 / 保证金;
止损 [基于 Bar 线的止损]:浮动亏损 / 保证金 < 3%, 计算 | 浮动亏损×保证金比例 / 保证金。

************************************

双均线突破策略

************************************

import re
import talib
import pandas as pd
import numpy as np
import quartz_futures as qf
from quartz_futures.api import *

参数初始化

universe = [‘RB1610’] # 策略证券池
start = pd.datetime(2016, 6, 1) # 回测开始时间
end = pd.datetime(2016, 9, 1) # 回测结束时间
capital_base = 1e4 # 初试可用资金
refresh_rate = 1 # 调仓周期
freq = ‘d’ # 调仓频率:s -> 秒;m-> 分钟;d-> 日;

自动生成保证金比例: margin_rate

margin_ratio = DataAPI.FutuGet(ticker = universe, field = [‘ticker’,’tradeMarginRatio’], pandas = ‘1’)
margin_rate = dict(zip(margin_ratio.ticker.tolist(), [0.01*index for index in margin_ratio.tradeMarginRatio.tolist()]))

策略初始化函数,一般用于设置计数器,回测辅助变量等。

def initialize(futures_account):
pass

回测调仓逻辑,每个调仓周期运行一次,可在此函数内实现信号生产,生成调仓指令。

def handle_data(futures_account):
symbol, amount = universe[0], 1
history_data = get_symbol_history(symbol = symbol, time_range = 20)[symbol]

## 计算 MA_S 和 MS_L
MA_S = talib.MA(history_data['closePrice'].apply(float).values, timeperiod = 5)
MA_L = talib.MA(history_data['closePrice'].apply(float).values, timeperiod = 10)current_long = futures_account.position.get(symbol, dict()).get('long_position', 0)
current_short = futures_account.position.get(symbol, dict()).get('short_position', 0)
if MA_S[-1] > MA_L[-1] and MA_S[-2] < MA_L[-2]:if current_short > 0:print futures_account.current_date, futures_account.current_time, '买入平仓'order(symbol, current_short, 'close')if current_long < amount:print futures_account.current_date, futures_account.current_time, '买入开仓'order(symbol, amount, 'open')if MA_S[-1] < MA_L[-1] and MA_S[-2] > MA_L[-2]:if current_long > 0:print futures_account.current_date, futures_account.current_time,'卖出平仓'order(symbol, -current_long, 'close')if current_short < amount:print futures_account.current_date, futures_account.current_time, '卖出开仓'order(symbol, -amount, 'open')profit = futures_account.position.get(symbol, dict()).get('profit', 0)
margin = futures_account.position.get(symbol, dict()).get('long_margin', 0) - futures_account.position.get(symbol, dict()).get('short_margin', 0)if margin and profit/margin < -0.03:if current_long > 0:order(symbol, -current_long, 'close')if current_short > 0:order(symbol, current_short, 'close')print futures_account.current_date, futures_account.current_time, '止损'
if margin and profit/margin > 0.05:if current_long > 0:order(symbol, -current_long, 'close')if current_short > 0:order(symbol, current_short, 'close')print futures_account.current_date, futures_account.current_time, '止盈'

双均线突破-附带止盈止损相关推荐

  1. QTYX量化系统实战案例分享|短线止盈止损监测202301

    前言 我觉得非常有必要和大家分享一些股票量化分析工具QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 关 ...

  2. 九龙证券|股票为什么要设置止盈止损?止盈止损怎么设置?

    在股市上,大部分投资者在买入个股之后,都会设置止盈止损,那么,他们为什么要设置止盈止损呢?止盈止损怎样设置?下面九龙证券为我们准备了相关内容,以供参阅. 股票设置止损能够操控个股的风险性,最大程度地保 ...

  3. 【零基础】极星9.3止盈止损用法详解

    交流Q群1064240775 一.前言 止盈止损是期货交易中比较基础的部分了,但从设置上来说还是有点复杂性的,所以这篇就好好写明白极星9.3的止盈止损. 二.为啥会有止盈止损 首先得搞明白,为啥会有止 ...

  4. 布林带止盈止损策略改进

    布林带止盈止损策略改进 万维钢的<高手>里提到了<算法之美 指导工作与生活的算法>这本书,里面提到了诸如"什么时候开始谈女朋友"."看房看到什么时 ...

  5. Python量化交易学习笔记(19)——连续下跌买入止盈止损卖出策略

    好友提出要验证连续下跌买入止盈止损卖出策略,本文对该策略回测和实现做分析记录. 买入条件中,连续下跌定义为收盘价连续4日低于前1日的收盘价.卖出条件中,止盈率设置为10%,止损率设置为5%.回测初始资 ...

  6. 【StudyQuant| Python量化投资- 量化研究 - 系列7】多种仓位管理的方法,固定止盈止损 与 移动止盈止损

    前言 StudyQuant -[量化投资教学系列帖子],通过实际案例教初学者使用python进行量化投资,分享最前沿的研究成果.希望能对大家有帮助. 量化投资文章 请点击此处 相关文章 区间震荡策略曾 ...

  7. 别人赚钱时你却在解套,是少了止盈止损环节!股票量化分析工具QTYX-V2.4.1

    前言 股票市场上流行着这么一句话:"会买的是徒弟,会卖的是师傅". 散户或多或少的总是会选到一些牛股,可能是靠运气,也可能靠自身的投资能力.但最终出现亏钱的局面,最大的原因是并不知 ...

  8. 量化投资_止盈止损在策略中的有效性(改编)

    何时卖出恐怕是我们遇到最多的一个问题,而止盈与止损又是卖出最常见的两个策略. 我们假设最常见的理论有四种:随机游走(分为正态分布与对数正态分布).趋势理论与均值回归理论,来一一验证. 第一种:随机游走 ...

  9. 量化交易 聚宽 止盈止损策略

    聚宽官网 官网 指数代码 程序架构 策略设置函数 获取数据 交易函数 策略说明 1.设置股票池为 沪深300的所有股票 2.如果当前股价小于10元/股 并且当前不持仓.则买入 3.如果当前股价比买入时 ...

最新文章

  1. mysql命令行显示乱码_mysql命令行显示乱码的解决方法
  2. Axure RP 9.0 原型设计软件安装教程
  3. 游戏设计模式实操经验:游戏结算功能实现的两个要点
  4. mpvue 中使用 wx-f2 tooltip 失效解决
  5. .net 读取mysql数据库配置文件_.NETCore添加及读取默认配置文件信息
  6. 使用java IO来读写文件
  7. 蓝桥杯 ALGO-124 算法训练 数字三角形
  8. 【数据结构的魅力】001.认识复杂度二分法异或运算
  9. 误差的基本性质与处理matlab实验,误差理论与数据处理实验报告
  10. Mapgis67软件实用操作
  11. fft和freqz的区别
  12. mac电脑如何设置开机启动项
  13. Android应用测试篇
  14. centos 文件搜索命令
  15. Python代码画喜羊羊怎么画_Python画图的这几种方法,你学会了吗
  16. Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图
  17. 小程序支持HTML标签
  18. java中的常见异常1 -- 新手上路,减速慢行
  19. 人员考勤,MySQL数据库一个表自动生成3表筛选人员迟到早退缺勤
  20. FTP协议(指令集)

热门文章

  1. 【新手向】keras如何计算top5
  2. HJ77 火车进站(不会,重点复习)
  3. 文本标注平台搭建之brat
  4. 达内出来的混得怎么样了_大学经验丨计算机专业学生,应该怎么样才不会沦为普通程序员?...
  5. #64. 上白泽慧音
  6. Ubuntu小点汇总,更新中...
  7. tempdb大量闩锁等待问题分析
  8. Hexo博客新建文章
  9. 独乐乐不如众乐乐---二建通过啦~
  10. 深入理解教育技术(学)