策略源码


"""
关注公众号: Ctp接口量化"""
from _ctp import *
class MACDStrategy(Strategy):def __init__(self):super().__init__()self.symbol_lsit = ["m2105","ni2104","rb2105","ag2106","IF2103","IC2103","i2105","j2105"]  #订阅合约self.bar_time = BarType.Min  #订阅K线周期  秒级 BarType.Time3  Time5  Time15  Time30       分钟级  BarType.Min、  Min3 、 Min5 、 Min15 、 Min30 、 Min60self.volume = {"m2105":{"总持仓":3,"止损":0,"止盈":0,"移动止损":0},"ni2104":{"总持仓":1,"止损":0,"止盈":0,"移动止损":0},"rb2105":{"总持仓":5,"止损":0,"止盈":0,"移动止损":0},"ag2106":{"总持仓":2,"止损":0,"止盈":0,"移动止损":0},"IF2103":{"总持仓":1,"止损":0,"止盈":0,"移动止损":0},"IC2103":{"总持仓":1,"止损":0,"止盈":0,"移动止损":0},"i2105":{"总持仓":5,"止损":0,"止盈":0,"移动止损":0},"j2105":{"总持仓":2,"止损":0,"止盈":0,"移动止损":0}}  #下单手数def on_trade(self, trade):print(trade)# def on_tick(self, tick=None):# print(tick.InstrumentID,tick.LastPrice)  def on_bar(self, tick=None, Bar=None):symbol = tick.InstrumentID   #合约代码Bid = tick.BidPrice1    #买价Ask = tick.AskPrice1    #卖价LastPrice = tick.LastPrice  #最新价# print(Bar[0]["symbol"]) #合约kline = Bar[0]["data"]    # K 线数据# if len(kline) <= 35:   # 小于35 条 退出 # return   # K,D,J  = self.KDJ(kline) # 取KDJ指标数组# UP,MB,DN  = self.BOLL(kline) # 取BOLL指标数组# EMA  = self.EMA(kline,60) # 取EMA指标数组# RSI  = self.RSI(kline) # 取RSI指标数组# MA1  = self.MA(kline,30) # 取MA指标数组# MA2  = self.MA(kline,60) # 取MA指标数组dif,dea,macd  = self.MACD(kline) # 取MACD指标数组close,High,low = self.tick(kline)      # 取收盘价数组 # 获取最新价格(卖价)# print(self.Get_Position(symbol))      # 返回多条持仓Position = self.GetPosition(symbol)     # 返回一条持仓# print(Position)# print(self.GetData(symbol))   # 获取k历史数据# # 开多单if Position["方向"]=="None" and dif[-1]>dea[-1] and dif[-2] < dea[-2] and dea[-1] > 0:print("MACD策略开多")self.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, self.volume[symbol]["总持仓"], OrderType.Limit)  # # OrderType.FOK """全部完成,否则撤销"""  OrderType.FAK """部分成交,剩余撤销"""  OrderType.Market 市价   OrderType.Limit 限价self.volume[symbol]["移动止损"] = low[-5]self.volume[symbol]["止损"] = low[-5]self.volume[symbol]["止盈"] = Ask + (Ask-low[-5])*3# # # 开空单if Position["方向"]=="None" and dif[-1]<dea[-1] and dif[-2] > dea[-2] and dea[-1] < 0:print("MACD策略开空")self.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, self.volume[symbol]["总持仓"], OrderType.Limit)   # # OffsetType.Open 开仓,   OffsetType.Close 平仓,   OffsetType.CloseToday 平今 , OffsetType.CloseYesterday 平昨self.volume[symbol]["移动止损"] = High[-5]self.volume[symbol]["止损"] = High[-5]self.volume[symbol]["止盈"] = Bid - (High[-5]-Bid)*3            # # # 平多单if Position["方向"]=='Long' and LastPrice <= Position["移动止损"] and Position["移动止损"] != 0 or Position["方向"]=="Long" and dif[-1]<dea[-1] and dif[-2] > dea[-2] or Position["方向"]=="Long" and self.volume[symbol]["止损"] !=0 and LastPrice <= self.volume[symbol]["止损"] or Position["方向"]=="Long" and self.volume[symbol]["止损"] !=0 and LastPrice >= self.volume[symbol]["止盈"]:self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Position["总持仓"], OrderType.Limit)   #    OffsetType.Close 已优化 适应 上期所 平今 平昨  的区别   self.volume[symbol]["止损"] = 0self.volume[symbol]["止盈"] = 0self.volume[symbol]["移动止损"] = 0            # # # 平空单        if Position["方向"]=='Long' and LastPrice >= Position["移动止损"] and Position["移动止损"] != 0 or Position["方向"]=="Short" and dif[-1]>dea[-1] and dif[-2] < dea[-2] or Position["方向"]=="Short" and self.volume[symbol]["止损"] !=0 and LastPrice >= self.volume[symbol]["止损"] or Position["方向"]=="Short" and self.volume[symbol]["止损"] !=0 and LastPrice <= self.volume[symbol]["止盈"]:self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Position["总持仓"], OrderType.Limit)self.volume[symbol]["止损"] = 0self.volume[symbol]["止盈"] = 0 self.volume[symbol]["移动止损"] = 0 # # 多单 修改移动止损价if Position["方向"]=='Long' and (LastPrice - self.volume[symbol]["移动止损"]) > (Position["开仓价"] - self.volume[symbol]["止损"]):self.volume[symbol]["移动止损"] = LastPrice - (Position["开仓价"] - self.volume[symbol]["止损"])# # 空单 修改移动止损价if Position["方向"]=='Short' and (self.volume[symbol]["移动止损"] - LastPrice) > (self.volume[symbol]["止损"] - Position["开仓价"]):self.volume[symbol]["移动止损"] = LastPrice + (self.volume[symbol]["止损"] - Position["开仓价"])if __name__ == '__main__':# 配置 = {'经纪商代码':'9999', '用户名':'123456', '密码':'******', '产品名称':'simnow_client_test', '授权编码':'0000000000000000', '产品信息':'python dll', '交易服务器':'tcp://180.168.146.187:10130', '行情服务器':'tcp://180.168.146.187:10131'}配置 = {'经纪商代码':'9999', '用户名':'123456', '密码':'******', '产品名称':'simnow_client_test', '授权编码':'0000000000000000', '产品信息':'python dll', '交易服务器':'tcp://180.168.146.187:10101', '行情服务器':'tcp://180.168.146.187:10111'}登陆 = CTP(MACDStrategy())登陆.Login(配置)

