程序库: BestInterval - 页 2

 
Sergey Chalyshev:

我还什么都没做,我正在尝试编译这段代码:

该代码已编译。Virtual 和 BestInterval 昨天已更新。您使用的可能是旧版本。

不使用Virtual 也能编译、

没有BestInterval 也能编译、

但不会一起编译。

在更新之前,这两个库是完全独立的,因此存在冲突。我昨天发布的版本没有这个问题。
 

这是什么意思?

2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   Amount of Delete Intervals = 0
2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
2018.10.16 15:54:45.104 Core 1  final balance 2978.46 USD
2018.10.16 15:54:45.104 Core 1  OnTester result 0
你的程序库中没有其他输入参数。

 
Sergey Pavlov:

你这是什么意思?

您的库中一个输入参数都没有了。

交易、自动交易系统和交易策略测试论坛。

库: BestInterval

fxsaber, 2018.10.16 2:57 pm.

Virtual 和 BestInterval 已于昨日更新。您可能使用的是旧版本。

 
fxsaber:

该代码已编译。Virtual 和 BestInterval 已于昨日更新。您可能使用的是旧版本。

谢谢!

更新了Virtual,可以编译。

 
fxsaber:

Expert Advisor 已编译,跳转时间间隔已计算,文件出现在 Common 中。

第 1 阶段。

但测试器中没有 inBestInterval_Action 参数,无论是否使用 VIRTUAL_TESTER,该参数都不会出现。

第 2 阶段。

因此,我无法根据抛出的时间间隔进行测试。

我需要帮助--我做错了什么?

 
Mikola_2:

编译 Expert Advisor,计算跳转间隔,文件出现在 Common 中。

但测试器中缺少 inBestInterval_Action 参数,无论是否使用 VIRTUAL_TESTER,该参数都不会出现。

因此,无法根据抛出的时间间隔进行测试。

我需要帮助 - 我做错了什么?

VIRTUAL_TESTER 仅用于加速优化或反向。这就是为什么不规定它与 BestInterval 一起使用的原因。

关于交易、自动交易系统和测试交易策略的论坛。

库: BestInterval

fxsaber, 2018.10.15 13:30

1. 使用任何智能交易系统,并在其开头写下这几行代码

#include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006

#define  BESTINTERVAL_ONTESTER // 优化标准是最佳区间的利润。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/zh/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/zh/code/22710


ZY 很好,你已经弄清楚了代码。如果库的形式与 KB 中的相同,我不知道原因何在。也许您在删除 VIRTUAL_TESTER 时忘记编译它们了。

 

fxsaber:

ZY 代码得到整理是件好事。如果库与 KB 中的相同,我不知道为什么。也许你在删除 VIRTUAL_TESTER 时忘记编译它们了。

我创建了一个 TesterEA_mq4.mq5 文件,内容如下:

#include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006
#define  VIRTUAL_TESTER // 在虚拟交易环境中运行
#define  BESTINTERVAL_ONTESTER // 优化标准是最佳区间的利润。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/zh/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/zh/code/22710
#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>

TesterEA.mq4 文件是原始文件,来自 KB。编译正常。

MT4Orders、Virtual、BestInterval 均来自 KB。

我更正了 EMA.mqh(出现了除以零的 错误):

EMA( const int period ) :Alpha(1.0 / period), Value(0)

EMA( const int period ) :Alpha(2.0 / (period+1.0)), Value(0)

我尝试用 BestInterval.mqh 代替

#ifndef  VIRTUAL_TESTER
  sinput
#endif
bool inBestInterval_Action = false; // 最佳时间间隔行动

使

//#ifndef VIRTUAL_TESTER
// sinput
//#endif.
sinput bool inBestInterval_Action = false; // 最佳时间间隔行动

BestInterval Action 变量出现在测试器中,当 BestInterval Action=false 时,日志中的一切都很漂亮,但当 BestInterval Action=true 时,整个测试都在运行,日志中没有写任何关于时间间隔的内容....。

真遗憾......:)

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
 
Mikola_2:

我创建了以下文件 TesterEA_mq4.mq5:

TesterEA.mq4 文件是原始文件,来自 KB。编译正常。

MT4Orders、Virtual、BestInterval 均来自 KB。

修复了 EMA.mqh 出现除以零的 错误):

EMA( const int period ) :Alpha(1.0 / period), Value(0)

EMA( const int period ) :Alpha(2.0 / (period+1.0)), Value(0)

零周期是一个不正确的值。因此,除以零是正常的,故意这样做是为了说明不能设置这样的值。

我在 BestInterval.mqh 中尝试用

使

BestInterval Action 变量出现在测试器中,当 BestInterval Action=false 时,日志中的一切都很漂亮,但当 BestInterval Action=true 时,整个测试都在运行,日志中没有写任何关于时间间隔的内容....。

真遗憾......:)


以下是 Action 的源代码

#include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006

//#define VIRTUAL_TESTER // 在虚拟交易环境中运行
#define  BESTINTERVAL_ONTESTER // 优化标准是最佳区间的利润。
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/zh/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/zh/code/22710

#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>


当 Action = true 时,测试者报告中的利润应与 Action = false 时日志中计算的利润相同。

 
fxsaber:

以下是源代码

如果 Action = true,测试者报告中的利润应与 Action = false 时日志中计算的利润相同。

不,石花没有出现......:)

在此窗体中,当 Action = true 时,它完全停止关闭订单,并立即用新订单消耗掉所有保证金(可能与 CloseBy 有关)....。

如果禁用 Virtual.mqh,一切正常,但 Action 间隔被忽略。

要更深入地理解您的代码是一项挑战......我想我还是暂时放弃吧。;)

 
Mikola_2:

没有,没有石花出来...... :)

在此窗体中,当 Action = true 时,它完全停止关闭订单,并立即用新订单占用所有保证金(可能与 CloseBy 有关)....。

如果是在 Netting 上运行,我不会感到惊讶。CloseBy 在那里不起作用。

禁用 Virtual.mqh后,一切正常,但行动间隔被忽略。

要更深入地理解您的代码是一项挑战......我想我还是暂时放弃吧。;)

在树篱上做吧。我没有考虑净值,因为 MT4-advisor 当然不应该在这种模式下运行。


忽略坏区间的算法很简单。在虚拟环境中启动 TS。只有符合计算区间的未平仓头寸 的净结算头寸 才会在虚拟环境中计算。然后将其净值位置与真实环境中的虚拟位置同步。这是用最难看的分析方法完成的,但实施起来却很简单--CloseBy。

实际上,反向模式也是以同样的方式实现的。我可以重写 CloseBy 变体,使其也适用于净额结算账户。我并不忙于此事。