文章 "自定义品种(符号):实践基础" - 页 4

 
afsmerinostra:

下午好 斯坦尼斯拉夫

非常感谢你的文章和所做的工作,我发现了很多新东西!

您能告诉我在 RENCO 中形成反转条形图的逻辑代码在哪里吗?我在测试器中已经为此纠结了一个月,我以为我可以找到一种方法来简单地用信号绕过它们,但不是这样....)我是编程初学者,所以如果您能具体指点一下,我将不胜感激。我是编程初学者,如果您能具体指点一下,我将不胜感激。

为什么不能让 OPEN 保持原样,为什么要在反转时移动它?这对于测试仪和一般情况下都会容易得多。历史上 Renko 也是这样吗?除了 "正确性 "之外,还有其他实际用途吗?

RenkoTicks 中的所有条形图(如果我们在谈论它的话)似乎都是根据相同的算法构建的--它们在注释中用 "上升方框 "和 "下降方框 "注释进行标记(反转没有特殊标记,但可以从方框的方向看出)。我认为在指标中建立信号更合乎逻辑,我看不出使用自定义符号生成器有什么意义。

我不理解开放运动。根据定义,经典的 renko 方框大小相等,反转以方框大小的缺口为标志。还有其他种类的 renko(包括无间隙的 renko),但文章中没有提到。

 
嗨,也许我漏掉了一个部分,但是,仁科木块的芯线怎么会比块身大呢?
 
Adren6:
嗨,也许我漏掉了一部分,但是,renko 区块的蜡烛芯怎么会比蜡烛体大呢?

蜡烛芯显示的是上一个箱体完成到下一个箱体完成之间的价格变动。例如,如果我们完成了上行箱体,如果距离小于所需的箱体大小,价格可能会上升一些点,但不会形成下一个箱体。然后,价格开始下行,与上一个上行箱体并排,向下覆盖所有箱体(仍不是新箱体),然后覆盖更多点,最后达到箱体大小。此时,新的下跌箱体形成,上扬的蜡烛芯显示出所有的距离,即前一个上行箱体和前一个未完成的上行运动,这不足以形成下一个上行箱体。

灯芯的大小总是小于两个箱体的大小,因为这是导致反转的距离。在反转没有发生之前,灯芯收集所有的波动。

 
斯坦尼斯拉夫,我一直在寻找操作 Renko 图表的方法,你的开发涵盖了我所有的疑问。感谢你们为交易者带来的巨大价值。专家顾问只需要一个开始和结束时间即可进行交易。
 

我还遇到了 "HistoryCache: container header read error [0]"(历史缓存:容器头读取错误 [0]),随后是 "HistoryBase: invalid container (1970.01.01) found"(历史库:发现无效容器 (1970.01.01))。

与此同时,2022 年 1 月的历史记录从自定义工具的历史记录中删除,出现了从 12 月 31 日到今天的空白。

这只发生在两台电脑上,资源足够。

@Slava,您需要哪些细节来重现?

 
Andrey Khatimlianskii #:

还遇到了 "HistoryCache:容器头读取错误 [0]",接着是 "HistoryBase:发现无效容器 (1970.01.01)"。

这就从自定义工具的历史记录中删除了 2022 年 1 月的历史记录,从而出现了从 12 月 31 日到今天的空白。

这种情况只出现在 2 台计算机上,资源足够。

@Slava,你需要哪些细节来重现?

在我看来,你们早就可以在测试版终端中内置一个自动报告器,就像安卓向 Google Play 发送挂起和异常情况的方式一样。

这样就不需要在重现情况和提供证据时手舞足蹈了--所有必要的信息都会以转储的形式经用户同意后发送给 MQ。

但这显然不适合 MQ,因为他们甚至关闭了 SD。如果有一个自动报告器,他们就会被大量的错误报告淹没。

 
Stanislav Korotky #:

在我看来,很久以前,你就可以在测试版终端中内置一个自动报告器,就像 Android 向 Google Play 发送挂起和异常情况一样。

这样就不需要在重现情况和提供证据时手舞足蹈了--经用户同意,所有必要的信息都会以转储的形式发送到 MQ。

但这显然不适合 MQ,因为他们甚至关闭了 SD。如果有一个自动报告器,他们就会被大量的错误报告淹没。

我同意,在服务台关闭后,修复用户发现的错误变得非常困难。

只有 fxsaber 以某种方式将他的一些想法带到了 MQ 中。

