前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[转]UML类图

[转]UML类图

作者头像
干货满满张哈希
发布于 2021-04-12 08:09:44
发布于 2021-04-12 08:09:44
1.1K0
举报

基础

如先前所提到的,类图的目的是显示建模系统的类型。在大多数的 UML 模型中这些类型包括:

  • 接口
  • 数据类型
  • 组件

UML 为这些类型起了一个特别的名字:“分类器”。通常地,你可以把分类器当做类,但在技术上,分类器是更为普遍的术语,它还是引用上面的其它三种类型为好。

类名

类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。图 1 显示一个航线班机如何作为 UML 类建模。正如我们所能见到的,名字是 Flight,我们可以在中间区域看到Flight类的3个属性:flightNumber,departureTime 和 flightDuration。在底部区域中我们可以看到Flight类有两个操作:delayFlight 和 getArrivalTime。

图 1: Flight类的类图

类属性列表

类的属性节(中部区域)在分隔线上列出每一个类的属性。属性节是可选择的,要是一用它,就包含类的列表显示的每个属性。该线用如下格式:

name : attribute type

flightNumber : Integer

继续我们的Flight类的例子,我们可以使用属性类型信息来描述类的属性,如表 1 所示。

表 1:具有关联类型的Flight类的属性名字

属性名称属性类型flightNumberIntegerdepartureTimeDateflightDurationMinutes

属性名称

属性类型

flightNumber

Integer

departureTime

Date

flightDuration

Minutes

属性名称

属性类型

flightNumber

Integer

departureTime

Date

flightDuration

Minutes

在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。

在类图上显示具有默认值的特定属性,有时是有用的(例如,在银行账户应用程序中,一个新的银行账户会以零为初始值)。UML 规范允许在属性列表节中,通过使用如下的记号作为默认值的标识:

name : attribute type = default value

举例来说:

balance : Dollars = 0

显示属性默认值是可选择的;图 2 显示一个银行账户类具有一个名为 balance的类型,它的默认值为0。

图 2:显示默认为0美元的balance属性值的银行账户类图。

类操作列表

类操作记录在类图长方形的第三个(最低的)区域中,它也是可选择的。和属性一样,类的操作以列表格式显示,每个操作在它自己线上。操作使用下列记号表现:

name(parameter list) : type of value returned

下面的表 2 中Flight类操作的映射。

表 2:从图 2 映射的Flight类的操作

操作名称返回参数值类型delayFlight NameTypenumberOfMinutesMinutesN/AgetArrivalTimeN/ADate

操作名称

返回参数

值类型

delayFlight

NameTypenumberOfMinutesMinutes

Name

Type

numberOfMinutes

Minutes

N/A

getArrivalTime

N/A

Date

操作名称

返回参数

值类型

delayFlight

NameTypenumberOfMinutesMinutes

Name

Type

numberOfMinutes

Minutes

N/A

Name

Type

numberOfMinutes

Minutes

getArrivalTime

N/A

Date

图3显示,delayFlight 操作有一个Minutes类型的输入参数 -- numberOfMinutes。然而,delayFlight 操作没有返回值。1 当一个操作有参数时,参数被放在操作的括号内;每个参数都使用这样的格式:“参数名:参数类型”。

图 3:Flight类操作参数,包括可选择的“in”标识。

当文档化操作参数时,你可能使用一个可选择的指示器,以显示参数到操作的输入参数、或输出参数。这个可选择的指示器以“in”或“out”出现,如图3中的操作区域所示。一般来说,除非将使用一种早期的程序编程语言,如Fortran ,这些指示器可能会有所帮助,否则它们是不必要的。然而,在 C++和Java中,所有的参数是“in”参数,而且按照UML规范,既然“in”是参数的默认类型,大多数人将会遗漏输入/输出指示器。

继承

