QMT /Ptrade是一款面向个人投资者,尤其是中高净值个人投资者的专业交易系统。系统采用先进的技术框架,具有功能丰富、风控全面、管理灵活、架构精简、高效稳定等核心优势。PTrade终端不仅支持多品种普通交易、日内回转交易、量化交易等场景;还集成了期权组合交易、期权无风险套利、期权风险管理、Alpha对冲套利等多种策略交易工具;对接算法交易平台(日内算法、拆单算法等),满足投资者对交易算法的需求。

Python量化交易平台:QMT /Ptrade(日内交易策略示例)

import pandas as pd
import numpy as np
import datetime

def initialize(context):
    g.cfgfile = get_research_path() + 'demo/data/yangxianstock.csv'
    g.dfconfig = pd.read_csv(g.cfgfile, header=0, index_col='stock_code')
    #股票代码
    g.security = list(g.dfconfig.index)         #取出股票池
    g.buyAmount=list(g.dfconfig.buy_amount)     #取出买入数量
    set_universe(g.security)
    if is_trade():
        log.info('-----trade-------')
    else:
        set_fixed_slippage(0.0)

g.df=pd.DataFrame(0.0,index=g.security,columns =['open','close']).T
    #初始化标志
    g.isRed=[0]*len(g.security)    #是否是阳线
    g.isBuy=[1]*len(g.security)    #是否在卖出后,先遇到阴线,再遇到阳线,默认为1表示首次是阳线就买入不用管阴线

#20170731 add wangwei 
    g.isOpenGet=[0]*len(g.security)    #是否开盘价已经获取
    
def single_stock(context, data, code,i):
    currentTime = context.blotter.current_dt + datetime.timedelta(hours=8)
    year=context.blotter.current_dt.year
    month=context.blotter.current_dt.month
    day=context.blotter.current_dt.day
    hours=currentTime.hour
    minute=currentTime.minute
    second=currentTime.second
    currentTime=datetime.datetime.combine(datetime.date(year,month,day),datetime.time(hours,minute,second))
    if(currentTime==g.targetBuyTime):
        log.info(code+'---开盘价-------'+str(g.df[code]['open']))
        log.info(code+'---收盘价-------'+str(g.df[code]['close']))
        if(g.df[code]['close']-g.df[code]['open'])>0 and (g.isRed[i]==0) and (g.isBuy[i]==1):
            log.info(code+'---遇到阳线,开仓买入')
            order_value(code, g.buyAmount[i])
            g.isRed[i]=1
            return
        
        if((g.df[code]['close']-g.df[code]['open'])<0 ) and  (g.isBuy[i]==0) :
            log.info(code+'---遇到阴线,不买入')
            g.isBuy[i]=1 #卖出之后,遇到阴线,置为1,下次再遇到阴线之间买入

yesCLosePrice=g.yesclosedf[code][0]    #昨日收盘价
    highestPrice=yesCLosePrice*1.1      #涨停价
    priceLast=data[code].close          #这一分钟的价格
    log.info(code+'---当前价-------'+str(priceLast))
    log.info(code+'---涨停价-------'+str(highestPrice))
    #如果昨天已经开仓,并且小于涨停价,那么全部卖出
    if(g.isRed[i]==1) and (currentTime==g.targetSellTime) and priceLast<highestPrice:
        log.info(code+'---昨天已经买入,没有涨停,收盘不论今天价格如何都卖出')
        order_target(code,0)
        g.isRed[i]=0
        g.isBuy[i]=0  #卖出之后,需要置为0,等遇到阴线的下一个阳线再置为1
        
def before_trading_start(context, data):
    g.hisdf = get_history(1, '1d', 'low', security_list=g.security,fq='dypre')
    g.yesclosedf = get_history(1, '1d', 'close', security_list=g.security,fq='dypre')
    g.tdopendf = get_history(1, '1d', field='open', security_list=g.security, include=True)
    
def handle_data(context, data):
    
    #交易时才调用,回测需要注释掉
    currentTime = context.blotter.current_dt + datetime.timedelta(hours=8)
    year=context.blotter.current_dt.year
    month=context.blotter.current_dt.month
    day=context.blotter.current_dt.day
    hours=currentTime.hour
    minute=currentTime.minute
    second=currentTime.second
    #格式化当前时间
    currentTime=datetime.datetime.combine(datetime.date(year,month,day),datetime.time(hours,minute,second))
    
    #构造9点31分这个开盘时间
    d=context.blotter.current_dt.strftime("%Y-%m-%d")
    d = datetime.date(year,month,day)
    t = datetime.time(9,31,0) 
    g.targetOpenTime=datetime.datetime.combine(d,t)
    
    #构造14点45分这个卖出时间
    d=context.blotter.current_dt.strftime("%Y-%m-%d")
    d = datetime.date(year,month,day)
    t = datetime.time(14,45,0) 
    g.targetSellTime=datetime.datetime.combine(d,t)
    
    #构造14点50分这个买入时间
    d=context.blotter.current_dt.strftime("%Y-%m-%d")
    d = datetime.date(year,month,day)
    t = datetime.time(14,50,0) 
    g.targetBuyTime=datetime.datetime.combine(d,t)
    
    
    i=0
    #遍历代码池
    for code in g.security:
        if(currentTime<g.targetSellTime):
            yesLowPrice=g.hisdf[code]    #昨日最低价
            priceLast=data[code].close     #这一分钟的价格
            if(g.isRed[i]==1) and (priceLast<yesLowPrice[0]):  #如果最新的价格小于昨日的最低价
                log.info(code+'---昨最低价'+str(yesLowPrice[0]))
                log.info(code+'---当前分钟最新价'+str(priceLast))
                order_target(code,0)
                log.info(code+'---昨日已经买入,当前分钟最新价格小于昨最低价,止损卖出')
                g.isRed[i]=0
                g.isBuy[i]=0  #卖出之后,需要置为0,等遇到阴线的下一个阳线再置为1
              
                
        if(currentTime==g.targetOpenTime):
            g.df[code]['open']=data[code].open    #9点30分算作开盘价
            g.isOpenGet[i]=1
        #如果时间大于开盘时间,直接取开盘价
        if is_trade():
            if(currentTime>g.targetOpenTime) and g.isOpenGet[i]==0:
                log.info(g.tdopendf[code][0])
                g.df[code]['open']=g.tdopendf[code][0]
                g.isOpenGet[i]=1
                log.info(code+'---已经开盘,通过历史函数获取开盘价为'+str(g.df[code]['open']))
    
    
        if(currentTime==g.targetBuyTime):
            g.df[code]['close']=data[code].close  #14点50分算作收盘价
        
        #只有在买入和卖出时间才会进入函数下单动作
        if(currentTime==g.targetBuyTime) or (currentTime==g.targetSellTime):
            single_stock(context, data, code,i)
            
            
        #当天结束后,重置开盘价和收盘价
        if(currentTime>g.targetBuyTime):
            g.df[code]['open']=0.0    
            g.df[code]['close']=0.0
            g.isOpenGet[i]=0

i=i+1

#:个人投资者30万门槛可申请迅投QMT、恒生PTrade量化交易系统。

