DRAKON可视化编程语言 - 面向MQL开发人员和客户的通信工具(基础篇)
📘

DRAKON可视化编程语言 - 面向MQL开发人员和客户的通信工具(基础篇)

第 1/3 篇

「用 DRAKON 图跟客户对齐交易逻辑」

MQL5 开发者常遇到一个现实问题:写好的 EA 逻辑,客户看不懂代码,只能靠文字来回解释,沟通成本极高。DRAKON 是一种可视化编程语言,最初用于航天工程的人机界面,特点是流程图极度规整、无歧义,适合把分支和循环画成一眼能读的图。 对 MT5 生态来说,它的价值在于充当「开发者—客户」的中间语言:你用 MQL5 实现策略,用 DRAKON 画出决策流,客户确认图形无误后再交付代码,能明显减少需求错位。一篇 2024-03-19 发布的示例帖在站内获得 1 099 次查看、10 条评论,说明这类可视化协作工具在量化交易者里有真实需求。 外汇与贵金属 EA 开发本身高风险,逻辑一处写错可能直接放大回撤;用图形先做一层肉眼复核,比纯代码评审更友好。打开 MT5 社区搜 DRAKON 示例,先看懂别人怎么把入场条件画成菱形判断,再决定要不要引入你自己的项目。

用图形把EA逻辑讲明白

DRAKON 原本是苏联航天系统里为了降低人为读错流程而出世的图形化算法语言,核心不是写符号代码,而是在屏幕上用一组直观图标把执行步骤画出来。它最早服务于 Buran 航天器项目,后来由 Parondzhanov V.D. 推动公开化,如今连化学、医疗领域的人也在用,社区还做出了转 C、C++、Java、JavaScript 等语言的翻译器,多数编辑器导出的是纯文本 csv、xml 或 SQLite,便于二次处理。 和传统编程语言最大的差别是:DRAKON 不靠语法符号堆砌,而是把『现在超过19点吗』『均线交叉了吗』这类判断画成图。比如一个规则——双 MA 交叉后只记录信号,等价格从快线反弹且当地时间在 19:00 前才进场——用文字描述容易漏条件,画成图就能一眼看清分支与截止点。 对 MT5 交易者来说,这东西的价值在『通信』而不是炫技。你若自己画好图,部分工具可按键生成 MQL5 框架代码;你若是客户,拿图给开发,对方第一版出错的概率更低,后期改 bug 花的时间与钱也更少。图形让客户和程序员说同一种语言,那些『客户觉得显然、开发没想到』的坑,往往在图上一眼就暴露了。 外汇与贵金属自带高杠杆高风险,任何 EA 逻辑在实盘前都该用策略测试器跑过历史数据;DRAKON 只解决『需求别传达歪』,不解决『策略负期望』。

◍ 画DRAKON图的三件套与取舍

做可视化算法原型,我手上主要转过三个环境。Drakonhub 是在线编辑器,界面顺手、能画全类型 DRAKON 图,但不导出代码;其兄弟项目 drakon.tech 只面向 JavaScript,非程序员可用的图少,适合愿意手工补变量类型的客户与开发。 Fabula 是免费离线 Win 程序(QT 闭源),俄/英界面,图存为 zip 包里的 XML,能写 XSLT 直接出程序;它可跟踪算法生成伪代码,再经自动更正转成能跑的逻辑。本文绝大多数图用它画,因为颜值高、几乎零准备。 DRAKON Editor 用 TCL/TK 写,原生跨 Linux 不需 Wine,能直转 MQL5、C++、Java、Go 等十余种语言,但图标手摆、部分标题别扭、生成代码不总好看,且建文件方式得先读文档。要出代码我最终在这步切过去跑。 IS Drakon 付费,我没深用,界面近似 DRAKON Editor 却无突出优势。外汇/贵金属策略原型高风险,环境只是工具,逻辑错一切白搭。

「DRAKON 图里的那些标准图标到底管什么用」

DRAKON 脱胎于程序员熟悉的流程图,主元素基本沿用 GOST 方块图标准,但真正关键的是这些图形符号在平面上的排布规则。对交易者来说,看懂这套图标等于能直接读懂算法逻辑,不必等别人翻译成 MQL5 才知道策略在干什么。 最底层的「图标」就是定义动作、条件或操作的图形符号。Start 是算法入口,End 是结束;Action 块里按顺序跑命令,Problem 做二选一判断,Selection 则是多分支分发——它和 Problem 的区别就是选项可以超过两种,Option 用来挂在某条 Selection 分支为真时该执行的动作。 循环类有两个容易混:FOR loop start/end 管「已知次数」的重复,比如从 1 数到 10 或遍历数组;Loop arrow 才是「次数未知」的重复,典型如「一直检查水壶直到沸腾」。做 EA 回测逻辑时,这两种若用错,可能造成死循环或漏跑。 并行这块值得留意:Parallel process 在后台跑另一张 DRAKON 图定义的任务,主进程不等待,靠 Input/Output 图标通信。Timer 和 Time 管时间间隔与计划触发,Pause 则暂停到某事件或时刻。外汇与贵金属杠杆高、滑点突发的环境下,这类定时或并行逻辑若没隔离好异常,可能在高波动时重复发单。 注释类(Main line comment、左右注释、Caption)不影响执行,但能让医生或客户看懂算法意图。整套表基本覆盖了绝大多数片段图示,个别实现会禁掉部分图标或加「简单输入」之类的变体。

常见问题

用DRAKON图把开平仓条件画成流程图,客户看图形比看文字快得多,沟通前先画一张发过去对齐。
三件套(起点终点、问题判断、执行动作)必须画全,非核心的异常处理可先省略,等客户确认主逻辑再补。
小布可以把你口述的交易规则转成DRAKON草图,并标出容易和客户理解偏差的判断节点,你拿去直接讨论就行。
菱形是判断节点,用来放‘价格破均线吗’这类是非题;矩形是执行节点,放‘下多单’这种动作,别混用。
在判断节点后画一条‘否’分支指向终点,不接任何动作块,客户一眼就知道那种情况EA不动。