在面向对象的设计中一个非常重要的概念,继承,指的是一个类(子类)继承另外的一个类(超类)的同一功能,并增加它自己的新功能(一个非技术性的比喻,想象我继承了我母亲的一般的音乐能力,但是在我的家里,我是唯一一个玩电吉他的人)的能力。为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的类型:图 4 显示 CheckingAccount 和 SavingsAccount 类如何从 BankAccount 类继承而来。

图 4: 继承通过指向超类的一条闭合的,单箭头的实线表示。

在图 4 中,继承关系由每个超类的单独的线画出,这是在IBM Rational Rose和IBM Rational XDE中使用的方法。然而,有一种称为 树标记的备选方法可以画出继承关系。当存在两个或更多子类时,如图 4 中所示,除了继承线象树枝一样混在一起外,你可以使用树形记号。图 5 是重绘的与图 4 一样的继承,但是这次使用了树形记号。

图 5: 一个使用树形记号的继承实例

抽象类及操作 细心的读者会注意到,在图 4 和 图5 中的图中,类名BankAccount和withdrawal操作使用斜体。这表示,BankAccount 类是一个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount 类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount 两个子类都分别地执行它们各自版本的操作。

然而,超类(父类)不一定要是抽象类。标准类作为超类是正常的。

关联 当你系统建模时,特定的对象间将会彼此关联,而且这些关联本身需要被清晰地建模。有五种关联。在这一部分中,我将会讨论它们中的两个 -- 双向的关联和单向的关联,而且我将会在Beyond the basics部分讨论剩下的三种关联类型。请注意,关于何时该使用每种类型关联的详细讨论,不属于本文的范围。相反的,我将会把重点集中在每种关联的用途,并说明如何在类图上画出关联。

双向(标准)的关联 关联是两个类间的联接。关联总是被假定是双向的;这意味着,两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。回顾一下Flight 的例子,图 6 显示了在Flight类和Plane类之间的一个标准类型的关联。

图 6:在一个Flight类和Plane类之间的双向关联的实例

一个双向关联用两个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图 6 显示Flight与一个特定的Plane相关联,而且Flight类知道这个关联。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类后面的多重值描述0...1表示,当一个Flight实体存在时,可以有一个或没有Plane与之关联(也就是,Plane可能还没有被分配)。图 6 也显示Plane知道它与Flight类的关联。在这个关联中,Flight承担“assignedFlights”角色;图 6 的图告诉我们,Plane实体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。

由于对那些在关联尾部可能出现的多重值描述感到疑惑,下面的表3列出了一些多重值及它们含义的例子。

表 3: 多重值和它们的表示

可能的多重值描述表示含义0..10个或1个1只能1个0..*0个或多个*0个或多个1..*1个或我个3只能3个0..50到5个5..155到15个

可能的多重值描述

表示

含义

0..1

0个或1个

1

只能1个

0..*

0个或多个

*

0个或多个

1..*

1个或我个

3

只能3个

0..5

0到5个

5..15

5到15个

可能的多重值描述

表示

含义

0..1

0个或1个

1

只能1个

0..*

0个或多个

*

0个或多个

1..*

1个或我个

3

只能3个

0..5

0到5个

5..15

5到15个

单向关联 在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。图 7 显示单向关联的透支财务报告的一个实例。

图 7: 单向关联一个实例:OverdrawnAccountsReport 类 BankAccount 类,而 BankAccount 类则对关联一无所知。

一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。在图 7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道 BankAccount 类扮演“overdrawnAccounts”的角色。然而,和标准关联不同,BankAccount 类并不知道它与 OverdrawnAccountsReport 相关联。2

软件包 不可避免,如果你正在为一个大的系统或大的业务领域建模,在你的模型中将会有许多不同的分类器。管理所有的类将是一件令人生畏的任务;所以,UML 提供一个称为 软件包的组织元素。软件包使建模者能够组织模型分类器到名字空间中,这有些象文件系统中的文件夹。把一个系统分为多个软件包使系统变成容易理解,尤其是在每个软件包都表现系统的一个特定部分时。3