CTP原生接口MACD多品种止盈止损源码相关推荐

  1. 通达信交易接口可以设定自动止盈止损吗?

    虽然现在的量化软件越来越多,实现的执行效果也是存在差异,但也为不少交易者提供了方便.虽然有不少的投资用户在问通达信交易接口可以设定自动止盈止损吗?在小编看来,目前还不支持.但如果是SNB股票自动交易的 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Less 命令技巧,从底部网上看
  2. 流程控制_月隐学python第4课
  3. Python3中遇到UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in ordinal not in range(128)
  4. ascii码扩展 php,php与ascii码
  5. php excel 函数,php实现excel中rank函数功能的方法
  6. pytorch查看loss曲线_pytorch loss总结与测试
  7. 致敬 HarmonyOS 不平凡的 2020,热情背后还有多少期待
  8. Azure Machine Learning的新特性
  9. 手把手教你win10下lex与yacc的安装
  10. 校准 Linux 服务器的时间
  11. Python中的变量作用域,LEGB规则和闭包原理
  12. [BZOJ1921] [CTSC2010]珠宝商
  13. c语言编程坦克图案,用C语言的图像函数画一个简单的坦克图样
  14. 配置VS2019 执行cu文件
  15. 【2022 CCPC 华为云计算挑战赛】1005 带权子集和 (NTT 优化dp)
  16. 触动千亿电商市场 BitCherry星耀雅加达
  17. 网站怎么快速优化关键词排名?
  18. 经验分享 | 文献调研 - Connected Papers
  19. Unity的Package了解(2020.3)
  20. 护网HVV(蓝队)小白必知必会

热门文章

  1. mac音乐雷达:Shazam for Mac
  2. [苹果开发者账号]05 换收款的银行账号
  3. 【项目】offline danmu启动
  4. python用print输出不同颜色字体
  5. 数据中心存储日常运维【13】
  6. [日语]基于1006个小学生用字的音读到汉字的映射表
  7. python数据分析网上培训
  8. 招聘前端面试应该问的问题
  9. 托福高频真词List11 // 附托福TPO阅读真题
  10. 孟岩:开源应该做到真正意义上的分布式协作