问题标签 [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 投票
1 回答
105 浏览

python-3.x - 如何在滑索中订购一小部分加密货币(如比特币)?

基本上,众所周知,我们可以在 Zipline 中回测我们的策略,问题是 Zipline 是为股票市场开发的,在这些市场中可以订购的资产的最小订单是 1,但在加密货币市场中,我们可以订购一小部分一种加密货币。那么,我如何制作 zipline 以根据可用资金订购一小部分比特币?

0 投票
1 回答
85 浏览

performance - 我不知道为什么交易视图无法回测这段代码

我已经在 pine 上创建了这个代码,虽然它可以工作,但它没有。根据他们的说法,我没有错误,但是当我将代码添加到图表时,我无法看到它在哪里买卖。此外,当我尝试策略测试时,它不允许我对其进行回测。它不显示任何数据。

0 投票
1 回答
101 浏览

pine-script - 策略不进入交易

我的代码没有显示任何错误,但是当我尝试启动它时,没有提供任何条目,除此之外,我还想添加几个额外的过滤器:

  • RSI >50(做多时)
  • SlowEMA > SMA(做多时)
  • 关闭 > SlowEMA(做多时)

有什么建议么?

0 投票
0 回答
45 浏览

metatrader4 - 为什么我的计算与 metatrader 4 回测损失不匹配?

我正在写作和专家顾问并进行了测试。而且我无法理解,也无法找到为什么损失金额与我的计算不符的信息。要进行回测,我应该得到正确的结果。

在此处输入图像描述

因此,在图像中,我们看到在 109.87 开仓 0.79 手头寸,在 109.939 收盘。

在此处输入图像描述

这是显示掉期的头寸大小计算器。 在此处输入图像描述

但是在回测时,我得到的交换率更低。也许计算器指示器显示错误。随着较低的掉期,预期损失和实际损失之间的差距更大。

在此处输入图像描述

所以每日交换吃 6.15 美元。帐户在usd。从 1 月 22 日到 2 月 6 日,已经进行了 17 次互换。您将在下面的日志中看到的佣金是 3.16。

所以我的数学是 6.15*17+52.5+3.16=160.21

但头寸损失为175.48。

我还每天打印交换:

一天显示大约 5.8。如果我将其用于计算,这将产生更大的差距。

0 投票
1 回答
61 浏览

python - 如果满足条件,如何用前一行替换熊猫列行

我正在尝试加快我的交易策略回测。

现在,我有

这部分代码耗时最长,所以我想加快速度。

我正在学习 Python,所以这很简单而且很有效,但现在我要为它付出的代价是回测需要多长时间。

有没有办法更快地做到这一点?

0 投票
1 回答
188 浏览

r - 每月收费的再平衡策略

我对 PerformanceAnalytics 和 Quantstrat 软件包有疑问。我想测试每月再平衡投资组合策略,但我想将年费和买卖费用的影响纳入再平衡。

有什么实用的方法可以做到这一点吗?在 PerformanceAnalytics 中,我可以轻松测试每月再平衡策略,但费用是有问题的。在 Quantstrat 中,我可以轻松地合并费用,但有没有办法构建每月再平衡结构?

非常感谢,

亲切的问候。

0 投票
0 回答
37 浏览

pandas - 将自定义列添加到 zipline 以在 handle_data 中使用它

我遇到了一些问题,我正在使用 zipline 回测数据。使用正常的 OHLC 格式,一切正常,但我希望能够使用 csv 文件中的其他列,除了 zipline 默认提供的列(打开、关闭、高、低、体积)。我有诸如 Marketcap、ev、pe 之类的列,我希望能够在 handle_data 函数中使用它们。

0 投票
1 回答
30 浏览

ruby-on-rails - 如何构建我的应用程序以在 Rails 中回测数据?

我想回测一些数据,我希望我的回测和分析的输出成为我的应用程序决策的输入。

我曾考虑复制模型/表并出于执行回测和分析的目的,但随后我的工作量将增加一倍,并且不是特别可扩展。

是否可以为特定的特定类动态切换 rails 环境?即创建一个 BacktestingService 类,任何数据库读/写都对“测试”数据库进行,而应用程序的其余部分继续使用开发/生产环境?

您能否为我的用例建议任何其他解决方案?

0 投票
0 回答
169 浏览

series - 如何比较 pinescript 中一个指标的两个峰值?

我是一名初学者,我一直在通过 tradeview 在 pinescript 中创建自己的交易策略。在 CCI 指标上,我一直在尝试编写一个策略,当当前 CCI 值大于上一个最高峰值时,假设最后一个峰值大于 100 时将采取一个位置。我附上了我的意思的图像,最后一个最高峰和我将占据的位置突出显示。CCI职位

我最初的想法: cci_low = valuewhen(cci>100,cci(close,20),0) cci_high = valuewhen(cci>cci_low and cci(close,20),0)

我最初的想法是将指标 CCI 越过 100 关口的时刻与下一个也越过 100 关口的 CCI 进行比较,并保存最高的 CCI 值。但是,我的经验是有限的,我无法弄清楚如何设置一个条件,即只有在跌破 100 之后,我才将 > 100 的初始 cci 值与 > 大于初始 CCI 的当前 CCI 值进行比较标记。简单地说,我希望只有在后来的 CCI 超过最后一个最高 CCI 峰值时才建仓,峰值定义为回撤至 100 关口下方。

我也试过使用barssince()函数,我会搜索初始CCI>100,即barssince(CCI>100),通过CCI(close,20)[barssince(CCI>100)获取CCI值] 并将该值与当前 CCI 进行比较。但是,这仍然不能解决最高峰问题,并且 pinescript 不允许以这种方式使用来自 barsince() 的系列整数。

任何帮助和建议将不胜感激。

谢谢你,托马斯

0 投票
0 回答
1419 浏览

pine-script - trail_price, trail_offset 在 pinescript 中究竟是如何工作的?

到目前为止,感谢大家的帮助。到目前为止,我已经在 pinescript 中编写了许多不同的策略,并且我已经阅读了 pinescript 手册和许多谷歌文章,但我仍然对 pinescript 中的追踪止损如何工作感到困惑。

例如,对于 strategy.exit,我有一个 trail_price,它标记了追踪止损激活的入口。然而,我所有的回测都表明,追踪止损位于特定蜡烛条的高点,即使 trail_offset 没有被击中。是否仅仅是因为 tradeview 回测假设在一根蜡烛条中达到最大利润,即使随后的蜡烛条继续朝着您的目标方向前进?

例如,这是我的 strategy.exit 的一个示例。Strategy.exit("long_TP", "long", trail_price = entry_price + ATR, trail_offset = ATR, stop= entry_price - ATR)。我注意到我将赚取 2 到 3 倍的 trail_offset(在这种情况下基于 ATR,即如果 ATR 为 50 点,我将赚取 100 甚至 150 点),只要在该特定收盘前获利蜡烛吧。任何后续的蜡烛柱,即使做多,即使 trail_offset 止损未达到,也不计算在内(即,即使我的 ATR 是 50 点,当蜡烛柱关闭时,我可能会赚取 70 点,即使随后的蜡烛条继续做多)。

我的假设是否不正确(即我的代码),或者这仅仅是回测的限制,因为程序无法知道蜡烛条内部发生了什么,而只知道最高价、最低价、开盘价和收盘价?但是,我确实对此感到怀疑,因为有时即使在蜡烛条的低点也没有达到 trail_offset,所以理论上利润应该继续累积,而不是在蜡烛条关闭后止损。

编辑:我添加了更多信息以进行澄清-这是带有一些解释的示例代码:

我的 strategy.exit 声明如果达到初始止损,则退出多头头寸。但是,如果市场如预期那样做多,则在达到第一个止盈限制时激活追踪止损,由 trail_price 定义。trail_offset(以点数为单位)基于 ATR。因此,如果达到 trail_price,则应通过追踪止损持续获利。但实际上发生的情况是,利润被带到我进入交易的特定蜡烛的最高点。我附上了一张图片供参考。参考图片在图片中,我们看到第一个利润限制已达到,因此激活了追踪。ATR 约为 150 点,因此从入场价到获利限制的距离约为 150 点。追踪止损设置为 ATR,因此一旦达到第一个利润限制(利润 = 150 点),理论上交易应该继续获利,直到触及追踪止损。但在图片中,我们看到实际上,一旦触及蜡烛的高点,我的头寸就会退出,尽管持续上升趋势(最终利润 = 181 点),但没有获得任何进一步的利润。为什么是这样?

再次感谢您的帮助。托马斯