在图中存在两种方法表示软件包。并没有规则要求使用哪种标记,除了用你个人的判断:哪种更便于阅读你画的类图。两种方法都是由一个较小的长方形(用于定位)嵌套在一个大的长方形中开始的,如图 8 所示。但是建模者必须决定包的成员如何表示,如下:

  • 如果建模者决定在大长方形中显示软件包的成员,则所有的那些成员4 需要被放置在长方形里面。另外,所有软件包的名字需要放在软件包的较小长方形之内(如图 8 的显示)。
  • 如果建模者决定在大的长方形之外显示软件包成员,则所有将会在图上显示的成员都需要被置于长方形之外。为了显示属于软件包的分类器属于,从每个分类器画一条线到里面有加号的圆周,这些圆周粘附在软件包之上(图9)。

图 8:在软件包的长方形内显示软件包成员的软件包元素例子

图 9:一个通过连接线表现软件包成员的软件包例子

了解基础重要性

在 UML 2 中,了解类图的基础更为重要。这是因为类图为所有的其他结构图提供基本的构建块。如组件或对象图(仅仅是举了些例子)。

回页首

超过基础

到此为止,我已经介绍了类图的基础,但是请继续往下读!在下面的部分中,我将会引导你到你会使用的类图的更重要的方面。这些包括UML 2 规范中的接口,其它的三种关联类型,可见性和其他补充。

接口 在本文的前面,我建议你以类来考虑分类器。事实上,分类器是一个更为一般的概念,它包括数据类型和接口。

关于何时、以及如何高效地在系统结构图中使用数据类型和接口的完整讨论,不在本文的讨论范围之内。既然这样,我为什么要在这里提及数据类型和接口呢?你可能想在结构图上模仿这些分类器类型,在这个时候,使用正确的记号来表示,或者至少知道这些分类器类型是重要的。不正确地绘制这些分类器,很有可能将使你的结构图读者感到混乱,以后的系统将不能适应需求。

一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”,如图 10 所示。5

图 10:Professor类和Student类实现Person接口的类图实例

在图 10 中显示的图中,Professor和Student类都实现了Person的接口,但并不从它继承。我们知道这一点是由于下面两个原因:1) Person对象作为接口被定义 -- 它在对象的名字区域中有“interface”文本,而且我们看到由于Professor和Student对象根据画类对象的规则(在它们的名字区域中没有额外的分类器文本)标示,所以它们是 类对象。 2) 我们知道继承在这里没有被显示,因为与带箭头的线是点线而不是实线。如图 10 所示,一条带有闭合的单向箭头的点 线意味着实现(或实施);正如我们在图 4 中所见到的,一条带有闭合单向箭头的实线表示继承。

更多的关联 在上面,我讨论了双向关联和单向关联。现在,我将会介绍剩下的三种类型的关联。

关联类 在关联建模中,存在一些情况下,你需要包括其它类,因为它包含了关于关联的有价值的信息。对于这种情况,你会使用 关联类 来绑定你的基本关联。关联类和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。图 11 显示一个航空工业实例的关联类。

图 11:增加关联类 MileageCredit

在图 11 中显示的类图中,在Flight类和 FrequentFlyer 类之间的关联,产生了称为 MileageCredit的关联类。这意味当Flight类的一个实例关联到 FrequentFlyer 类的一个实例时,将会产生 MileageCredit 类的一个实例。

聚合 聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中, 部分类 的生命周期独立于 整体类 的生命周期。

举例来说,我们可以想象,车 是一个整体实体,而 车轮 轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下, 部分 类的生命周期并 不 独立于 整体 类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。 公司和部门 都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于Company类的实例而存在。

让我们更进一步探讨基本聚合和组合聚合。

