4.1 停损与获利计算功能

4.1 停损与获利计算功能


我们要建立一些简短的功能来计算停损与获利。我们会把停顿或获利点数的外部变量传至功能,还有入单价。功能的返回值将是实际的停损价或获利价。

以下是计算停损买价(以点数为单位)源代码:

首先,我们会查看有效的停损价位是否已和功能一并传送了。argStopLoss 自变量若是"0" ,就返回"0" 值给调用的功能,代表无指定停损。

接着,减去入单价的停损点数以计算停损价。我们用PipPoint ( )乘以argStopLoss 计算小数值,并用argOpenPrice 将其减去。不是用买价或卖价(市价单) ,就是用预定的挂单价。

请注意: 我们不检查停损价位,或以其他方式验证停损是否有效。必要时,我们会使用别组功能来验证或调整停损价。当然,你可轻易地修改此功能来验证停损价、显示错误讯息或自动调整价格。

以下为计算获利买点的功能源代码:

本书附录D 中列有计算卖单的停损与获利功能。请注意:计算停损卖价的功能与上述计算获利买价的功能几乎相同,停损买价和获利卖价的情形也一样。

4.1.1 停损价值验证

我们要建立两组功能来计算并验证停损。先是简单计算指定价格上下的停损价位,并返回一个布尔值,表示指定价格落在停损价位内部或外部。第二组功能会自动调整价格以落在停损价位外部,加上或减去指定的点数。

下面的功能验证价格是否高于停损价位上限(入单价加上停损价位) 。若是如此,功能返回真(true) ,否则为假(false) 。

我们把货币符号、欲验证的价格及入单价(选项)当作自变量传递。在默认情况下,停损价位的计算按卖价而定。如有指定argOpenPrice ,停损价位的计算就会按该价格而定(验证挂单的停损价与获利价时用这个功能)

此功能会查看argVerifyPrice 是否大于UpperStopLevel (停损价位上限) 。若是,返回值将为真( true) ,反之为假(false) 。你可以此功能检查有效的停损、获利挂单价,无须修改原始价格。下面是检查停损价并显示错误讯息(如价格无效)的例子:

本书附录D 中有检查低于目前市价或挂单价的停损价位代码。

第二组的功能类似,不同之处是第二组会把无效的停损价、获利价或挂单价自动调整为有效的价格:

自变量argAdjustPrice 如为有效,即为我们要验证并调整的价格。我们已新增可选参数argAddPips 。调整无效的价格时,会增加停损价的指定点数。

如前所述,计算停损价位不是按卖价就是按argOpenPrice 参数。如缸gAdjustPrice参数落在停损价位内(即无效) ,价格会调整至停损价位外,以argAddPips 的指定点数为间距。

如argAdjustPrice 指定价格为有效,此价会传回给调用功能。无论如何,你都想把返回值用于获利价、停损价或挂单价。我们会以本书的众多功能验证停损价位,从而调整价格。附录D 中有计算并验证停损价位下限的功能源代码。

4.1.2 设置停损与获利

为配合我们把功能放在简单与离散任务的构想,已将交易单修改功能独立出来。此功能会增加或修改指定交易单的停损与获利。我们假设停损价与获利价已计入并验证:

先查看是否已有停损价或获利价。没有就退出功能; 反之,我们会以传至功能的停损与获利修改交易单。交易单若修改不成,就会执行错误处理功能。此功能造用于所有交易单类型。