【发布时间】:2015-12-18 12:38:24
【问题描述】:
这主要是一个理论问题(但总是欢迎示例代码)。
真正的问题是:如何正确编码 EA 的“框架”,从多个自定义指标测试多个场景?
我(忙于)构建 EA 的方式不是非常专注于一种策略,而是会尝试“测试”多种策略并“挑选”最合适的一种。
所以我创建了一些自定义指标,它们都返回一个“状态数据”数组。
例如我有以下指标:
- 穿越移动平均线指标,在穿越平均线时给出信号,以及当前位置从 MA 移动的百分比。
- 布林带指标,返回波段之间的“空间”,并在波段开始“挤压”时发出信号。
- 多时间框架“方向/趋势”指标(是向上或向下移动的特定时间框架)。如果时间框架方向发生变化,它会返回当前方向并发出信号。
- ADX 指标,用于检查“小规模”运动并选择最佳买入/卖出点。
我可以写一个巨大的场景,但我认为它可以做得更好。因为如果,假设所有时间框架都在下降(下降趋势),你可以有一个特殊的场景来处理大量的下降运动。但如果没有当前趋势,则最好采用不同的方案。
所以,我觉得最好制作多个场景(仍在 1 个 EA 中)。首先收集所有自定义指标数据,然后每个场景使用该数据来计算其内容。然后它会返回一个“分数”并选出最好的。
但是我怎样才能以最好的“概览”方式来布局代码呢?
我应该为每个场景创建一个类并给他们一个手动的“打勾”数据吗?然后将它们拆分成多个文件并#include?
或者也许是事件驱动的?创建的类只是继续运行、计算和设置某些指标事件的侦听器并以自己的方式进行(那太棒了)
欢迎提出任何想法!
更新2016-01-11,12:00
我现在没有时间创建 UML.. 但我现在做以下 ->
-
Order(Order是单例,只是执行订单请求) -
Indicator(每个指标扩展的基类) Strategy(每个策略扩展的基类)IndicatorFetcher(保存所有指标,在每个刻度上运行)-
StrategyRunner(保存所有策略,在每个刻度上运行,在IndicatorFetcher之后)
每个Strategy 实例都可以访问IndicatorFetcher(持有所有指标数据的概览,并使用Order 单例进行交易)。
【问题讨论】:
标签: low-latency algorithmic-trading quantitative-finance mql4 metatrader4