基本聚合 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。图 12 显示车和轮胎间的聚合关系的例子。

图 12: 一个聚合关联的例子

组合聚合 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。在图13中,显示了Company类和Department类之间的组合关系,注意组合关系如聚合关系一样绘制,不过这次菱形是被填充的。

图 13: 一个组合关系的例子

在图 13 中的关系建模中,一个Company类实例至少总有一个Department类实例。因为关系是组合关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另一个重要功能是部分类只能与父类的实例相关(举例来说,我们例子中的Company类)。

反射关联 现在我们已经讨论了所有的关联类型。就如你可能注意到的,我们的所有例子已经显示了两个不同类之间的关系。然而,类也可以使用反射关联与它本身相关联。起先,这可能没有意义,但是记住,类是抽象的。图 14 显示一个Employee类如何通过manager / manages角色与它本身相关。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。

图 14:一个反射关联关系的实例

图 14 描绘的关系说明一个Employee实例可能是另外一个Employee实例的经理。然而,因为“manages”的关系角色有 0..*的多重性描述;一个雇员可能不受任何其他雇员管理。

可见性 在面向对象的设计中,存在属性及操作可见性的记号。UML 识别四种类型的可见性:public,protected,private及package。

UML 规范并不要求属性及操作可见性必须显示在类图上,但是它要求为每个属性及操作定义可见性。为了在类图上的显示可见性,放置可见性标志于属性或操作的名字之前。虽然 UML 指定四种可见性类型,但是实际的编程语言可能增加额外的可见性,或不支持 UML 定义的可见性。表4显示了 UML 支持的可见性类型的不同标志。

表 4:UML 支持的可见性类型的标志

标志可见性类型+Public#Protected-Private~Package

标志

可见性类型

+

Public

#

Protected

-

Private

~

Package

标志

可见性类型

+

Public

#

Protected

-

Private

~

Package

现在,让我们看一个类,以说明属性及操作的可见性类型。在图 15 中,所有的属性及操作都是public,除了 updateBalance 操作。updateBalance 操作是protected。

图 15:一个 BankAccount 类说明它的属性及操作的可见性

UML 2 补充

既然我们已经覆盖了基础和高级主题,我们将覆盖一些由UML 1. x增加的类图的新记号。

实例 当一个系统结构建模时,显示例子类实例有时候是有用的。为了这种结构建模,UML 2 提供 实例规范 元素,它显示在系统中使用例子(或现实)实例的值得注意的信息。

实例的记号和类一样,但是取代顶端区域中仅有的类名,它的名字是经过拼接的:

Instance Name : Class Name

举例来说:

Donald : Person

因为显示实例的目的是显示值得注意的或相关的信息,没必要在你的模型中包含整个实体属性及操作。相反地,仅仅显示感兴趣的属性及其值是完全恰当的。如图16所描述。

图 16:Plane类的一个实例例子(只显示感兴趣的属性值)

然而,仅仅表现一些实例而没有它们的关系不太实用;因此,UML 2 也允许在实体层的关系/关联建模。绘制关联与一般的类关系的规则一样,除了在建模关联时有一个附加的要求。附加的限制是,关联关系必须与类图的关系相一致,而且关联的角色名字也必须与类图相一致。它的一个例子显示于图 17 中。在这个例子中,实例是图 6 中类图的例子实例。

图 17:图 6 中用实例代替类的例子

图 17 有Flight类的二个实例,因为类图指出了在Plane类和Flight类之间的关系是 0或多。因此,我们的例子给出了两个与NX0337 Plane实例相关的Flight实例。

角色 建模类的实例有时比期望的更为详细。有时,你可能仅仅想要在一个较多的一般层次做类关系的模型。在这种情况下,你应该使用 角色 记号。角色记号类似于实例记号。为了建立类的角色模型,你画一个方格,并在内部放置类的角色名及类名,作为实体记号,但是在这情况你不能加下划线。图 18 显示一个由图 14 中图描述的雇员类扮演的角色实例。在图 18 中,我们可以认为,即使雇员类与它本身相关,关系确实是关于雇员之间扮演经理及团队成员的角色。

