# надо обновить внутренние структуры # и вернуть триплет (список из трёх списков) # 1 - список новых ордеров # 2 - ордера которые поменялись # 3 - ордера которые удалены method OnOrderList { orderList } { set created {} set changed {} set removed {} foreach order $orderList { set ticket [ lindex $order 0 ] set known($ticket) $order if { ! [ info exists Orders($ticket) ] } { # новый тикет # добавить в список свежесозданных lappend created $ticket set Orders($ticket) $order continue } if { $Orders($ticket) != $order } { # что-то поменялось # добавить в список изменённых set Orders($ticket) $order lappend changed $ticket } } foreach ticket [ array names Orders ] { if { ! [ info exists known($ticket) ] } { # прежнего ордера нет в новом списке - значит удалён lappend removed $ticket unset Orders($ticket) } } # обновить грфику :-) foreach ticket $removed { my OnRemoveOrder $ticket } foreach ticket $changed { my OnChangeOrder $ticket } foreach ticket $created { my OnCreateOrder $ticket } return [ list $created $changed $removed ] }
Часто возникающий (и довольно практичный) вопрос у пользователей MetaTrader - «Как скопировать котировки в Excel?» . При помощи библиотеки ATcl это программируется довольно легко. В состав библиотеки входит «большая» программа работающая с Excel, но для частых потребностей сделал короткий скрипт, который делает самую простую вещь - экспорт...
在软件技术方面,有可能是的。只要不在云中,就可以从优化器中调用库。
在NS方面--你如何想象?
在优化器中进行一次传递,并将数据写入文件,然后传递给网络训练,训练后训练评估结果返回给MT4/5,网络(规则)被写入文件。而另一种观点是当我们使用NS逻辑的记录文件来进行优化(NS变体)和修复TS的标准指标。
我扩展了Tk图表演示 - 现在它也显示了订单表。
指向订单表的MQL代码
- 选择所有的订单并在OnOrderList方法中把它们发送给TCL。
- 在输出中,我们得到3个票据列表--新的票据、变化的票据和被删除的票据。
和做主要工作的Tcl方法。
- 获得一个新的订单列表
- 与以前的通话进行比较
- 构建3个列表(新的、改变的、删除的)。
- 它创建了一个表格......这实际上是一棵树,可以分几个层次来制作。
# надо обновить внутренние структуры
# и вернуть триплет (список из трёх списков)
# 1 - список новых ордеров
# 2 - ордера которые поменялись
# 3 - ордера которые удалены
method OnOrderList { orderList } {
set created {}
set changed {}
set removed {}
foreach order $orderList {
set ticket [ lindex $order 0 ]
set known($ticket) $order
if { ! [ info exists Orders($ticket) ] } {
# новый тикет
# добавить в список свежесозданных
lappend created $ticket
set Orders($ticket) $order
continue
}
if { $Orders($ticket) != $order } {
# что-то поменялось
# добавить в список изменённых
set Orders($ticket) $order
lappend changed $ticket
}
}
foreach ticket [ array names Orders ] {
if { ! [ info exists known($ticket) ] } {
# прежнего ордера нет в новом списке - значит удалён
lappend removed $ticket
unset Orders($ticket)
}
}
# обновить грфику :-)
foreach ticket $removed {
my OnRemoveOrder $ticket
}
foreach ticket $changed {
my OnChangeOrder $ticket
}
foreach ticket $created {
my OnCreateOrder $ticket
}
return [ list $created $changed $removed ]
}
一切都非常紧凑。
你可以利用两种语言的优势--MQL接近交易环境,在数组中快速计数。
Tcl可以很容易地处理列表和哈希值。
MQL实现了一个艰难的交易算法,而脚本则处理与世界和用户的互动。
档案附在后面。
将报价导出到Excel的脚本
我做了一个简短的脚本,将报价直接导出到Excel。
不需要在CSV中输入任何条目或任何参数--只要把它扔在图表上,Excel表就会打开,所有的报价都会被复制到里面。
我已经尽可能地对文本进行了评论,并将其附上。我已经在我的网站http://nektomk.ru/atcl:ratestoexcel,提供了该脚本的详细信息。
数额超出了本论坛的范围,所以它在那里。也许当我有心情时,我会在当地的博客中复制它,这样信息就不会丢失了,这是肯定的。
所附脚本
PS/ 有没有人有一个make-文件用于批量编译mql? 这将改变一个mqh,推送make并重建一堆mq4,这些都是在依赖关系中列出的。
更新/复制本地博客上的文章https://www.mql5.com/ru/blogs/post/718304- 现在它可能不会消失了该邮件可以使用,但仍然需要更多的工作来完成......
同时,有一个问题要问大家--GUI-Builder会有需求吗?
对于Tk来说,它们是存在的,但由于文本中的脚本比绘图中的写得快,它们的需求量很小。
类似这样的事情。
PS/这样的GUI-builder的结果可以从MT4启动...
该邮件可以使用,但仍需要更多的工作来完成......
但同时有一个问题要问大家--对GUI-Builder会有需求吗?
,对Tk来说,它们是有需求的,但由于用文本写脚本比用绘图写脚本要快,所以需求量不大。
类似这样的事情。
PS/这样一个GUI-builder的结果,现在在 "这样的母亲 "的帮助下,可以从MT4开始。
多么有趣的东西...只是如何应用它们?
啊,我有一个想法,只是图形界面--创建像决策树一样的交易逻辑!也就是说,在图形编辑器(即shell)中创建一棵树,并使用一个按钮将其转换为简单的规则,甚至直接转换为代码!这就是所谓的 "树"。然而,规则也可以在代码中以一种非常紧凑的方式来阅读。
我们为什么需要它?这种方法允许详细说明交易策略,例如,我们可以很容易地将其分为时间序列--不仅决定是否交易,而且决定是否在这个时间和这个时间以不同方式进行交易。改变战术的迹象有很多,但写在代码中不是很方便,其次,它很难直观地阅读 - 你可能会犯很多错误。
对这样的想法感兴趣,以应用你的才能?
多么有趣的东西...但如何应用它们呢?
啊,我有一个想法,只是图形界面--创建像决策树一样的交易逻辑!也就是说,我们在图形编辑器(即shell)中创建一棵树,并使用一个按钮将其转换为简单的规则,甚至直接转换成代码然而,规则也可以在代码中以一种非常紧凑的方式来阅读。
我们为什么需要它?这种方法允许详细说明交易策略,例如,我们可以很容易地将其分为时间序列--不仅决定是否交易,而且决定是否在这个时间和这个时间以不同方式进行交易。改变战术的迹象有很多,但写在代码中不是很方便,其次,它很难直观地阅读 - 你可能会犯很多错误。
对这样一个应用你的才能的想法感兴趣吗?
我不明白 "图形化决策树 "的想法。:-) 也许你的天赋还不够 :-)
我完全不明白 "图形化决策树 "的想法:-) 也许你没有足够的天赋 :-)
想象一下,一个有一套规则的数据表
这些规则在代码中以下列方式排列
如果我们有一个规则值和一个计算值(指标值/时间/其他模式)相吻合,那么就会执行一个交易行动,例如。
这种交易决策方法是非常紧凑和通用的--我们可以用这种简单的方式来编码,例如,许多策略--赋予它们不同的魔法符号。
但问题是,我们需要的只是这种编程风格的环境。这个环境应该看起来像一个决策树(一个原始框图),我们可以在其中创建块(计算结果,例如arr_iDelta_Max_D1,具有预定义的值(1,2,3,4 ...n)和/或具有限制值的可能性,以这种方式创建许多不同的组),从这个块将为每个变量的值或变量的值范围分支,等等,直到下一个块,如此循环。因此,我们将有一套规则,顺便说一下,每条规则不一定要使用所有的区块。
这让你明白了吗?如果你需要解释,请问。
呈现一个带有一组规则的数据表格
这些规则的编码如下
如果我们有一个规则值和计算值(指标值/时间/其他模式)的重合,那么,例如,一个交易行动被执行。
这种交易决策方法是非常紧凑和通用的--我们可以用这种简单的方式来编码,例如,许多策略--赋予它们不同的魔法符号。
但问题是,我们需要的只是这种编程风格的环境。这个环境应该看起来像一个决策树(一个原始框图),我们可以在其中创建块(计算结果,例如arr_iDelta_Max_D1,具有预定义的值(1,2,3,4 ...n)和/或具有限制值的可能性,以这种方式创建许多不同的组),从这个块将为每个变量的值或变量的值范围分支,等等,直到下一个块,如此循环。因此,我们将有一套规则,顺便说一下,每条规则不一定要使用所有的区块。
这让你明白了吗?如果你需要解释,请问。
我在tcl中见过它--一个他们用箭头连接块的环境......他们就是这样对声音/视频/图形处理进行编程的。http://wiki.tcl.tk/8565,似乎有很多东西,他们甚至把Maxima卡在一些块中。
如果是这样--将密切关注
像Xcos (http://www.scilab.org/en/scilab/features/xcos)和模拟中类似的时尚?
我在tcl中看到过--他们用箭头连接块的环境......他们就是这样对声音/视频/图形处理进行编程的。http://wiki.tcl.tk/8565,似乎有很多东西,他们甚至把Maxima塞进一些块中。
如果是这样--将密切关注
是的,这就是方法!这就是方法。最主要的是不要把事情复杂化,要做一个正确的解释器,使所有的块都收集在一行中(一个分支),用MQL的程序已经可以工作了。
是的,这就是方法!最主要的是不要把事情复杂化,要做一个正确的解释器,使所有的块都收集在一行中(一个分支),这样就已经可以和MQL中的程序一起工作了。
我不认为我想过度复杂化,例如我不想乱用bwise代码。
最多,我将调整它与ATcl一起使用(即把数据从Mql转移到它的输入端)并取得输出。
当然,我将不得不写一些HowTo "如何绘制方块并将其附在EA上"。并在与作者交流时练习英语 :-)