当你想 编程专家顾问, 考虑如何有可能使用的文件是非常重要的. 我看到了新的最常见的错误 MQL程序员 提出的是,他们太依赖内存. 像停电事件, 硬盘驱动器崩溃或弱的互联网连接可以与专家顾问交易时肆虐. 在EA最好应能够拿起和运行,只要你能恢复条件下才能正常.
内存问题
问题有时会从世俗的东西像更改设置导致. 我了解到硬盘的方式,当一个客户来到我们 达拉斯的办公室 两周订购一个非常复杂的EA. 一切都在完美地工作 回测试. 隔夜测试, 然而, 从来没有持续超过几个小时,出事前失控. 我指示客户端不能更改设置; 只需打开它,并息事宁人. 无论出于何种原因, 这些指令的重要性从来没有沉没. 我花了年龄意识到他的定义 “独自离开它” 没有完全与我网. 小的调整,他在交易搞砸的设置所做的,我存储在内存中.
我可以指示客户端使用软件以某种方式. 数见不鲜, 他们从某种程度的指示偏离. 这是人的本性. 我从这些挑战了解到, 像任何职业都要. 我们的 程序设计 在结构上改变了模板,以尽量减少需要特别说明.
全局变量
全局变量是一个通用的工具,以避免依赖于存储器的问题. 当EA从图表中删除, 它所创建的全局变量是给你的访问, 在EA或任何其他EA从MetaTrader的内部随时随地阅读.
虽然使用全局变量听起来复杂, 它实际上是一个非常简单的方法. MetaTrader的维持一个隐藏的文本文件,在其安装目录中的变量名, 它存储的价值,这是最后一次修改的时间. 每当超过 6 自从上次周已过 MQL 所使用的全局变量, MetaTrader的自动删除它.
一 鞅 系统可能会选择使用全局变量来跟踪一个简单的统计. 鞅 野生与他们的做法风险, 因此交易者可以实事求是地想知道一目了然最高水平交易. 全局变量做一个简单的任务出于这种需要. 如果一个新的水平,以贸易大于全局变量, 那么 MQL代码 要更新全局变量.
要记住的唯一项目就是全局变量在六周后到期. 将EA可能需要通过重置全局值到它的当前值来刷新信息. 这样做将继续从MetaTrader的的角度变新.
阅读,而不是将其存储信息
我宁愿依靠 MQL的OrderSelect() 命令重新创建的任何信息,我需要. 虽然它是比较复杂的, 的优点是,电针可以起作用的任何时间, 任何地方, 完全按照设计. 如果硬盘驱动器崩溃, 它不是从恢复角度看问题. 你仍然处于困境中的停机时间, 虽然. 您可以加载相同的EA在您MT4账户,并立即重建信息.
综合以上 鞅 脚本, 我们可以重建通过比较行业的开闭次交易级别的数量. 如果贸易 #1 有一个关闭时间 2011 十二月. 5 00:00 与贸易 #2 也有密切的时间 2011 十二月. 5 00:00, 它告诉我们,他们是同行业组的一部分. 到目前为止, 我们有 2 成交水平. 如果贸易 #5 在关闭 2011 十二月. 5 00:00 但没有交易后做, 那么我们知道我们交易 5 水平的总. 在EA然后可以通过所有可能的组合循环,并挑选出的最高数量从.
从订单历史阅读的方法是为这个简单的例子有点矫枉过正, 但它派上用场的时候,你需要动态地计算更复杂的信息和错误的风险降至最低.