文章 "开发回放系统 — 市场模拟(第 23 部分):外汇(IV)"

 

新文章 开发回放系统 — 市场模拟(第 23 部分):外汇(IV)已发布:

现在,创建发生在我们将跳价转换为柱线的同一点。以这种方式,如果在转换过程中出现问题,我们就能立即注意到错误。这是因为在快进期间,在图表上放置 1-分钟柱线的代码,也同样在正常表现期间用于定位系统放置柱线。换言之,负责此任务的代码不会在其它任何地方重复。如此这般,我们获得的系统就能更好的维护和改进。

在上一篇文章《开发回放系统 — 市场模拟(第 22 部分):外汇(III)》中,我们对系统进行了一些更改,从而令模拟器能够根据出价(Bid)生成信息,而不仅仅是基于最后成交价。但这些修改不如我意,原因很简单:我们正在重复代码,这根本不符合我的风格。


不过,鉴于文章的代码都是现成的,文章也快完结了,故我把一切都保持原样,但这真的让我很烦恼。代码在某些情况下起作用,而在其它情况下无效是没有意义的。即使调试代码,并试图找到错误的原因,我也没能找到。但是在暂时搁置代码,并查看系统流程图(是的,您应该始终尝试使用流程图来加快编码速度)之后,我注意到我可以修改一些代码以避免重复。更糟糕的是,代码其实是重复的。这导致了一个我无法解决的问题。但有一个解决方案,我们将从这个问题的解决方案开始本文,因为其存在令我们无法正确编写模拟器代码来处理外汇市场数据。

作者:Daniel Jose

 

你好,亲爱的丹尼尔、

祝贺你设计了这个伟大的系统。

我在测试您的系统时遇到了一些问题,需要您的帮助。

首先,我保存了一个月的勾选数据并将其用于重放。但是,在重播一个月的 1 分钟时间框架中,随着滑块上销轴的变化,显示的蜡烛数量与滑块上销轴的位置不一致,我已在所附视频中展示了这一点。我将针一直拉到最后,但蜡烛图只重复了少量的 1 分钟柱状图(约 20 个柱状图)。

第二件事是,我需要改变这个系统,使柱状图的移动方式与 Strategy Tester 相似,即插针的位置代表柱状图的显示速度,或者我可以像 TradingView 网站那样逐柱移动。您的系统可以像这样改变????。

如蒙指教,不胜感激。

此致敬礼、

附加的文件:
Part_23.gif  811 kb
 
Philip Tweens 条形图(约 20 条)。

第二件事是,我需要改变这个系统,使柱状图的移动方式与 Strategy Tester 相似,即针的位置代表柱状图的显示速度,或者我也可以像 TradingView 网站那样逐柱移动。您的系统是可以这样改变的????

如果您能提供指导,我将不胜感激。

此致敬礼、

好了,让我们分头行动,就像 JACK 说的那样......😁👍

您可能对这个应用程序感到非常困惑,或者说,您可能期望这个应用程序用于一些它本来不打算用于的用途。我并不是说它不能用于某些特殊用途,比如策略测试仪。但这并不是实施它的初衷。

关于第一个问题:你可能没有真正理解重放/模拟是如何进行的。先别管滑块了。当您播放系统时,它将检索已加载的数据(以刻度线或条形图的形式),并以 1 分钟的时间为基础,在图表上以条形图的形式显示。这与您要使用的图表时间无关。因此,文件中的数据应视为 1 分钟的条形图。不应将文件中的数据视为单个数据。本应用程序不会这么看。它总是将条形图,甚至是两小时的条形图,理解为 1 分钟的条形图。始终如此

如果您使用的是条形图,程序会自动注意到这一点,并创建模拟,使每个条形图的长度大约为 1 分钟。根据需要创建尽可能多的刻度线,以便在图形上正确绘制数值。如果文件中的数据是刻度线,系统将按照刻度线之间定义的大致间隔启动每个刻度线。这个间隔可以从几毫秒到几个小时不等。但这样做,间隔内的任何情况都将被视为拍卖或交易停止。因此,如果使用的数据间隔超过一天或 24 小时,应用程序很可能无法正确识别条形图。如果使用滑块搜索新的研究点,也会出现这种情况。因此,应避免使用时间跨度超过一天的数据。

请记住,该程序的设计使用时间相当于实时时间。换句话说,就是短时间。要在研究中输入长时段。如果需要使用需要绘制多条柱状图的平均线或指标。不得 在重放或模拟器中使用这些数据。您应该将它们作为前一个条形图使用。这是您应该努力理解的第一点。

