天勤python_天勤量化策略库:菲阿里四价策略

文章策略均基于开源免费,简单强大的Python量化开发包——天勤量化(TqSdk)实现

菲阿里四价策略故事

在2000年7月,日本举办了首次“ROBBINS-TAICOM期货冠军比赛”,总共比赛历时半年。从第一周起,一位名叫Fairy(菲阿里)的先生便位居首位,其后也进展顺利,不断增加收益率,结果位居首位的他一次也未将首位让于他人,从而创造了1089%的惊人战绩,荣获了比赛的冠军,此后菲阿里和本次比赛的亚军亚军炭谷道孝合著了一本书——《1000%的男人——期货冠军奇迹的买卖方法》,由于这本书是以日记的形式写作,所以你很难看到菲阿里总结的交易理论和交易方法。除非你研究他每笔交易和所配的图形,再根据他的文字提炼出他的方法。但由于日本人的写作风格和一些翻译问题,这也很难做的到。

至于菲阿里四价,则是后人总结的菲阿里交易方法。

策略原理(策略源码在最后)

上轨=昨日最高点;

下轨=昨日最低点;

昨日收盘价(不在策略中使用,作为参考指标)

今日开盘价

from tqsdk import TqApi, TargetPosTask

symbol = "SHFE.au1912" # 合约代码

api = TqApi() # 使用模拟帐号直连行情和交易服务器

klines = api.get_kline_serial(symbol, 24 * 60 * 60) # 获取日线

top_rail = klines.high.iloc[-2] # 上轨: 昨日高点

bottom_rail = klines.low.iloc[-2] # 下轨: 昨日低点

print("上轨:", top_rail, ",下轨:", bottom_rail, ",昨日收盘价:", klines.close.iloc[-2], ",今日开盘价:", klines.open.iloc[-1])

开仓策略

价格向上突破上轨做多

价格向下突破下轨做空

# 开仓突破

if quote.last_price > top_rail and position.pos_long == 0: # 如果价格突破上轨: 买入开仓

print("最新价:", quote.last_price, ", 价格突破上轨,买入开仓")

target_pos.set_target_volume(3) # 设置目标持仓手数,将指定合约调整到目标头寸

elif quote.last_price < bottom_rail and position.pos_short == 0: # 如果价格跌破下轨: 卖出开仓

print("最新价:", quote.last_price, ", 价格跌破下轨, 卖出开仓")

target_pos.set_target_volume(-3)

平仓策略

1.止损平仓: 当价格 向上突破上轨 或 向下突破下轨 后, 再次回破当日开盘价

2.收盘定时平仓

if api.is_changing(quote, "last_price"): # 如果行情最新价发生变化

# 平仓止损: 当价格 向上突破上轨 或 向下突破下轨 后, 再次回破当日开盘价

if (quote.highest > top_rail and quote.last_price <= quote.open) or (

quote.lowest < bottom_rail and quote.last_price >= quote.open):

print("平仓止损")

target_pos.set_target_volume(0)

if api.is_changing(quote, "datetime"):

now_time = datetime.strptime(quote.datetime, "%Y-%m-%d %H:%M:%S.%f") # 获取当前的行情时间

if now_time.hour == close_hour and now_time.minute >= close_minute: # 到达平仓时间: 平仓

print("临近本交易日收盘: 平仓")

target_pos.set_target_volume(0)

deadline = time.time() + 60 # 设置截止时间为当前时间的60秒以后

while api.wait_update(deadline=deadline): # 等待60秒

pass

api.close() # 关闭api

break # 退出while循环

回测

初始账户资金:1000万

回测日期:2019.07.17-2019.09.18

多、空头开仓手数:60手

合约: SHFE.au1912

天勤内策略源码

#!/usr/bin/env python

# -*- coding: utf-8 -*-

__author__ = 'limin'

'''

菲阿里四价(日内突破策略, 在每日收盘前对所持合约进行平仓)

注: 该示例策略仅用于功能示范, 实盘时请根据自己的策略/经验进行修改

'''

from tqsdk import TqApi, TargetPosTask

from datetime import datetime

import time

symbol = "SHFE.au1912" # 合约代码

close_hour, close_minute = 14, 50 # 平仓时间

api = TqApi() # 使用模拟帐号直连行情和交易服务器

quote = api.get_quote(symbol) # 获取指定合约的盘口行情

klines = api.get_kline_serial(symbol, 24 * 60 * 60) # 获取日线

position = api.get_position(symbol) # 持仓信息

target_pos = TargetPosTask(api, symbol) # 目标持仓

top_rail = klines.high.iloc[-2] # 上轨: 昨日高点

bottom_rail = klines.low.iloc[-2] # 下轨: 昨日低点

print("上轨:", top_rail, ",下轨:", bottom_rail, ",昨日收盘价:", klines.close.iloc[-2], ",今日开盘价:", klines.open.iloc[-1])

