我对策略测试员的不满。 对MQL开发者的不满 - 页 2

 
Alexey Volchanskiy:

雷纳特,既然你在这里,我就借这个机会问一下。新建筑中是否会有服务,还是暂时推迟了?

后来。

同时,你可以为没有这些东西的合成工具编写数据提要。

 
Renat Fatkhullin:

后来。

同时,我可以为没有这些工具的合成工具写数据源。


我想要多线程,我希望可以通过服务来实现。我个人还不需要数据传输。

 

祝大家今天愉快。

不,这个帖子并不像别人写的那样是胡说八道。

我正在服用全血清。

我理解程序员写的东西,说的也很管用,但我很抱歉。

如果我们都用经纪人的错误数据工作,我马上就会明白,我的结果是没有错误的。

事情是这样的,我在大学里可能讽刺地学习成为一名统计工程师。

因此,对我来说,错误的数据一般是虚假的数据,因此说99%我所看到的是有效的,我作为一个统计学的人说我不知道,你和所有读过这个帖子的人也是如此。

解决办法就是我上面写的那样。

用简单的机器人/算法收集蜱虫,每个人都能做到。

事实上,无论是5MQL还是4MQL,我们都没有市场数据,应该用来进行策略测试。

对于长期战略,我认为不需要机器人。

对我来说,这是为小费而小费,我有有趣的想法,按小费来研究升值和出价。

对不起,我的答复和时间太长了,我真的很忙。

真诚的Ivan S.

 
Alexey Volchanskiy:

我写过一次,我会找到它。

对于五个https://www.mql5.com/ru/code/18046

对于四个https://www.mql5.com/ru/code/18047

对于一个六岁的孩子,https://www.mql5.com/ru/code/。


你会感到惊讶,但5号和4号的情况是一样的。

我可以同时为4号和5号说话!我可以同时为4号和5号说话。


我没有读过你的算法的全部代码,但基本上这部分代码是用来保存的,但现在我需要重现这个Ask并让策略测试器输出它。

如果有任何程序员能够做到这一点,我将非常认真地倾听!"。

 
Renat Fatkhullin:
如果我没有记错的话,在mt5中,测试器是在真实的ticks上,其中bid/ask是真实的?

Renat检查过,mql5的工作方式与4 mql相同。

 
Ivan Stepanenko:

Renat检查过,mql5的工作方式与4mql相同。


这个问题已经解决了很久了。

1.这个问题已经解决了。 对于MQL5来说,在真正的ticks上的测试已经有一年左右的时间了。如果你研究过终端...

2.对于MQL4,你可以使用你自己的tick .fxt文件。最简单的方法是使用TickStory Lite,它从Ducas下载真实的蜱虫。

 
Ivan Stepanenko:

renat检查了mql5的工作方式,它设置了一个固定的点差。和4mql一样。


谎言

我们把我的专家顾问用于保存SaveTicks,即我上面给出的CodeBase链接,并在测试器中以" 基于真实ticks的每个tick"模式运行。让我们看看输出文件中的内容,在我的例子中是:\Tester\Agent-127.0.0.1-3000\MQL5\Files\EURUSD_SaveTicks.csv

2017.11.28 09:11:16,1.1895,1.18952

2017.11.28 09:11:16,1.1895,1.18952

传播2

2017.11.28 09:11:26,1.18947,1.18951

2017.11.28 09:11:26,1.18947,1.18951

传播4
 

看一下字符浏览器,任何字符都有刻度。

这些是在测试器中使用的实际刻度线。

 
Ivan Stepanenko:

祝大家今天愉快。

不,这个帖子并不像别人写的那样是胡说八道。

我正在服用全血清。

我理解程序员写的东西和说的工作,但我很抱歉。

如果我们都用经纪人的错误数据工作,我马上就会明白,我的结果是没有错误的。

事情是这样的,我 在大学里 可能讽刺地 学习成为一名统计工程师

因此,对我来说,错误的数据一般是虚假的数据,因此说99%我所看到的是有效的,我作为一个统计学的人说我不知道,你和所有读过这个帖子的人也是如此。

解决办法就是我上面写的那样。

用简单的机器人/算法收集蜱虫,每个人都能做到。

事实上,无论是5MQL还是4MQL,我们都没有市场数据,应该用来进行策略测试。

