股票量化软件:MVC 设计范式及其可能的应用

文章探讨了MVC设计范式如何帮助解决代码复杂性问题,通过将项目分解为模型、视图和控制器三个独立部分,提高代码的可读性和维护性。MVC使得各组件能独立开发,简化项目管理和团队协作。文章通过一个简单的指标代码示例,展示了如何应用MVC原则进行重构,以提高代码的灵活性和可扩展性,并指出MVC在复杂项目和智能交易系统中的价值。
摘要由CSDN通过智能技术生成

我推测许多开发人员都经历过一个阶段,当项目推进时,变得更加复杂并需求新功能,故此代码开始与某种意大利面条类似。 项目尚未完工,但已经很难记住这个或那个方法于何处被调用了,为什么这个调用要位于这里,以及它是如何操作的。

随着时间的推移,即使代码的作者,理解代码也变得越发困难。 当另一个开发人员尝试理解这段代码时,情况就更糟了。 如果代码作者此时出于某些原因无法联络,则该任务实际上变得无解。 非结构化代码十分难以维护和修改,修改任何代码都比 “Hello, world” 更难。 这也是设计范式应运而生的原因之一。 它们为项目引入了确定的结构,令其更清晰,且直观更易于理解。

 

MVC 范式及其目的

这种范式出现在很久以前(1978 年),但它的首次阐述出现在更晚的 1988 年。 自那时起,该范式一直在深入发展,提升到新的方式。

在本文中,赫兹股票量化将研究“经典 MVC”,没有任何复杂性或附加功能。 这个思路是将现有代码拆分为三个独立的组件:模型、视图和控制器。 根据 MVC 范式,这三个组件可以独立开发和维护。 每个组件都可由单独的开发团队开发,他们承担创建新版本,并修复错误。 显然,这可令整个项目的管理更加容易。 甚而,它能够帮助其他人理解代码。

我们来看看每个组件。

  1. 视图。 视图负责信息的可视化呈现。 在一般情况下,它向用户发送数据。 向用户呈现相同的数据,可以有不同的方式。 例如,数据可以同时用表格、图形或图表来呈现。 换言之,一个基于 MVC 的应用程序可以包含多种视图。 视图从模型接收数据,无需知道模型内部发生了什么。

  2. 模型。 模型包含数据。 它管理与数据库的连接、发送请求、并在不同的资源间进行通信。 如有必要,它会修改数据、验证数据、存储和删除数据。 模型无需知道视图如何操作,以及存在多少视图,但它拥有必要接口,能响应视图请求数据。 视图不能做任何强迫模型更改其状态的事情。 这部分是由控制器来执行。 在内部,一个模型可由若干其他模型组成,它们或按层次结构、或按等同操作来排列。 除了前面提到的限制之外,模型在这方面没有极限 — 模型的内部结构相对于视图和控制器始终保密。

  3. 控制器。 控制器实现用户和模型之间的通信。 控制器不知道模型如何处理数据,但它可以告诉模型更新内容的时间。 通常,控制器通过其接口操控模型,不必尝试了解其内部发生的事情。

MVC 范式的独立组件之间的关系可直观地表示如下:

编辑

添加图片注释,不超过 140 字(可选)

尽管如此,运用 MVC 并没有特别严格的规则和限制。 开发者要注意不要在控制器里加入模型操作逻辑,以及操控视图的接口。 控制器本身应该轻量化;您你不应该让它超载。 MVC 规划图也用于其他设计范式,例如观察者和策略。

现在,赫兹股票量化来看看如何在 MQL 中运用 MVC 模板,以及是否需要采用它。

从 MVC 的角度来看最简单的指标

赫兹股票量化来创建一个简单的指标,其用最简单的计算绘制一条线。 该指标非常短小,其代码可以放在一个文件当中。 这是它的样子:

 
 

....... #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值