Python量化交易平台:QMT (日内交易策略示例)相关推荐

  1. Python量化交易平台QMT: 极速策略交易系统一体化交易解决方案

    1.QMT简介 极速策略交易系统( QMT )是专门为机构.活跃投资者.高净值客户等专业投资者研发的智能量化交易终端,拥有高速行情.极速交易.策略交易.多维度风控等专业功能,满足专业投资者的特殊交易需 ...

  2. 5种经典程序化日内交易策略

    日内交易一般有手工和程序化两种,收益来说手工收益要大于程序化. 国内程序化交易还处于起步阶段,本文摘取了海外比较公开的日内交易策略思想给予大家一些分享. 在做程序化交易的过程中,首先要碰到的问题是如何 ...

  3. Python量化交易平台:JQData | API使用文档(转)

    Python量化交易平台:JQData | API使用文档(转) #原文地址:https://www.joinquant.com/help/api/help?name=JQData JQData说明书 ...

  4. SF25 | 日内交易策略开发(一)黄金日内交易模型

    致力于分享量化策略,培训视频,Python,算法研究等相关内容. 这一期SF策略我们来开发一个日内模型,交易品种为黄金: 手续费滑跳设定为实盘标准: 步骤一:波动率过滤 我们发现黄金在2019年以前的 ...

  5. 一个短线日内交易策略 ——R-Breaker

    R-Breaker是一种短线日内交易策略,该策略已经在市场上存活了二十年之久,尤其当指数波动较大时,该策略表现越好,根据S&P至2011年底的统计,R-Break也多次名列前十,由于进入榜单的 ...

  6. 史上五种经典程序化日内交易策略

    1. 菲阿里四价 昨天高点.昨天低点.昨日收盘价.今天开盘价,可并称为菲阿里四价.它由日本期货冠军菲阿里实盘采用的主要突破交易参照系. 主要特点: 日内交易策略,收盘平仓: 菲阿里四价指昨日高点.昨日 ...

  7. Python量化交易平台开发教程系列1-类CTP交易API的工作原理

    原创文章,转载请注明出处:用Python的交易员 类CTP交易API简介 国内程序化交易技术的爆发式发展几乎就是起源于上期技术公司基于CTP柜台推出了交易API,使得用户可以随意开发自己的交易软件直接 ...

  8. Python量化交易平台开发教程系列4-事件驱动引擎原理和使用

    原创文章,转载请注明出处:用Python的交易员 前言 从这篇开始,后面的教程都会基于Python(终于可以跟C++说再见了). 经过上一篇复杂繁琐的API编译后,我们已经有了一个可以在Python环 ...

  9. Python量化交易平台开发教程系列5-底层接口对接

    原创文章,转载请注明出处:用Python的交易员 前言 从本篇教程开始,所有的开发都会在Python环境中进行(谢天谢地可以和C++说再见了). 通常情况下,一个交易程序的架构会由以下三个部分组成: ...

  10. [转载]Python量化交易平台开发教程系列0-引言

    原文出处:http://vnpy.org/2015/03/04/20150304_Python%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B ...

最新文章

  1. HJ86 求最大连续bit数
  2. LINUX下的21个特殊符号 转
  3. 并发环境下HashMap引起的full gc排查
  4. LinQ高级查询、组合查询
  5. group_concat默认长度限制
  6. 中煤保险 公司举办“虎啸杯”保险知识竞赛活动
  7. ie的window.open 未指明的错误_快递问题公告中错误使用“黑恶势力”等言辞 青岛工学院致歉...
  8. libjpeg学习1:简单使用示例
  9. 【车牌识别】基于matlab投影模板匹配车牌识别【含Matlab源码 1359期】
  10. 怎么通过服务器性能计算tpmc,如何对服务器性能计算的公式参考(tpmc-tpcc)...pdf
  11. INS 图片/视频保存
  12. Java--------面向对象
  13. 把Date类型的Fri Feb 01 00:00:00 CST 2019转换成yyyy-MM-dd格式
  14. java id 锁_java 多线程synchronized同步锁锁住相同用户Id
  15. 新买的电脑是win11系统,找不到DirectX工具?教你如何操作打开
  16. 1.2:文本文件的加密
  17. 《Cocos Creator游戏实战》旋转循环页视图实现
  18. 小强期中考试(考察1-9章)
  19. 张爱玲的10大爱情名言
  20. 关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

热门文章

  1. 中国国家地理高清晰的PDF书籍系列经典珍藏版
  2. 人工神经网络通俗解释
  3. win8笔记本做wifi热点设置教程
  4. poi事件模式读取excel
  5. 分享雷柏无线鼠标接收器损坏后的更换方法
  6. 基于SSM的手机商城-JAVA【数据库设计、源码、开题报告】
  7. 当我想深入遗留代码一探究竟的时候
  8. 麦吉尔 计算机科学学分,麦大毕业要求深度解析,还你一个真实的麦吉尔大学!...
  9. 中国Android应用商店汇总
  10. pray例子----------------------设置navigation 与 其按钮背景