对于长期战略,我认为不需要机器人。

对我来说,这是为小费而小费,我有有趣的想法,按小费来研究升值和出价。

对不起,我的答复和时间太长了,我真的很忙。

真诚的Ivan S.

你的语法怎么了?//只是说...

如果一切都如此严重,那么对你的问题的解决方法如下。

收集统计数据,引用历史和工作,阿列克谢-沃尔昌斯基已经为你找到了一切,并给出了上面的链接。

关于Ask--你可以从DucasCopy(谷歌)下载有Ask和Bids的历史资料。

好运!
 

这里有一些有趣的文章。


此外,在昨天的MetaTrader 5测试版中,你可以从MetaQuotes-Demo升级到MetaQuotes-Demo,有一个完整的公式系统,可以创建自定义符号。

你现在可以创建合成金融工具--基于一个或多个现有工具的工具。你只需指定计算报价的公式,平台就会在实时模式下生成合成工具的点数,并创建其分钟历史。

它是如何工作的

  • 你创建一个合成符号,并为其设定一个公式。
  • 平台将以每秒10次的速度计算其ticks(而且只有在公式中包含的至少一个工具的价格发生变化时才会计算)。
  • 该平台将根据其公式中包含的工具的分钟条形图,计算出分钟条形图的历史(过去两个月)。 所有新的条形图(当前和后续)将根据合成工具生成的刻度实时建立。
例如,你可以创建一个工具,它将显示美元指数(USDX)。其公式将如下。
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
注意:最初的美元指数公式使用美元EUR和USDGBP对。 由于该平台只有反向货币对,合成工具公式对它们使用了负数度,并且使用了Ask价格而不是Bid价格。

实时地,平台将根据你的经纪人提供的其他六个工具的报价来计算新工具的价格。在市场观察和图表中,你会看到其价格是如何变化的。



创建一个新的自定义工具,打开它的规范,并指定公式。




为方便起见,公式编辑器在你输入仪器和函数名称时显示可能的选项列表。

当合成工具被添加到 "市场观察 "中时,将开始计算它的点和分钟条。其计算所需的所有符号将立即自动添加到 "市场观察 "中。计算开始的记录将被添加到平台的日志中。合成符号USDX:处理开始。
  • 当合成工具从市场观察中被隐藏时,它的计算就会停止。
  • 目前用于计算合成工具的符号不能从市场观察中隐藏。

实时计算报价
每100毫秒(每秒10次)我们检查公式中涉及的至少一个工具的价格是否发生了变化。如果是这样,就会计算出合成工具的价格,并产生一个刻度。 计算是在买入价、卖出价和最后价格的三个流中并行进行的。例如,如果在公式中指定了EURUSD*GBPUSD,那么合成工具的价格计算将是如下的。

  • 买入价 - 买入价(EURUSD)*买入价(GBPUSD)
  • 询问 - 询问(EURUSD)*询问(GBPUSD)
  • 最后一次 - 最后一次(EURUSD)*最后一次(GBPUSD)

变化的存在是针对每个价格单独检查的。例如,如果在下一次计算中,只有初始工具的买入价发生了变化,那么只有发生变化的价格才会被计算为合成工具的刻度。

建立分钟酒吧的历史
除了实时收集ticks外,该平台还创建了一个合成工具的分钟历史。因此,交易者可以把它的图表看成是普通的工具,并使用对象和指标对其进行技术分析。

一旦交易者将合成工具添加到市场观察中,平台就会检查是否有为其计算的分钟历史。 如果没有,它将为过去60天创建,大约是5万条。如果平台设置中的窗口的最大条数有一个较低的值,这就是将使用的限制。

如果这个时期的一些酒吧已经建成,该平台将创建新的酒吧。只有在试图查看图表上相应的时间框架时,才会创建更深的历史记录(如果你向后滚动或从MQL5程序请求历史记录)。

合成工具的分钟柱的历史是根据其公式中包含的工具的分钟柱(而不是刻度)计算的。 例如,为了计算合成工具的开放分钟条的价格,平台将开放工具的价格包含在其公式中。最高价、最低价和收盘价的计算方法是一样的。