图 18:一个类图显示图14中扮演不同角色的类

注意,你不能在纯粹类图中做类角色的建模,即使图 18显示你可以这么做。为了使用角色记号,你将会需要使用下面讨论的内部结构记号。

内部的结构 UML 2 结构图的更有用的功能之一是新的内部结构记号。它允许你显示一个类或另外的一个分类器如何在内部构成。这在 UML 1. x 中是不可能的,因为记号限制你只能显示一个类所拥有的聚合关系。现在,在 UML 2 中,内部的结构记号让你更清楚地显示类的各个部分如何保持关系。

让我们看一个实例。在图 18 中我们有一个类图以表现一个Plane类如何由四个引擎和两个控制软件对象组成。从这个图中省略的东西是显示关于飞机部件如何被装配的一些信息。从图 18 的图,你无法说明,是每个控制软件对象控制两个引擎,还是一个控制软件对象控制三个引擎,而另一个控制一个引擎。

图 19: 只显示对象之间关系的类图

绘制类的内在结构将会改善这种状态。开始时,你通过用二个区域画一个方格。最顶端的区域包含类名字,而较低的区域包含类的内部结构,显示在它们父类中承担不同角色的部分类,角色中的每个部分类也关系到其它类。图 19 显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

图 20:Plane类的内部结构例子。

