最终策略源码如下

from wtpy import BaseStrategy

from wtpy import Context

class StraDualThrust(BaseStrategy):

def __init__(self, name:str, code:str, barCnt:int, period:str, days:int, k1:float, k2:float, isForStk:bool = False):

BaseStrategy.__init__(self, name)

self.__days__ = days

self.__k1__ = k1

self.__k2__ = k2

self.__period__ = period

self.__bar_cnt__ = barCnt

self.__code__ = code

self.__is_stk__ = isForStk

def on_init(self, context:Context):

code = self.__code__ #品种代码

if self.__is_stk__:

code = code + "Q"

context.stra_get_bars(code, self.__period__, self.__bar_cnt__, isMain = True)

context.stra_log_text("DualThrust inited")

def on_calculate(self, context:Context):

'''

策略主调函数,所有的计算逻辑都在这里完成

'''

code = self.__code__ #品种代码

# 交易单位,主要用于股票的适配

trdUnit = 1

if self.__is_stk__:

trdUnit = 100

#读取最近50条1分钟线(dataframe对象)

theCode = code

if self.__is_stk__:

theCode = theCode + "Q"

df_bars = context.stra_get_bars(theCode, self.__period__, self.__bar_cnt__, isMain = True)

#把策略参数读进来,作为临时变量,方便引用

days = self.__days__

k1 = self.__k1__

k2 = self.__k2__

#平仓价序列、最高价序列、最低价序列

closes = df_bars["close"]

highs = df_bars["high"]

lows = df_bars["low"]

#读取days天之前到上一个交易日位置的数据

hh = highs[-days:-1].max()

hc = closes[-days:-1].max()

ll = lows[-days:-1].min()

lc = closes[-days:-1].min()

#读取今天的开盘价、最高价和最低价

lastBar = df_bars.iloc[-1]

openpx = lastBar["open"]

highpx = lastBar["high"]

lowpx = lastBar["low"]

'''

!!!!!这里是重点

1、首先根据最后一条K线的时间,计算当前的日期

2、根据当前的日期,对日线进行切片,并截取所需条数

3、最后在最终切片内计算所需数据

'''

#确定上轨和下轨

upper_bound = openpx + k1* max(hh-lc,hc-ll)

lower_bound = openpx - k2* max(hh-lc,hc-ll)

#读取当前仓位

curPos = context.stra_get_position(code)/trdUnit

if curPos == 0:

if highpx >= upper_bound:

context.stra_enter_long(code, 1*trdUnit, 'enterlong')

context.stra_log_text("向上突破%.2f>=%.2f,多仓进场" % (highpx, upper_bound))

#修改并保存

self.xxx = 1

context.user_save_data('xxx', self.xxx)

return

if lowpx <= lower_bound and not self.__is_stk__:

context.stra_enter_short(code, 1*trdUnit, 'entershort')

context.stra_log_text("向下突破%.2f<=%.2f,空仓进场" % (lowpx, lower_bound))

return

elif curPos > 0:

if lowpx <= lower_bound:

context.stra_exit_long(code, 1*trdUnit, 'exitlong')

context.stra_log_text("向下突破%.2f<=%.2f,多仓出场" % (lowpx, lower_bound))

#raise Exception("except on purpose")

return

else:

if highpx >= upper_bound and not self.__is_stk__:

context.stra_exit_short(code, 1*trdUnit, 'exitshort')

context.stra_log_text("向上突破%.2f>=%.2f,空仓出场" % (highpx, upper_bound))

return

def on_tick(self, context:Context, stdCode:str, newTick:dict):

return

