咨询内容:
# encoding: UTF-8
“””
自动交易-买
“””
from __future__ import division
import talib
import math
“import win32api,win32con”
from iTraderPy.ctp_data_type import *
from iTraderPy.StrategyBase import *
from iTraderPy.mtConstant import *
from iTraderPy.exportObj import *
import datetime
########################################################################
class AutoTradeLong(StrategyBase):
“”””””
name = u’自动交易-买’ # 策略实例名称
# 变量列表。可将需要在管理界面显示的变量名加到此处(注意基类已在basevarList中定义显示部份变量,这些变量不需再定义)
varList = []
# 参数列表,可将需要在管理界面显示的参数名加到此处
paramList = []
#———————————————————————-
” def __init__(self, ctaEngine, strategyid):”
“””Constructor”””
” super(AutoTradeLong, self).__init__(ctaEngine, strategyid)”
#继承修改基类变量,若不需修改,也可不继承
self.rtnAllTrade = False # 是否返回所有交易,若是,则不是本策略产生的交易也会被返回,否则,只返回本生策略提交的交易
self.autoGeneratorBar = False #不生成Bar
self.timerId = 1 # 定义timerid
self.clearBeginTime = “14:58:00″#清仓时间
self.clearEndTime = “15:00:00”
self.insInfo = None # 合约信息
self.stepTickNum = 4 # 止盈或加仓判断的价格Tick数量
self.tradeNum = 1 #每次交易的数量
self.tradeDirect = 0 #交易的方向,0:买多,卖空
self.symbol = “MA909” # 交易的合约
self.symbolList = [self.symbol]
self._InitData() #初始化数据
# ———————————————————————-
def _InitData(self):
“””重新初始化数据。”””
self.bStartTraded = False # 是否已启动交易
self.curActivePrice = 0 # 当前交易成交的价位
self.PosRemainNum = 0 # 仓位保留的次数
self.bOpening = False # 是否正在开仓
self.forbidTrade = False # 是否已禁止交易
# ———————————————————————-
def onInit(self):
“””在策略第一次启动时被调用。用户可继承实现。”””
pass
# ———————————————————————-
def onStart(self):
“””在策略启动时被调用。用户可继承实现。”””
self._InitData() #初始化数据
self.insInfo = self.get_instrmentinfo(self.symbol)
if self.insInfo == None:
sMessageText = “获得合约信息失败,请检查配置的合约!”
” win32api.MessageBox(0, sMessageText, “”提示””, win32con.MB_ICONWARNING)”
return START_FAILD
” self.setTimer(self.timerId, 1000, self._onTimerFun)#启动计时器”
self.subSymbol(self.symbol) # 订阅行情
# ———————————————————————-
def onStop(self):
“””在策略停止时被调用。用户可继承实现。”””
pass
# ———————————————————————-
” def onTick(self, tickInfo):”
“””收到tick推送的处理函数,用户可继承实现。
tickInfo为TickInfo类型数据”””
if self.forbidTrade or self.bOpening:#开仓还未返回,则不加新的仓
return
if not self.bStartTraded: #第一次开仓
self.bStartTraded = True
marketPrice = tickInfo.upperLimit if self.tradeDirect == 0 else tickInfo.lowerLimit#以涨跌停价模拟市价
self.logs(‘第一次开仓,价格=’+str(marketPrice))self.forbidTrade = True #禁止新的交易self.unSubSymbol(self.symbol) # 订阅行情self._cancelAllPendingOrder() # 移除所有的未成交委托self.killTimer(timerId)#移除定时器return 0return 1except Exception as e:self.logs(“Exception: onStart ” + str(e))
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208061 人正在系统学习中 相关资源:倒计时软件.exe_倒计时电脑软件-管理软件工具类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!