如果您在某个符号的公式中没有分钟柱,平台将计算前一个柱子的收盘价。 例如,您可以使用三个符号:EURUSD、USDJPY和GBPUSD。如果USDJPY没有对应于12:00的分钟条,将使用以下价格进行计算。

  • 开盘 - 欧元兑美元开盘12:00,美元兑日元收盘11:59,英镑兑美元开盘12:00
  • 对于高点 - 欧元兑美元高点12:00,美元兑日元收盘11:59,英镑兑美元高点12:00
  • 对于低点 - 欧元兑美元低点12:00,美元兑日元收盘11:59,英镑兑美元低点12:00
  • 对于收盘 - 欧元兑美元收盘12:00,美元兑日元收盘11:59,英镑兑美元收盘12:00

如果公式中的所有符号都没有分钟柱,那么相应的合成分钟柱将不会被计算。

建造新的小酒吧
合成工具中的所有新条形(当前和下一个)都是根据生成的点阵来创建的。建造酒吧的价格取决于规范中的 "图表建造 "参数。





在工具公式中可以使用哪些操作
你可以在你的公式中使用价格数据以及可用符号的一些属性(由你的经纪人提供)。要做到这一点,请指定。

  • 符号名称 - 根据合成的符号价格,公式将使用指定符号的买入、卖出或最后价格。例如,如果您指定EURUSD*GBPUSD,那么Bid价格将被计算为Bid(EURUSD)*bid(GBPUSD),而Ask价格--为Ask(EURUSD)*ask(GBPUSD)。
  • Bid(符号名称) - 要计算一个合成符号的买入价,将强制使用指定符号的买入价。实际上,这个变体与前一个变体相对应(没有指定价格类型)。
  • Ask(符号名称) - 指定符号的Ask价格将被强制用于计算合成工具的Bid价格。相反,在计算卖出价格时,将使用指定符号的买入价格。为了计算最后价格,将使用指定符号的最后价格。例如,如果你指定Ask(EURUSD)*GBPUSD,计算结果将如下。
    • 买入价=卖出价(EURUSD)*买入价(GBPUSD)。
    • 卖出价=买入价(EURUSD)*卖出价(GBPUSD)。
    • Last = last(EURUSD)*last(GBPUSD)
  • last(符号名称) - 指定符号的最后价格将被用来计算所有的合成符号价格(买入、卖出和最后价格)。例如,如果你指定last(EURUSD)*GBPUSD,计算结果将如下。
    • Bid = last(EURUSD)*bid(GBPUSD)
    • Ask = last(EURUSD)*ask(GBPUSD)
    • Last = last(EURUSD)*last(GBPUSD)
  • volume(Symbol name) - 该公式将使用指定符号的tick的体积。请确保音量信息是针对指定仪器翻译的。
  • point(symbol name) - 指定工具的最小价格变化的大小将被用于公式中。
  • digits(symbol name) - 在公式中,指定符号的价格的小数位数将被替换。

如果一个符号有一个复杂的名称(包含连字符、点等),它必须用反转逗号括起来。例如,"RTS-6.17"。
公式中可以使用算术运算:加法(+),减法(-),乘法(*),除法(/)和除法的余数(%)。 例如,EURUSD+GBPUSD意味着价格被计算为EURUSD和GBPUSD之和。你也可以在公式中使用单数减号来改变符号,比如说。-10*欧元兑美元。

算术运算有一个优先权。

  • 首先进行乘法、除法和余数的运算,然后进行加法和减法的运算。
  • 操作是从左到右进行的。如果在一个公式中使用了几个操作,而这些操作具有相同的优先级(例如,乘法和除法),左边的操作将被首先执行。
  • 大括号(和)可以用来改变操作的优先级。括号内的表达式在计算中具有最高的优先权。从左到右的原则也适用于它们:公式中括号内左边的表达式首先被计算。

常数也可以用在公式中。

  • 数值(整数和实数加点)。例如,EURUSD*2+GBPUSD*0.7。
  • 数字和点符号属性。他们将规范中的自定义符号的属性替换到公式中。Digits - 符号价格的小数位数,_Point - 符号价格的最小变化大小。

另外,除了MathSrand、MathRand和MathIsValidNuber,MQL5支持的所有数学函数 都可以在公式中使用。 所有函数都只使用简短的名称:fabs()、acos()、asin()等。