利用短期均线 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. 模型剪枝(Pruning)
  2. Appium自动化测试-iOS真机运行
  3. Python科学计算扩展库NumPy之np.array()与np.asarray()区别
  4. android:Activity启动模式
  5. requests模块的入门使用
  6. as上的git到码云操作_如何使用git从码云克隆项目到本地?
  7. k8s滚动升级_k8s deployment 滚动更新
  8. 论文浅尝 | Tree-to-sequence 学习知识问答
  9. opengl 安装_一步步学OpenGL(34) -《GLFX,一个OpenGL效果库》
  10. python参数传递_python参数的传递
  11. xml,String互转
  12. 导致页面顶部空白一行解决方法
  13. nx零件库插件_支持Fusion 360软件的3DSource零件库插件发布
  14. Java基础之序列化
  15. 使用微擎 微赞 微信登陆遇到redirect_uri 参数错误的设置办法
  16. shell脚本--三种引号的区别
  17. python开发跟淘宝有关联微_为什么微商和淘宝卖家不得不做公众号和小程序?
  18. Element DatePicker 日期选择器禁用单个指定日期
  19. 使用php读取文件中的内容,以表格的形式进行输出。
  20. Poly-encoders(2020 ICLR)

热门文章

  1. 音乐雷达 shazam算法_Shazam之类的音乐识别应用程序如何工作?
  2. c语言刘备关羽张飞的编程题,《三国演义》经典练习题汇总含参考答案
  3. openFrameworks教程(一)
  4. 4个开源监控工具介绍
  5. 等你爱我的伤感QQ日志:听说,喜欢隐身的人都有一种伤
  6. 机器视觉——镜头知识整理
  7. Java并发之JUC的通关文牒
  8. Linux--vim编辑器的使用
  9. 前端面试中小型公司都考些什么
  10. 一个简单的题外话:周五,我们的心情