3.1.2 为现有的交易单设置停损与获利参数
首先,要确认交易单已正确下单。可用检查OrderSend( )功能的返回值进行确认,也就是刚才下单的单号。如因错误条件而未下单,单号等于"-1" 。
接着,用OrderSelect( )功能获取刚下单的信息。传递固定值至OrderModify( )功能时,使用OrderOpenPrice( )、OrderTakeProfit( )、OrderStopLoss( )以及选项OrderExpiration( )参数。最后,用OrderModify( )设置交易单的停损与获利参数。
OrderSend( )功能除了用"0"作为停损与获利参数外,与前例完全相同。零值
表示交易单未设停损与获利。BuyTicket变量储存交易单的单号。
用证语句检查BuyTicket号码是否有效(即大于零)。如有效,以BuyTicket号码调用OrderSelect( )功能。以OrderOpenPrice( )顿取交易单的入单价,并将其指定为OpenPrice变数。
接着,以刚才下单的入单价计算停损与获利。先查看停损与获利的外部变量是否都大于零。若是,计算新的停损价或获利价。
最后,调用OrderModify( )功能来设此单的停损与获利。先检查并确保BuyStopLoss或BuyTakeProfit的变数皆为非零。如试图以固定值修改交易单,OrderModi行( )功能会显示错误代码"1"。
OrderModi句( )的第一个参数是BuyTicket号码,也可以用OrderTicket( )。第二个参数是新的交易单价。由于不修改交易单价,以OrderOpenPrice( )功能代表交易单价不变。
请记住:我们仅能修改挂单价。因为元法变更市价单价,所以要修改市价单,任何值都能当汇价参数。然而,我们无法假设会一直修改市价单,因此永远都用OrderOpenPrice( )。
BuyStopLoss和BuyTakeProfit变量会把变更的停损值与获利值传送至OrderModify( )功能。如计划为挂单设置到期时间,可以OrderExpiration( )作为固定的到期参数,否则就用"0"。
虽然以此方式设置市价单的停损与获利会多增加一些步骤,但我们仍建议你在expert advisor中采用,以确保与所有经纪商兼容。此方式还可让我们准确地设置停损价与获利价,免受滑价影响。