python期货程序化交易高手心得_10分钟打造WonderTrader上的期货日内交易策略相关推荐

  1. python期货程序化交易高手心得_位顶级高手谈期货心得

    位顶级高手谈期货心得 王向洋 14 年期货生涯,多次获得全国期货实盘大赛冠军,曾创造的最高收益率为 5 个 月 54 倍. 期货中国网访谈精彩语录: 比赛时操盘的冒险精神强很多. 在和高手过招中你会思 ...

  2. python期货程序化交易高手心得_11位顶级高手谈期货心得

    位,再多钱也是没有用的. 外盘的价 格变化是国外交易商的预期,跟国内的预期不完全吻合. 我不会去使用程序化交易,我认为程序化交易是有局限性的. 价格是变化的,你很难用一个框子来框它! 有时候期货交易它 ...

  3. python期货程序化交易高手心得_程序化交易高手的交易心得 分享~

    总体来说, 一.行情研判模块 行情研判模块是主要为资金管理和交易策略服务的.如果除去这一点,所有的行情研判就都失去了目标也就没有办法设立标准,当然也就没有了实际的意义.预测是研判的一部分,但是研判不仅 ...

  4. python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...

    原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...

  5. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  6. python微信朋友圈刷图_10分钟用Python做个微信朋友圈抽奖九宫格

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路. 制作图的过程也不复杂,长图对应部分设计好 ...

  7. python微信公众号翻译功能_10分钟教你用Python实现微信翻译机器人

    相信大家在日常学习或者是阅读英文文章的过程中,难免会出现几个不认识的单词,或者想快速翻译某段英文的意思. 今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手.好吧,开始干活. 先来看看 ...

  8. python turtle画四叶草的步骤_10分钟轻松学会 Python turtle 绘图

    先说明一下turtle绘图的基础知识: 1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置 1.1 设置画布大小 turtle.screensiz ...

  9. 放弃文华财经,自己编程实现期货程序化交易

    一.目前期货程序化现状: 由于有免费的CTP接口,期货程序化交易目前比较普遍,很多人都尝试过在文华财经.金字塔之类的软件上回测和编写实盘策略. 期货程序化交易有很多优点:程序会按照设计自动执行,不受任 ...

  10. 基于日内交易特征的因子选股策略

    摘要: 个股的日内交易特征是当日交易关键要素的概况.通过多维度刻画一段时间内高开低收以外的日内交易细节信息,使得低频交易成为可能. 利用个股分钟级别的量价数据构造月频因子,我们更为推荐两步算法:首先刻 ...

最新文章

  1. 端口聚合与Trunk综合配置
  2. [JavaScript] 设置函数同名变量为false会导致函数无法执行
  3. 阿里云专访Redisson作者Rui Gu:构建开源企业级Redis客户端之路
  4. 怎么创建数据表的实体类和业务类_微服务项目第13天:商品分类业务的实现
  5. matlab实现线性规划
  6. ssh问题:ssh_exchange_identification: Connection closed by remote host
  7. 小程序解决方案 Westore - 组件、纯组件、插件开发
  8. CXF 生成Web Service Client(将WSDl 转化成 Java代码)
  9. 从 VMWare 到阿里神龙,虚拟化技术 40 年演进史
  10. 洛谷P5108 仰望半月的夜空(后缀数组)
  11. redmine cannot load such file – rbpdf-font
  12. DataFrame的构建及一些操作
  13. 解决浏览器兼容性问题
  14. python爬取内容_Python爬取小说内容
  15. 扫雷游戏代码+代码分析
  16. Mysql8数据库导到Mysql5数据库,报错Unknown collation: 'utf8mb4_0900_ai_ci'
  17. C++ 有理数运算符重载
  18. 深度学习大神都推荐入门必须读完这9篇论文
  19. 【IJCAI 2016】Modularity Based Community Detection with Deep Learning 阅读小记
  20. 7-3 垃圾分类 (20分)

热门文章

  1. 【电脑使用】桌面图标有蓝底怎么去掉
  2. 幻读Java_关于幻读 - hellopretty - 博客园
  3. 加州ucla 计算机学校,美国加州大学洛杉矶分校UCLA计算机硕士CS录取
  4. Inoventica干线网络,600 Gbit / s。
  5. B. Silly Mistake(模拟、思维)
  6. 开关二极管的工作原理
  7. 读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,逻辑修辞之学使人善辩:凡有所学,皆成性格。
  8. Word文档中统一字符串八大妙法(转)
  9. CAD2018下载AutoCAD2018下载AutoCAD2018安装详细教程
  10. 2022-2028全球姿势矫正器行业调研及趋势分析报告