至于第二个问题:您认为滑块会搜索特定点。的确如此,但并不是你想要或想象的那样。为了更好地理解这一点,请看一下之前实现滑块的文章。在那里,你将详细了解它是如何搜索特定位置的。但在这个问题中,你混淆了控件的用途。因为你还提出了一个想法,认为它可以用来修改绘制条形图的速度。事实并非如此。当你拖动控制器并按下播放按钮时,你所看到的绘制是以较快的速度进行的。这实际上是应用程序造成的错觉。它的目的是显示在您指示开始模拟或回放之前,条形图是如何绘制的,以便您进行研究。

我的建议是:仔细阅读前面的文章,如果有任何问题,可以发表评论。这将使您更容易理解到底发生了什么,以及如何使用应用程序才能获得良好的用户体验。如果您有任何问题,可以在评论中提出 ...😁👍

 
daniel jose # :

好吧,就像 JACK 说的那样......😁👍

也许你对这一应用感到非常困惑,或者说,也许你希望这一应用能为某些事情服务,而事实上,它原则上并不打算用于这些事情。我并不是说它不能用于某些特殊用途,比如策略测试仪。但这并不是它的最初目的。

关于第一个问题:您可能没有真正理解重放/模拟是如何进行的。先别管滑块。当您在系统上按下播放键时,它将获取已加载的数据(以刻度线或条形图的形式),并以 1 分钟的时间为基础,在图表上以条形图的形式显示。这与您要使用的时间框架无关。因此,必须将文件中的数据视为 1 分钟的条形图。不应将文件数据视为单个数据。因为本程序不会这样看。它总是将条形数据(即使是两小时条形数据)理解为 1 分钟条形数据。 总是 .

如果您使用的是条形图,程序会自动注意到这一点,并创建模拟,使每个条形图的长度约为 1 分钟。创建尽可能多的刻度线,以便在图表上正确绘制数值。如果文件中的数据是刻度线,系统将记录每个刻度线之间定义的大致间隔。请参阅之前的文章了解这一点。这样的间隔可以从几毫秒到几个小时不等。但这样做后,任何在区间内的数据都将被视为拍卖或交易持有。因此,如果您使用的数据间隔超过一天,即 24 小时,应用程序很可能无法正确识别条形图。如果使用滑块寻找新的研究点,就会出现这种情况。因此,应避免使用时间超过一天的数据。

请记住,该应用程序的使用时间相当于实时时间。换句话说,时间要短。要在研究中输入长周期的数据。如果您需要使用某些需要绘制多条柱状图的平均值或指标。 切勿 在重播或模拟器中使用这些数据。您必须将它们作为前置条形图。这是您需要了解的第一点。

关于第二个问题:您想象滑块会寻找一个特定的点。确实如此,但并不是你想要或想象的那样。为了更好地理解,请参阅之前的文章,那里有控件的实现过程。在那里您将详细了解滑块是如何寻找特定位置的。但在同一个问题中,你混淆了控制的使用。因为你还提出了一个想法,即它可能用于修改绘制柱形图的速度。实际上这根本不会发生。当您拖动控件并按下播放按钮时,您会发现绘制的速度更快。这实际上是应用程序造成的错觉。为了显示柱状图是如何绘制的,请参阅 "开始模拟或重放"、

我的建议是:静下心来阅读前面的文章,如果有疑问,可以发表评论。因为这样会更容易理解实际发生的情况,以及如何使用应用程序才能获得良好的用户体验。有任何问题都可以在评论中提出...😁👍

我想你没有理解我的意思,可能是我表达得不好。
我理解滑块的功能。我把数据放在 Replay 中一个月(约 20 天)。但是,我将针脚移到了滑块的末端,但第一天只画了几条柱状图,而在达到所需的点之前至少应该有 15 天。我是不是弄错了?我想是因为你说的不要使用超过一天的数据。
关于柱状图的显示速度,我希望您能告诉我如何以这种方式更改系统。
谢谢您的答复。
 
Philip Tweens #:
我想你没明白我的意思,可能是我表达得不好。
我理解滑块的功能。我将一个月(约 20 天)的数据放在 Replay 中。但是,我将针脚移到了滑块的末端,但第一天只画出了几条柱形图,而在达到预期点之前至少应该有 15 天。我是不是弄错了?我想是因为你说的不能使用超过一天的数据。
关于柱状图的显示速度,我希望您能告诉我如何以这种方式更改系统。
谢谢您的答复。

更改速度非常简单。只需进入C_Replay 类,查找LoopEventOnTime 函数。那里有一个Sleep 调用。这就是我们在播放模式下控制绘图速度的地方。但我相信这在之前的文章中已经有了充分的解释。

 
Daniel Jose #:

改变速度非常简单。只需进入C_Replay 类,查找LoopEventOnTime 函数。那里有一个Sleep 调用。这就是我们在播放模式下控制绘图速度的地方。但我相信这在之前的文章中已经解释得很清楚了。

不,我想改变滑块的行为方式。滑块的位置不再等同于特定点的位置,而是代表长时间重放时显示条形图的速度。与我们在策略测试器中看到的类似。
谢谢。