问题标签 [back-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1527 浏览

low-latency - 使用 MQL4 反转数组

使用MetaTrader TerminalMQL4),我尝试有一个反向数组,我将(前置)项目附加到。

因此,在每个刻度上,myArray[0]成为“最新”值,之前的值转移到myArray[1],依此类推。

但它听起来更难。

我试过这样->

0 投票
1 回答
3423 浏览

c++ - 如何将 MQL4 代码转换为 C++/Delphi DLL(复盘大师 API)?

我需要创建一个
MQL4 API(类 C 语言)
Forex Tester API(C++/Delphi DLL)的自动代码转换器。

有建议可以在 和 的帮助下ANTLR完成MMVP。但是,我不知道如何在上述技术的帮助下完成。

谁能告诉我的问题如何解决?

如果您不知道如何使用ANTLRMMVP然后请建议其他技术完成我的任务。

这是一个简单MQL4程序的示例。

用 C++ API 编写的同一程序的示例。

0 投票
0 回答
137 浏览

r - 在 R 中运行 applyStrategy

您好,我正在研究配对交易策略。目前,我正在对在某些假设下找到的任何配对进行回测。为此,我在 R 中使用了“quantstrat”包。我发现很难理解 applyStrategy 函数中到底发生了什么,特别是在我经历了以下情况之后:

我为两对运行了一个演示代码:

其余代码可在此处获得(https://r-forge.r-project.org/scm/viewvc.php/pkg/quantstrat/demo/pair_trade.R?view=markup&root=blotter

运行“策略”后,我计算累积回报并获得总计 -0.05818081。

现在,如果我接下来要做的是再次运行代码的最后一部分:

然后我得到 -0.9044952 作为累积回报。我知道如果我想再次获得 -0.05818081 回报,那么我需要重新启动投资组合。但是,我正在寻找的是帮助了解跑步的效果

是本评论中解释的两倍。帮助将不胜感激!

0 投票
3 回答
3385 浏览

csv - 如何将我自己的数据输入 PyAlgoTrade?

我正在尝试使用PyAlogoTrade的事件探查器

但是我不想使用来自yahoo!finance的数据,我想使用自己的但不知道如何解析,CSV格式为:

完整CSV的在这里

我想做类似的事情:

然后yahoofinance.build_feed(instruments, 2008, 2009, ".")用我的替换CSV

我试过了:

但它会引发属性错误。任何想法如何做到这一点?

0 投票
0 回答
51 浏览

r - 按列值计算动态股票收益

我尝试在 R 中测试一种策略,即在牛市吞没信号后以第 x 根柱线购买。如您所见,Bull Eng 之后的栏数是最后一栏。

现在我想根据 testrange.High 列中的第 x 个 Bar 计算动态回报,其中 x 的值由最后一列的值指示。

例如,我想锚定第 1 根柱的开盘价,即 200.000,然后比较第 3 列 ( 200.19 200.17 199.49 199.55 199.73 200.04) 的最高价,如最后一列所示,从 1 到 6 根柱运行到锚点 (200.000)获取 6 根柱线的回报,然后在下一个位置重新开始,即 19:44:00 进行相同的过程(新锚点 199.97 并从高点运行 7 根柱线进行回报计算)并返回所有回报作为带有条数的列表或向量。

任何帮助是极大的赞赏。提前致谢。

0 投票
1 回答
383 浏览

python - 使用数据进行回测

在我收到大量数据的假设场景中,并且通常在收到时按时间顺序排列,有没有办法向前或向后“播放”数据,从而按需重新创建新信息流?我知道,从简单的意义上说,我总是可以有一个脚本(无论输出什么都不重要),它以一个 for 循环开始,该循环接受任意数量的事件或观察并做某事,然后接受更多观察,更新以前的内容输出一个新的结果,依此类推。有没有比简单的 for 循环更可扩展的方法?

基本上,每当我研究这个主题时,我都会很快发现自己进入了高频交易的主题领域,特别是通过对历史数据进行回测的算法效率。虽然我的问题是在更广泛的意义上这样做,我们的观察不需要是股票/期权/未来价格点,但必须适用相同的原则。有没有人有这样的经验,了解如何将这样一个平台构建在一个更可扩展的级别上,而不仅仅是一个带有逻辑的 for 循环?另一个例子是健康数据/声明,随着时间的推移,随着越来越多的声明出现,人们可以前后看到发生了什么。

0 投票
3 回答
1450 浏览

r - R抛物线SAR和前瞻偏差

我正在使用由 Joshua Ulrich 实现的伟大包中R的函数来测试这一点。我不确定这是否是抛物线 SAR 的标准行为。如果是的话,我需要一些帮助来实施“未来盲人”SAR。SAR()TTR

为了简单起见,我将使用短向量和整数值而不是实时序列数据。

我只会在最后一个区间更改一个值,现在的Low - High范围是 5 - 7,而不是 5 - 6。

我们得到:

抛物线 SAR 的所有历史都被大幅修改是预期的行为吗?如果第 1 行到第 4 行的 SAR 值被第 5 行的不同未来值修改,则会将前瞻偏差引入之前的行。

如果这是抛物线 SAR 的标准行为并且我需要它进行回测,我将不得不为每一行重新计算它,始终掩盖所有未来的数据(行)。

期望的结果是每一行都有抛物线 SAR 值,因为我可以在特定的时间目睹它,而不知道未来。


编辑2016-06-18

user3666197的简化代码示例:

0 投票
0 回答
2191 浏览

r - 如何在 R 中回测配对交易策略

我正在尝试了解配对交易策略,并且我正在使用这个伪代码来编写我的 R 程序。

我目前正在使用Systematic Investor Toolbox (SIT) 技术分析进行回测,但我不知道如何使用 SIT 进行回测配对交易策略。

当前的问题是如何在 SIT 中模拟交易对的买卖。如果 SIT 无法进行配对交易策略回测,那么我应该如何执行配对交易策略,尤其是进入和退出。我应该使用什么逻辑?

编辑

PerformanceAnalytics经过一段时间的搜索,我知道我们可以使用;从头开始​​制作回测器。但在回测之前,我们必须创建信号和返回值。下面是一个示例代码

在上面的代码中,创建信号很容易,但是对于交易对,我应该使用什么逻辑来创建信号并返回该信号?

0 投票
1 回答
791 浏览

python - 事件驱动回测引擎速度

我目前正在用 Python 开发一个事件驱动的回测引擎。我想知道高速回测引擎应该有多快,尤其是在 Python 中。现在,我可以重播一年的 1 分钟柱数据大约 10 小时。现在的速度可以接受吗?

我知道 Github 上有一些开源回测引擎,比如 Pipline。我真的不知道它是否是事件驱动的,因为我之前没有玩过它。

任何人都知道一个高质量的事件驱动的回测引擎应该有多快?非常感谢你的帮助。

0 投票
1 回答
138 浏览

r - R:运行并行回测

我需要并行运行冗长且计算密集的回测。我的回测平均需要运行 8 个小时,我需要运行 30 个。它们都使用不同的输入调用相同的函数。到目前为止,我能找到的是下面使用 foreach 包的代码。

我的第一个问题更笼统,我想知道上面的包是否是解决我的问题的最佳方法。

我的第二个问题与额外计算能力的使用有关,因为我只能在我的本地机器上并行运行 8 个回测,网上有很多选择,并且希望就最适合 R 的方式提出建议。

感谢您的帮助和时间,