目录
一、模型介绍
1.使用pythonGO的策略模板实现最简单的划线交易
2.对系统中的基本运行和常见问题如命名,下单标志,下单方向有明确的认识
二、代码实现及整体注释
import datetime
from ctaBase import *
from ctaTemplate import * #引用pythonGo中给出的相应策略模板
class Test1(CtaTemplate): #让我们的类继承模板,名字Test1要和文件名保持一致,不然会报错
"""测试策略"""
className = "Test1"
varList = []
# 参数映射表
paramMap = {
'exchange': '交易所',
'vtSymbol': '合约',
'volume': '委托数量',
'price': '触发价格'
'direction': '下单方向'
}
paramList = list(paramMap.keys())
# 变量映射表
varMap = {
'trading': "交易中",
'pos': "持仓"
} #如果有指标的话,这里可以显示实时的指标运行情况,这里只看策略运行情况和持仓
def __init__(self, ctaEngine=None, setting={}):
"""Constructor"""
super().__init__(ctaEngine, setting) #调用父类的方法,写在下面是保留自己设置的参数
self.exchange = ''
self.vtSymbol = ''
self.volume = 1
self.price = 0
self.orderFlag = True #很重要!控制只下一次单
self.direction = 'buy'
def output(self, s): #做啥操作的时候把时间附上
super().output(f"[{datetime.datetime.now().replace(microsecond=0)}] {s}")
def onTick(self, tick):
super().onTick(tick)
self.output(f"{tick.vtSymbol} {tick.lastPrice}") # 输出接收到行情的最新价(两个合约)
if tick.lastPrice == self.price and self.orderFlag: #触发设定价格且没下过单
getattr(self,self.direction)(self.price, self.volume) #安装设定手和价格下单
#self.buy(self.price, self.volume)
self.orderFlag = False
def onStart(self):
super().onStart()
self.orderFlag = True
self.output(f'交易所:{self.exchange} 合约:{self.vtSymbol}') #pythonGO里面输出不能用print
def onTrade(self, trade):
super().onTrade(trade, log=True)
def onStop(self):
super().onStop()
三、拆解学习
面板设置参考0040-量化第八天:PythonGo-如何在软件上创建可视化参数设置_九九九九为功的博客-CSDN博客
def onStart(self):
super().onStart()
self.orderFlag = True
self.output(f'交易所:{self.exchange} 合约:{self.vtSymbol}') #pythonGO里面输出不能用print
def onStop(self):
super().onStop()
分别是加载,暂停
def onTick(self, tick):
super().onTick(tick)
self.output(f"{tick.vtSymbol} {tick.lastPrice}") # 输出接收到行情的最新价(两个合约)
if tick.lastPrice == self.price and self.orderFlag: #触发设定价格且没下过单
getattr(self,self.direction)(self.price, self.volume) #安装设定手和价格下单
#self.buy(self.price, self.volume)
self.orderFlag = False
每秒2次调用tick几倍数据,运行不断输出最新价
在达到设定价格且交易过时下单,下单后标记已交易

def output(self, s): #做啥操作的时候把时间附上
super().output(f"[{datetime.datetime.now().replace(microsecond=0)}] {s}")
输出就变成

本文介绍了使用PythonGo实现的首个简单交易策略,包括模型介绍、代码实现和拆解学习。通过策略模板进行划线交易,并理解系统运行、命名、下单逻辑等关键点。同时,文章还提及了软件的可视化参数设置和数据调用方法。
1341

被折叠的 条评论
为什么被折叠?



