求教与探讨: 复杂策略代码的组织、管理与复用
接触TB不久,一方面感受到了整体功能设计的完备与强大,同时意识到与其它通用编程语言相比, TB还是有一些限制。想请教下老师们都是如何组织管理自己的代码。想要达到的目的是:每个用户函数/策略公式里的代码不要过长,实现功能不要太多,便于分开功能调试, 也方便阅读, 然后进行组合一些常用的功能代码尽可能的可以被复用,比如是放在用户函数里,或者放在独立的策略里加载到同一个策略单元供其它策略使用实现在同一个策略单元里共享结构较为复杂的数据,比如Map, Dataframe, Series举个具体例子,想要基于同一个思路编写两个策略,一个用于做多,一个用于做空,大致的逻辑是相似的,但是在做多做空时会有细节处理上的不同, 要实现的功能包含以下几个部分:处理分析行情数据的部分,比如分析代表同一个品种不同周期的图层里的行情结构,事件驱动,比如每次barclose执行一次, 为保存处理结果可能会用到多维数组, Dataframe, Map, Series根据行情结构寻找交易机会并发出交易信号的代码, 比如说做多是一个策略,做空一个策略,但是都要用到处理分析行情的部分控制风险和仓位的部分, 对于发出的交易信号进行统一检查和管理,根据一些风控条件和当前仓位决定哪些发单,哪些不发单希望可以做到#1部分被#2复用,使用时根据需要加载相应的策略到策略单元里进行组合, 我的问题是:Q1: 用户函数只能返回基本的数据类型值, 索引参数似乎只支持Array, 如果要传递复杂一些的数据如Map, Dataframe, Series给调用的策略,有什么思路?Q2: 如果将行情分析处理代码放到一个独立的策略里,如何将处理后的结果通过复杂一些的数据结构共享给在同一个策略单元里负责寻找交易信号的策略?Q3: 如何实现上面将例子里控制风险和仓位,实现交易信号统一触发的部分放在一个独立的策略里?希望各位老师不吝赐教,提供些思路和方向,谢谢!