在图 20 中Plane有两个 ControlSoftware 对象,而且每个控制二个引擎。在图左边上的 ControlSoftware(control1)控制引擎 1 和 2 。在图右边的 ControlSoftware(control2)控制引擎 3 和 4 。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/07/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精选股票、期货量化投资策略系列(一)基于Matlab
均线通道+突破+加仓 策略原理: 20均线为中轴,上下一个单位的标准差构成一个均线通道 多头入场:价格突破通道上轨,且成为近期高点 空头入场:价格突破通道下轨,且成为近期低点 加仓:价格每变动2倍ATR 出场:动态跟踪止损 短布林通道+高低点 策略原理: 通过布林带以及突破后的高低点的形成产生交易信号 采取跟踪止损出场 波动突破
量化投资与机器学习微信公众号
2018/01/29
1.2K0
精选股票、期货量化投资策略系列(一)基于Matlab
量化分析经典策略总结
菲阿里四价同 R Breaker 一样,也是一种 日内 策略交易,适合短线投资者。
EmoryHuang
2022/10/31
2.5K0
量化交易中常用的止盈、止损方法技巧总结
量化交易作为交易与计算机结合的产物,正在改变着现代金融市场的格局。如今已经有很 名交易者将目光转向了这一领域。如何最大限度地降低风险并尽可能多地取得收益,是许多交 易者孜孜以求的目标。
数据STUDIO
2022/05/24
3.2K0
Python 卖空算法教程(三)
市场参与者通常觉得市场的广大相当令人生畏。因此,在我们开始将我们在前几章中涵盖的想法转化为结合的投资策略之前,我们将专门撰写一个简短的章节,将市场简化为可管理的投资范围。
ApacheCN_飞龙
2024/05/11
2060
Python 卖空算法教程(三)
精选股票、期货量化投资策略系列(三)基于AT量能-MATLAB
网格资金管理(突破进场) 策略原理 将资金分为N份,采取突破高点的形式入场,止损为10%,止盈为11% 如果该份资金获利超过11%,则上移止盈止损线,且启动下一份资金抛点入场。 仅多头入场 策略收益
量化投资与机器学习微信公众号
2018/01/29
1.2K0
精选股票、期货量化投资策略系列(三)基于AT量能-MATLAB
【干货】期货市场的佼佼者是如何做资金管理的?
对于资金管理,是一个老生常谈的话题,大家都不陌生。在笔者看来,资金管理就是合理的分配和运用资金。在期货市场中,亏损是常态,但是亏损后还能不能爬起来,主要关系到两点——信心和资金。有投资者在连续受挫后失去对交易信心,被自己打败,有投资者因为亏完了资金,被市场打败。失去信心被自己打败,这关乎于“心态”问题,我们暂且不提,今天主要来谈谈亏损完资金被市场打败,这个关乎于“资金管理”的问题。有这样一句话,若不认识到资金管理的厉害,不仅会造成大亏,甚至被市场淘汰,可见资金管理有多么重要。那么,如何合理的分配和运用资金?如何做好资金管理?正所谓留得青山在,不怕没柴烧,留住明天还能生存的实力,比今天获利还重要。在资金管理中,头寸管理、品种资金的分配、每笔交易资金使用的大小、盘中加减仓等等,都能影响整个交易战绩。所以,想要做一个不会被期市淘汰的投资者,那你就不能忽视资金管理。
量化投资与机器学习微信公众号
2019/02/26
1.2K0
缠论怎么交易二级市场 正确使用缠论开始及结束交易
缠论:一种分析股票市场的技术分析方法和交易理念。它强调价格上涨和下跌的阶段性变化和周期性循环,同时结合了自然科学的一些思想。
cmsboy
2023/03/31
6440
freqtrade 学习笔记
以试运行(dry-run)或实时模式(使用 freqtrade trade )启动 freqtrade 将启动机器人并启动机器人迭代循环。这也将运行 bot_start() 回调。默认情况下,bot 循环每隔几秒运行一次 ( internals.process_throttle_secs ) 并执行以下操作(这个循环将一次又一次地重复,直到机器人停止):
王磊-字节跳动
2023/05/25
6.5K1
vn.py源码解读(一、环境配置与回测初试)
        近来忙于毕业找工作,也不知道能不能继续在量化界混了。周末比较闲,抽空研究了一下vn.py。有人说,为什么学那么多的回测平台呀。其实我个人觉得,做cta的话,两个回测平台还是要的,这样,当你的策略出现和你预计不符,而你有无法在代码逻辑层面找到问题的时候,你就可以用另外一个平台试一下,来看看到底是你的策略本身就不行,还是你的代码有着当前水平无法察觉的问题,甚至,可能回测平台本身存在一个bug。所以笔者之前学习的backtrader和pyalgotrade的目的就是这个,但是后续对于pyalgotrade没怎么用。前段时间看到vn.py和某Q开头的开源项目在网上开战,刚入门python的小朋友可能还不知道他们争论的是什么。
