文章 "来自专业程序员的提示(第二部分):在智能交易系统、脚本和外部程序之间存储和交换参数"

 

新文章 来自专业程序员的提示(第二部分):在智能交易系统、脚本和外部程序之间存储和交换参数已发布:

这些来自专业程序员关于方法、技术和辅助工具的一些提示,可令编程变得更轻松。 我们将讨论终端重启(关闭)后如何恢复参数。 所有示例都是来自我的 Cayman 项目的真实工作代码片段。

etTradeLevel 脚本允许设置交易级别的参数。 在图表上选择了一个对象(直线、趋势线或矩形)。 SetTradeLevel 脚本查找所选对象(交易级别),并为其设置参数。

SetTradeLevel 脚本参数

接下来,脚本将参数保存到 Files\Cayman\Params\128968168864101576\exp_05_Lev607A160E_H4.txt,并通过 SendCommand 函数发送命令和文件路径至文件。

作者:Malik Arykov

 

为什么我需要第三方服务来向我的智能手机发送信息?它们更好吗?终端中有 "信息推送 "功能。

如果您需要立即传输信息(例如,脚本创建了一些东西,EA 立即接受)--可以。 如果 EA 需要加载和获取交易信息(当前的马丁级别、订单组等,这些信息不在订单中),那么最好尽可能不使用文件和本地存储进行管理。大多数用户都会忘记在某个地方有一个文件,在将智能交易系统转移到另一个终端时会大吃一惊。

此外,除了订单(仓位)中的注释外,还有一个神奇的功能,可以对信息进行加密。

我还要注意信息到达时的性能和检查次数。

 
Sofiia Butenko:

为什么我需要第三方服务来向我的智能手机发送信息?它们更好吗?终端中有推送消息功能。

如果您需要一次性传输信息(例如,脚本创建了一些东西,EA 立即接受)--可以。 如果 EA 需要加载和获取交易信息(当前的马丁水平、订单组等,这些信息不在订单中),那么最好尽可能不使用文件和本地存储进行管理。大多数用户会忘记在某个地方有一个文件,在将智能交易系统转移到另一个终端时会大吃一惊。

此外,除了订单(仓位)中的注释外,还有一个 magik,您也可以在其中加密信息。

我还要注意信息到达时的性能和检查次数。

1)每种类型的通知都有声音。

2) 用户无需了解文件。这是程序的逻辑。如果有文件--恢复参数,如果没有文件--使用默认值。

3)我可以在终端中看到订单注释,并能立即知道交易失败的原因。因为我可以在立即下单之前看到情况。

4) 对不起,我不明白性能和检查次数。您能用手指给我演示一下吗?

 
Malik Arykov:

1)每种类型的通知都有不同的声音。

2) 用户无需了解文件。这就是软件的逻辑。如果有文件--恢复参数,如果没有文件--使用默认值

3)我可以在终端上看到历史记录中的订单注释,我可以立即知道亏损交易的问题所在。因为我可以在打开订单前立即看到情况

4) 很抱歉,我不了解性能和检查次数。您能用手指给我演示一下吗?

1) 好的,虽然用户从未提出过这样的要求。很久以前就有过 SMS 的要求,为此需要第三方服务。

2) 如果文件是加载 EA 所必需的,则必须与 EA 一起传输。您没有理解我的意思。

3) 失败的交易有什么问题?有时您需要数百个真实或历史订单来还原交易的全貌。选择每个订单都会占用大量资源,而在 MT4 中可能没有历史订单(如果用户没有选择历史订单),因此应将所有搜索操作减少到最低限度。我说的不是简单的情况。

4) 如何知道第二个程序创建了图形对象?通过不断枚举所有对象并检查每个勾的名称吗?然后用户会运行几十个甚至上百个版本,然后说 "做点什么吧,我被挂起了"。确实有这样的情况......

-------

我的所有观点都是基于我在自由职业中的经验--如何做到用户不会破坏任何东西,然后也不会抱怨。

 
Sofiia Butenko:

4) 如何知道第二个程序创建了一个图形对象?通过不断查看所有对象并检查每个勾选的名称吗?然后用户会运行几十个甚至上百个版本,然后说 "做点什么吧,我被挂住了"。确实有这样的情况......

-------

我的所有观点都是基于我在自由职业中的经验--如何做到用户不破坏任何东西,然后也不抱怨。

4) 带参数的图形对象的名称是唯一且不变的。我运行了脚本。我设置了参数并将其保存在图形对象中。Expert Advisor 每运行一次都会检查是否只有一个对象。如果有一个对象,它会读取参数并立即删除。脚本和 Expert Advisor 都在一个图表上。其他图表上的专家对此一无所知。

 
Sofiia Butenko:

2) 如果该文件是加载 EA 所必需的,并且应与 EA 一起传输,则必须这样做。您没有理解我的意思。

在启动智能交易系统或脚本时,我收到 "没有 PATH/AppSettings.txt 文件。请阅读安装说明"。

 
把简单的事情复杂化......或者说,把一篇什么都没有的文章称作什么更悲怆。
 
Sofiia Butenko:

为什么我需要第三方服务来向我的智能手机发送信息?它们更好吗?终端中有推送消息功能。

帮助中说:"SendNotification() 函数有严格的使用限制:每秒调用次数不超过 2 次,每分钟不超过 10 次。使用频率是动态控制的,如果违反,函数会被阻止。

这些限制非常严格,例如,如果 Expert Advisor 在蜡烛图开盘时执行交易操作

我使用 Telegram 发送信息。

 

Я пользуюсь отправкой сообщений в Телеграм.

我以前也做过类似的事情,现在我对发送任何东西或任何地方都不感兴趣了,终端内置的服务已经足够了,我很少看它、

一般来说,我认为您不能通过发送信息来 减慢交易机器人的速度,.....。一般来说,我认为您不能通过发送信息来拖慢交易机器人的速度,因为这样或那样的原因会让交易机器人本身暂停、

但关于 Telegram 和这里提出的解决方案,我不得不说这篇文章提供了一个简单得多的解决方案 .....感谢作者

 
Boris Egorov:

一般来说,我认为您不应该通过发送 .... 消息来减慢交易机器人的运行速度。因为这样或那样的原因,交易机器人本身可能会暂停运行、

WebRequest 有一个超时参数。您可以在发送请求前后插入Print(TimeCurrent()),检查WirePusher服务的WebRequest速度。通常情况下,这可以忽略不计。如果超时后仍出现错误代码,则可以创建请求处理队列。消息没有在下一个 tick 离开,所以它也会在下一个 tick 离开。最重要的是在发送成功后将其从队列中移除;-)

 
Aleksey Mavrin:
难就难在简单......或者更可悲的是把一篇文章说得一无是处。

+