while True:

api.wait_update()

if api.is_changing(klines.iloc[-1], "datetime"): # 如果产生一根新日线 (即到达下一个交易日): 重新获取上下轨

top_rail = klines.high.iloc[-2]

bottom_rail = klines.low.iloc[-2]

print("上轨:", top_rail, ",下轨:", bottom_rail, ",昨日收盘价:", klines.close.iloc[-2], ",今日开盘价:", klines.open.iloc[-1])

if api.is_changing(quote, "last_price"): # 如果行情最新价发生变化

print("当前最新价", quote.last_price)

# 开仓突破

if quote.last_price > top_rail and position.pos_long == 0: # 如果价格突破上轨: 买入开仓

print("最新价:", quote.last_price, ", 价格突破上轨,买入开仓")

target_pos.set_target_volume(3) # 设置目标持仓手数,将指定合约调整到目标头寸

elif quote.last_price < bottom_rail and position.pos_short == 0: # 如果价格跌破下轨: 卖出开仓

print("最新价:", quote.last_price, ", 价格跌破下轨, 卖出开仓")

target_pos.set_target_volume(-3)

# 平仓止损: 当价格 向上突破上轨 或 向下突破下轨 后, 再次回破当日开盘价

if (quote.highest > top_rail and quote.last_price <= quote.open) or (

quote.lowest < bottom_rail and quote.last_price >= quote.open):

print("平仓止损")

target_pos.set_target_volume(0)

if api.is_changing(quote, "datetime"):

now_time = datetime.strptime(quote.datetime, "%Y-%m-%d %H:%M:%S.%f") # 获取当前的行情时间

if now_time.hour == close_hour and now_time.minute >= close_minute: # 到达平仓时间: 平仓

print("临近本交易日收盘: 平仓")

target_pos.set_target_volume(0)

deadline = time.time() + 60 # 设置截止时间为当前时间的60秒以后

while api.wait_update(deadline=deadline): # 等待60秒

pass

api.close() # 关闭api

break # 退出while循环

点击访问天勤量化,开源免费,简单强大的Python量化开发包!天勤量化 - 信易科技​www.shinnytech.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人宣传画

转载于:https://www.cnblogs.com/yellowyu/archive/2010/04/19/1715735.html

touch 连续创建文件_touch命令 – 创建文件

touch命令有两个功能&#xff1a;一是创建新的空文件&#xff0c;二是改变已有文件的时间戳属性。touch命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在&#xff0c;将会创建新的空文件&#xff0c;除非指定了”-c”或”-h”选项。注意&#xff1a;…

转载CTF

1.MD5 compare漏洞 PHP在处理哈希字符串时&#xff0c;会利用”!”或””来对哈希值进行比较&#xff0c;它把每一个以”0E”开头的哈希值都解释为0&#xff0c;所以如果两个不同的密码经过哈希以后&#xff0c;其哈希值都是以”0E”开头的&#xff0c;那么PHP将会认为他们相同…

java jtable刷新_java-单击按钮更新JTable

I have searched on stackoverflow and a couple of people have said to use that method.不,您不应在TableModel本身的上下文之外调用任何fireTableXxx方法,否则人们会认为这完全是错误的,将来会给您带来麻烦.从代码的外观来看,什么都没有改变.如果您已根据上一个问题中提供的…

韩寒说世博会

先声明:我不是韩寒的什么粉丝,也不太关注这些作家的事情,希望这些文字能让你想到一些什么东西...........转载自:http://tieba.baidu.com/f?kz752703402 最近&#xff0c;老是有媒体要关于世博会采访我&#xff0c;我觉得很为难&#xff0c;如果我赞美他吧&#xff0c;估计我良…

windows系统下的云服务器部署tomcat

在环境配置没问题的基础下&#xff0c;如果启动服务器缺无法打开默认页面&#xff0c;则很有可能说明是你的端口问题&#xff1a; 这里我的解决方法&#xff1a; 控制面板-->系统和安全-->Windows 防火墙-->高级设置-->入站规则-->新建规则 依次选择端口-->…

营销公式

世界上最难得事情就是将别人的钱放到自己口袋。 要想别人给钱&#xff0c;首先要有控制别人的能力&#xff0c;例子&#xff0c;奴隶主能控制奴隶。 权力是来钱的关键因素。也就是说应该增加别人对你的依赖。 人们的弱点&#xff1a; 1.只看到短期利益&#xff0c;往往忽视长期…

centos修改磁盘uuid_Centos更换损坏硬盘UUID改变导致系统不能正常启动处理

Centos更换损坏硬盘UUID改变导致系统不能正常启动处理一、适用场景本文档的适用场景为&#xff0c;更换硬盘导致系统启动时因UUID不同&#xff0c;导致挂载文件读取失败&#xff0c;系统不能正常启动&#xff0c;同时本文档的处理方法也适用于fstab文件配置出错导致无法启动系统…

git远程仓库上传及本地仓库创建

第一步&#xff1a;我们需要先创建一个本地的版本库&#xff08;其实也就是一个文件夹&#xff09;。 你可以直接右击新建文件夹&#xff0c;也可以右击打开Git bash命令行窗口通过命令来创建。 现在我通过命令行在桌面新建一个TEST文件夹&#xff08;你也可以在其他任何地方创…

强大js web甘特图制作之甘特图组件和数据对象

引用CSS和JS 使用EdoGantt是一件简单轻松的事&#xff0c;首先我们在HTML页面内引用CSS和JS&#xff1a; <!--edo css--><link href"http://www.cnblogs.com/scripts/edo/res/css/edo-all.css" rel"stylesheet" type"text/css" />&l…

华为安装gsm框架_华为谷歌框架安装app下载-华为谷歌服务框架安装器(GMS安装器)下载v1.2.0 最新版-西西软件下载...

华为谷歌服务框架安装器是专为华为手机用户打造的谷歌服务框架安装软件&#xff0c;让你可以一键在手机上安装谷歌框架&#xff0c;无需root即可一键安装谷歌框架&#xff0c;使用简单方便&#xff0c;欢迎有需要的朋友前来下载。软件介绍华为谷歌服务框架安装器(GMS安装器)是一…

Butterknife使用——转

转载请标明出处&#xff1a;http://blog.csdn.net/donkor_/article/details/77879630 前言&#xff1a; ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象&#xff0c;有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWha…

百度文档搜索与Google文档搜索的简单比较

很多有具有参考价值的资料&#xff0c;比如学生写论文报告&#xff0c;老师做课件&#xff0c;找工作准备简历都需要参考其他人的成果。在互联网上&#xff0c;这类资料一般不是普通的html网页&#xff0c;而是以Word、ppt(s)、Excel、pdf等格式存在的。虽然这些文件不象Html文…

使用宝塔部署node项目_使用宝塔面板进行项目的自动部署WebHook

首先你要知道什么是WebHook&#xff0c;如果你真的不想知道那也没关系。总之就是在你push到git仓库时会从git仓库触发一个http请求。关于http的地址根据你不同的git仓库有不同的方式去配置。首先配置宝塔面板&#xff0c;你需要安装宝塔插件中的 WebHook随便起一个名字然后保存…

git命令——转

github和gitlab等等一系列的分布式代码托管服务器方便我们开发人员在小组内开发项目&#xff0c;说起分布式代码托管就给大家提一下另外一代码托管SVN,当然他不是分布式的&#xff0c;而是集中式的代码托管&#xff0c;有兴趣的可以查阅资料了解一下&#xff0c;在这里我将着重…

17joys网站后台功能设计-阶段1

开始没想把网站设计的很完善再开始写代码&#xff0c;主要也是想通过不断的编写小模块&#xff0c;最后再整合在一起&#xff0c;这样也好记录我每个时间段的经验心得&#xff0c;在设计17joys的网站后台功能时&#xff0c;看了很多CMS系统&#xff0c;最后还是决定参考我最喜欢…

vue复选框组件自定义对勾_vue+element:树级复选框组件使用

handleCheck(checkedKeys,checkedNodes,halfCheckedKeys,halfCheckedNodes){var len 0,num 0;var _alen 0;var a [];var b [];var copyArr [];for (var i 0;i < checkedNodes.checkedNodes.length;i){//记录子节点的索引if (checkedNodes.checkedNodes[i].children nul…

汇编指令——转

今天来扒一扒X86汇编指令&#xff08;IA-32指令&#xff09;&#xff0c;首先看看它的概念&#xff1a; IA-32&#xff08;Intel Architecture 32bit&#xff0c;英特尔32位体系架构&#xff09;[1] &#xff0c;属于X86体系结构的32位版本&#xff0c;即具有32位内存地址和32…

生成颜色代码的 Java程序

在网页 http://flash.9ria.com/thread-33919-1-1.html 找到如下代码。他可以指定 开始颜色&#xff0c; 结束颜色&#xff0c; 以及 步长&#xff0c;函数返回一个 java 数组&#xff0c;数组中包含有颜色代码。 选择 开始颜色&#xff0c; 结束颜色时可以参见下面的 颜色代码表…

flutter生成源代码_Flutter创建工程的主要代码详解

使用Android Studio创建的默认Flutter工程主要代码在lib文件夹下的main.dart文件中&#xff0c;本文主要对该文件进行一个讲解。main.dart文件可以认为是Flutter工程的入口文件&#xff0c;文件顶部import package:flutter/material.dart;(即引入了一个dart文件&#xff0c;该文…