钱塘小甲子
2019/01/28
2.9K0
如何开发okex合约期货系统搭建
想要开发okex的合约期货系统,就要深入的了解okex里面的东西是怎么操作的,现在很多玩家都在抱怨okex的合约期货太黑,但是还在平台上面玩,因为国内没有几家做的有他们好的,所以未来比特币期货合约交易所的市场还是很大的。
ruiec1212
2018/05/14
2.2K1
如何开发okex合约期货系统搭建
海龟交易_海龟交易法则的核心
入行十多年,见过不少充满灵性的投资人,选股能力非常出色,但是在买卖时机、投入资金多寡上的不足使得他们的盈利水平并不理想。没有别的原因,是缺少一个交易系统。一个完整的交易系统,包括: · 市场—-买卖什么 · 入市规模—-买卖多少 · 入市—-何时买卖 · 止损—-何时卖退出亏损的股票 · 离市—-何时卖出赢利的股票 · 策略—-如何买卖
全栈程序员站长
2022/09/20
1.1K0
生活小技能:科学地股票选股策略
1.选择PEG < 0.5, 即稳定成长且价值被低估的股票 其中PEG = PE / growth_rate 2.使用ES风险平价配权 3.根据组合的日内波动小于3%的条件, 与货币基金组合配资 4.最大持仓5只股票和1只货币基金, 优先买入市值小的, 15天调仓一次 5.剔除了周期性和项目类行业(该部分对改善回撤有明显的效果)
机械视角
2019/10/23
1.1K0
生活小技能:科学地股票选股策略
金融数据分析与挖掘具体实现方法 -2
貌似三个月没有更新博客园了,当时承诺的第二篇金融数据分析与挖掘这几天刚好又做了总结,在国内经济不景气的现在来对这个话题结个尾。
汪凡
2019/02/22
2.4K0
【年度系列】实战交易策略的精髓(公众号深度呈现)
这篇推文的核心词汇是交易。通过自问自答的形式记呈现给大家,没有繁杂的公式,绚丽的图表,都是淳朴的文字,但却是通过多年实战交易所得的经验。希望大家能够认真阅读这篇文章。同时也欢迎大家在文末留言区留言,与我们一起讨论交流。
量化投资与机器学习微信公众号
2018/11/16
6180
R语言金融市场量化交易:布林带、价差策略、RSI交易策略,回测COMP 226
- 每一天的方向与之前的变化不同,对该策略来说都是亏损的一天,所以这样的日子不应该有大的价格波动。
拓端
2022/10/25
9430
量化投资:深入浅出量化对冲Alpha基金的操作
1.量化 对于一般投资者,甚至是部分金融从业者来说,量化投资都是一门高大上的技术,充斥着模型代码和算法假设,门槛非常高。其实,生活中的量化思想无处不在。 例如,某魔都金融民工,每日上班路线是这样的:乘地铁或者公交至陆家嘴,随后步行或者乘华宝兴业免费接驳车至公司楼下。哪条路线最近呢? 此人先罗列了所有可行的路线,随后花了一个月时间,逐条路线进行多次试验,最终成功找出不出意外情况下最近的线路,完美!这就是最简单的量化思想,利用大量数据,找出大概率的最优策略,并照此执行。 海外的量化投资发展已经超过三十年
小莹莹
2018/04/20
1.4K0
量化投资:深入浅出量化对冲Alpha基金的操作
区块链专业术语、币圈常见名词整理
所谓的币圈,即数字货币玩家天然形成的圈子。币圈不大,但是人数也不算少,而且在人群中基本上属于小众异类,但林林总总算是一个圈子,赚钱的人不多,形形色色的赚钱方式也都被迅速地拷贝过来,ICO、炒币、挖矿等。
广州闪链科技
2018/11/20
6.1K0
R语言金融市场量化交易:布林带、价差策略、RSI交易策略,回测COMP 226|附代码数据
从现在开始,我们将重复使用实用工具脚本 "utilities.R "中的函数。在这种情况下,我们将使用。
拓端
2023/03/30
1K0
Man AHL CIO:趋势跟踪依然有效!
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。
量化投资与机器学习微信公众号
2023/12/01
2380
Man AHL CIO:趋势跟踪依然有效!
Python股市数据分析教程(二):学会它,或可以实现半“智能”炒股
摘要: 本篇文章是”Python股市数据分析”两部曲中的第二部分。在本篇文章中,我们讨论了均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,并结合Python代码实现了一个基于均线交叉的交易策略系统。 注意:本篇文章所涉及的看法、意见等一般性信息仅为作者个人观点。本文的任何内容都不应被视为金融投资方面的建议。此外,在此给出的所有代码均无法提供任何保证。选择使用这些代码的个人需自行承担风险。 交易策略 我们把在未来条件满足时将被终止的交易称为未平仓交易。多头仓位是指在交易过程中通过金融商品增
CDA数据分析师
2018/02/05
2.1K0
Python股市数据分析教程(二):学会它,或可以实现半“智能”炒股
推荐阅读
相关推荐
精选股票、期货量化投资策略系列(一)基于Matlab
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档