显然,我们已经到了应该利用现有资源而不是等待任何东西的阶段。

 

使用自定义符号 时,是否会对点差进行某种缩放?

我导入了一些欧元兑美元的 Dukascopy tick 数据(我将其称为 EURUSD_TDS)。 将自定义符号 "Ticks "选项卡上的价格与使用以下代码显示的同期 价格进行比较后发现,买入价基本相同,但卖出价不同,因此点差明显低于 "Ticks "选项卡上的点差 - 即 EA 看到的点差低于原始数据。此外,"点数 "的时间也不同,这让我有点吃惊,但最令人担忧的还是点差问题。

void OnTick()
{
   double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   datetime now = TimeCurrent();
   
   if ((now >= StartDate) && (now < EndDate))
   {
      double spread = (Ask - Bid) / _Point;
      writeToLog(StringFormat("%s, %.5f, %.5f, %.i", (string)now, Bid, Ask, (int)spread));
   }
}


原始数据,点差在 11 点到 67 点之间... EA 所见,点差为 9 或 26 点...

 
Mr David Frederick Roberts 自定义符号 时,是否会对价差进行某种缩放?

我导入了一些欧元兑美元的 Dukascopy tick 数据(我将其称为 EURUSD_TDS)。 将自定义符号 "Ticks "选项卡上的价格与使用以下代码显示的同期 价格进行比较后发现,买入价基本相同,但卖出价不同,因此点差明显低于 "Ticks "选项卡上的点差 - 即 EA 看到的点差低于原始数据。此外,"点数 "的时间也不同,这让我有点吃惊,但最令人担忧的还是点差问题。


原始数据,点差在 11 点到 67 点之间... EA 所见,点差为 9 或 26 点...

您好,点差没有 "缩放",但可能有其他细微差别干扰。例如,请确保您在真实点数模式下进行测试,并且没有启用固定点差选项(根据右侧日志,每个条形图的点差都是一样的)。

如果能看到 UI 表和 EA 日志(包括毫秒数)的精确刻度顺序就更好了--您当前的截图似乎没有显示相同的刻度顺序。

 
Stanislav Korotky #:

您好,点差没有 "缩放",但可能有其他细微差别干扰。例如,请确保您是在真实点数模式下进行测试,并且没有启用固定点差选项(根据右侧日志,每个条形图的点差都是一样的)。

如果能看到 UI 表和 EA 日志(包括毫秒数)的精确刻度顺序就更好了--您当前的截图似乎没有显示相同的刻度顺序。

感谢您的回复,这很奇怪,我确实使用的是真实刻度线模式,而且我不知道 MT5 中还有固定点差选项,所以我确定我没有(我更熟悉 MT4)。我没有注意到每个条形图的点差都是一样的,事实上,查看完整文件后发现,点差似乎只在 1 分钟边界上发生变化。 我想我的想法是正确的,即调用 SymbolInfoDouble() 应该返回作为 OnTick() 事件调用结果处理的 tick 的价格,而不是某种 M1 值?

我试着用下面的代码打印我所期望的带有毫秒的实际跳动时间,但毫秒值总是零......

void OnTick()
{
   double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   long timeMillis = SymbolInfoInteger(_Symbol, SYMBOL_TIME_MSC);
   datetime now = TimeCurrent();
   
   datetime time = (datetime)(timeMillis / 1000);
   long millis = timeMillis % 1000;
   
   if ((now >= StartDate) && (now < EndDate))
   {
      double spread = (Ask - Bid) / _Point;
      writeToLog(StringFormat("%s.%i, %.5f, %.5f, %.2f", (string)time, millis, Bid, Ask, spread));
   }
}

编辑:正如我所说,我对 MQL5 比较陌生--我刚发现 SymbolInfoTick(),也许我应该使用它,而不是像现在这样!我试试看,看看会发生什么...


好的,这样做没有任何区别,结果完全一样,但都与终端中的 "Symbol Ticks "对话框不一致。 我说毫秒值始终为零是错误的,它在一分钟内(即午夜前一分钟)是非零的!

在我看来,这是一个相当重要的问题。 我的交易 EA 希望收到的刻度线价格与导入的源刻度线数据一致(其他人也一样!)。 我敢说我做错了什么,但如果是这样,我想知道是什么。我附上了包含测试 EA 的压缩文件、午夜两小时结果的电子表格,以及一些设置和刻度线的截图。

附加的文件: