如何保护自己,防止从测试者那里复制多头交易

 

向大家问好。

问题就在标题中。其目的是保护EA不被用于真实数据,但仍允许其在策略测试器中 运行。因此,我们可以在策略测试器中运行演示版,并看到它是有效的,但我们将无法通过手动转移到另一个终端来复制交易。

问题是,专家顾问交易可以持续数周。而这意味着,一个无良的用户可以在策略测试器中运行模拟版本,并在另一个终端中手动打开同样的交易,时间晚了一天。而且他或她并没有损失多少利润。

因此,我们决定专家顾问必须在策略测试器中只工作到比当前日期早一个月的日期。同时,当新的日期出现时,必须允许专家顾问在策略测试器中工作的时间越来越长。

在测试器中,一个固定的工作结束日期是不好的--用户怀疑报价会准确地存储在专家顾问中,直到这个日期,这就是为什么它能工作。因此,我们需要在策略测试器中获得当前日期,并允许专家顾问只工作到该日期,也就是一个月前。

要从测试者那里得到当前的日期是很难的,但我们已经成功地做到了。然而,我们发现一个聪明的用户把电脑上的时间往前调,并轻松地从策略测试器上读取已执行的交易。

我怎样才能防止测试器在上个月的报价上运行?

同事们,你们建议怎么做?

 
我说的更多!在学习了一点WINAPI之后,你可以写一个实用程序,它将在测试器中鼓动 "开始 "按钮,保存报告并从那里读取新的交易。然后你可以在终端简单地复制交易。
 

是的,Dimitri,即使没有WinAPI,你也可以做到,只需使用AutoIT上的脚本。

不仅是按日工作的专家顾问,甚至按五分钟工作的专家顾问在这种情况下也感到不舒服。

在我看来,最合理的解决方案是在当前日期前一个月停止测试器的运行。但是,当你的电脑上的日期被改变时,该怎么办呢?

我的想法是,以某种方式从测试者那里获得终端最后一次报价的真实时间。但我不知道该怎么做。另外,我不想弄乱额外的自写DLL,它们也会 "吓到 "客户。

 
George Merts:

是的,Dimitri,即使没有WinAPI,你也可以做到,只需使用AutoIT上的脚本。

不仅是按日工作的专家顾问,甚至按五分钟工作的专家顾问在这种情况下也感到不舒服。

在我看来,最合理的解决方案是在当前日期前一个月停止测试器的运行。但是,当你的电脑上的日期被改变时,该怎么办呢?

我的想法是,以某种方式从测试者那里获得终端最后一次报价的真实时间。但我不知道该怎么做。另外,我不想弄乱额外的自写DLL,它们也会 "吓到 "客户。

终端中的日期没有被翻译。TimeCurrent()给出最后的服务器时间
 
Dmitiry Ananiev:
终端中的日期并没有翻译。TimeCurrent()给出最新的服务器时间。

所以TimeCurrent()在测试器中被模拟...还是我错过了什么?你需要从测试者那里知道真实的当前时间,不是吗?

理论上,你可以使用WebRequest,从一些服务器(包括你自己的服务器)请求真实的当前时间。而策略测试的要求是在终端输入该服务器的地址。

 
Игорь Герасько:

所以TimeCurrent()在测试器中被模拟...还是我错过了什么?你需要从测试者那里知道真实的当前 时间。

你可以从测试者那里得到你的计算机的当前时间。

唯一的问题是,一个有恶意的用户可以大幅改变它。

理想情况下,你可以使用WebRequest从一些服务器(包括你自己的服务器)请求真实的当前时间。而测试策略的要求是在终端输入该服务器的地址。

WebRequest在策略测试器中没有被执行。
 

George Merts:

因此,有必要在测试器中获取当前日期,并且只允许EA工作到少一个月的日期。

--

[]......有一个聪明的用户,他似乎把电脑上的时间提前了,安安静静地看完了测试者的交易。

从一个独立的第三方获取时间--通过DLL,或通过WebRequest,如上文所述。我怀疑没有其他选择。
 
Igor Konyashin:
从一个独立的第三方获取时间--如上所述,通过DLL或WebRequest。我怀疑没有其他选择。
事实证明,WebRequest在策略测试器中 是不适用的。是的,这非常可悲,但到目前为止,除了自写的DLL,我想不出其他的办法......而且看起来--你只需要知道最后一次收到终端的真实报价的日期......
 
George Merts:

可以从测试器中找出计算机的当前时间。

唯一的问题是,一个有恶意的用户可以大幅改变它。

这就是我的意思。除了TimeCurrent() 在测试器中也不工作。
WebRequest在策略测试器中没有被执行。
我不知道这件事。谢谢你提供的信息。
 
Игорь Герасько:
这就是我所说的。除了TimeCurrent()在测试器中也不起作用。
TimeCurrent() - 根本不起作用,它返回的不是当前的计算机时间,而是报价时间,这取决于策略测试器 的设置。
 
George Merts:
TimeCurrent() - 根本不起作用,它不返回当前的计算机时间,而是返回报价时间,这取决于策略测试器 的设置。
我应该把什么设置放进去,放在哪里?TimrCurrent() - 服务器时间。在测试器中,它是服务器时间刻度的到达时间。自从我写猫头鹰以来,我从未将它们与当地的计算机时间联系起来。
原因: