strat 包
strat 包提供了交易策略相关的功能定义和实现。
主要结构体
TradeStrat
交易策略的核心结构体,定义了策略的基本属性和行为。
公开字段:
Name string- 策略名称Version int- 策略版本号WarmupNum int- 预热所需的K线数量MinTfScore float64- 最小时间周期质量,默认0.75WsSubs map[string]string- websocket订阅: core.WsSubKLine, core.WsSubTrade, core.WsSubDepthDrawDownExit bool- 是否启用回撤退出HedgeOff bool-关闭合约双向持仓BatchInOut bool- 是否批量执行入场/出场BatchInfo bool- 是否对OnInfoBar后执行批量处理StakeRate float64- 相对基础金额开单倍率StopLoss float64- 此策略打开所有订单的默认止损比率(不带杠杆)StopEnterBars int- 限价入场单超时K线数EachMaxLong int- 每个交易对最大做多订单数,-1表示禁用EachMaxShort int- 每个交易对最大做空订单数,-1表示禁用AllowTFs []string- 允许运行的时间周期,不提供时使用全局配置Outputs []string- 策略输出的文本文件内容,每个字符串是一行Policy *config.RunPolicyConfig- 策略运行配置
StratJob
策略任务实例,负责执行具体的交易操作。
公开字段:
Strat *TradeStrat- 所属策略Env *ta.BarEnv- K线环境Entrys []*EnterReq- 入场请求列表Exits []*ExitReq- 出场请求列表LongOrders []*ormo.InOutOrder- 做多订单列表ShortOrders []*ormo.InOutOrder- 做空订单列表Symbol *orm.ExSymbol- 当前运行的币种TimeFrame string- 当前运行的时间周期Account string- 当前任务所属账号TPMaxs map[int64]float64- 订单最大盈利时价格OrderNum int- 所有未完成订单数量EnteredNum int- 已完全/部分入场的订单数量CheckMS int64- 上次处理信号的时间戳,13位毫秒MaxOpenLong int- 最大开多数量,0不限制,-1禁止开多MaxOpenShort int- 最大开空数量,0不限制,-1禁止开空CloseLong bool- 是否允许平多CloseShort bool- 是否允许平空ExgStopLoss bool- 是否允许交易所止损LongSLPrice float64- 开仓时默认做多止损价格ShortSLPrice float64- 开仓时默认做空止损价格ExgTakeProfit bool- 是否允许交易所止盈LongTPPrice float64- 开仓时默认做多止盈价格ShortTPPrice float64- 开仓时默认做空止盈价格IsWarmUp bool- 当前是否处于预热状态More interface{}- 策略自定义的额外信息
JobEnv
在OnBatchInfos中表示某个额外品种数据的job
公开字段:
Job *StratJob- 策略任务实例Env *ta.BarEnv- 指标运行环境Symbol string- 交易对名称
BatchMap
当前交易所-市场-时间周期下,所有标的的批量执行任务池。
公开字段:
Map map[string]*JobEnv- 任务映射TFMSecs int64- 时间周期毫秒数ExecMS int64- 执行批量任务的时间戳,每收到新的标的,推迟几秒;超过DelayBatchMS未收到,开始执行
PairSub
交易对订阅信息。
公开字段:
Pair string- 交易对名称TimeFrame string- 时间周期WarmupNum int- 预热数量
EnterReq
开仓请求结构体。
公开字段:
Tag string- 入场信号StgyName string- 策略名称Short bool- 是否做空OrderType int- 订单类型Limit float64- 限价单入场价格,指定时订单将作为限价单提交Stop float64- 止损(触发价格),做多订单时价格上涨到触发价格才入场(做空相反)CostRate float64- 开仓倍率,默认按配置1倍,用于计算LegalCostLegalCost float64- 花费法币金额,指定时忽略CostRateLeverage float64- 杠杆倍数Amount float64- 入场标的数量,由LegalCost和price计算StopLossVal float64- 入场价格到止损价格的距离,用于计算StopLossStopLoss float64- 止损触发价格,不为空时在交易所提交一个止损单StopLossLimit float64- 止损限制价格,不提供使用StopLossStopLossRate float64- 止损退出比例,0表示全部退出,需介于(0,1]之间StopLossTag string- 止损原因TakeProfitVal float64- 入场价格到止盈价格的距离,用于计算TakeProfitTakeProfit float64- 止盈触发价格,不为空时在交易所提交一个止盈单TakeProfitLimit float64- 止盈限制价格,不提供使用TakeProfitTakeProfitRate float64- 止盈退出比率,0表示全部退出,需介于(0,1]之间TakeProfitTag string- 止盈原因StopBars int- 入场限价单超过多少个bar未成交则取消ClientID string- 用于设置提交到交易所的ClientOrderID尾部部分。Infos map[string]string- 用于保存到订单的额外信息
ExitReq
平仓请求结构体。
公开字段:
Tag string- 退出信号StgyName string- 策略名称EnterTag string- 只退出入场信号为EnterTag的订单Dirt int- 方向(core.OdDirt*),多/空/双向OrderType int- 订单类型Limit float64- 限价单退出价格,指定时订单将作为限价单提交ExitRate float64- 退出比率,默认100%即所有订单全部退出Amount float64- 要退出的标的数量,指定时ExitRate无效OrderID int64- 只退出指定订单UnFillOnly bool- True时只退出尚未入场的部分FilledOnly bool- True时只退出已入场的订单Force bool- 是否强制退出
策略管理相关方法
New
创建新的交易策略实例。
参数:
pol *config.RunPolicyConfig- 策略运行配置
返回:
*TradeStrat- 交易策略实例
Get
根据交易对和策略ID获取策略实例。
参数:
pair string- 交易对名称stratID string- 策略ID
返回:
*TradeStrat- 交易策略实例,如果不存在则返回 nil
GetStratPerf
获取策略性能配置。
参数:
pair string- 交易对名称strat string- 策略名称
返回:
*config.StratPerfConfig- 策略性能配置
AddStratGroup
添加策略组。
参数:
group string- 策略组名称items map[string]FuncMakeStrat- 策略创建函数映射
订单管理相关方法
GetJobs
获取指定账户的所有策略任务。
参数:
account string- 账户名称
返回:
map[string]map[string]*StratJob- 按交易对和策略分组的任务映射
GetInfoJobs
获取指定账户的信息策略任务。
参数:
account string- 账户名称
返回:
map[string]map[string]*StratJob- 按交易对和策略分组的信息任务映射
AddOdSub
添加订单变更订阅。
参数:
acc string- 账户名称cb FnOdChange- 订单变更回调函数
FireOdChange
触发订单变更事件。
参数:
acc string- 账户名称od *ormo.InOutOrder- 订单对象evt int- 事件类型
性能计算相关方法
CalcJobScores
计算策略任务得分。
参数:
pair string- 交易对名称tf string- 时间周期stgy string- 策略名称
返回:
*errs.Error- 错误信息
CalcJobPerfs
计算策略任务性能。
参数:
cfg *config.StratPerfConfig- 性能配置p *core.PerfSta- 性能统计对象perfs []*core.JobPerf- 性能数据列表
CalcDrawDownExitRate
计算回撤退出比率。
参数:
maxChg float64- 最大变化率
返回:
float64- 计算得到的退出比率
系统管理相关方法
LoadStratJobs
加载策略任务。
参数:
pairs []string- 交易对列表tfScores map[string]map[string]float64- 时间周期得分映射
返回:
map[string]map[string]int- 任务状态映射map[string][]*ormo.InOutOrder- 订单映射*errs.Error- 错误信息
ExitStratJobs
退出所有策略任务。