量化现货合约跟单系统开发源代码(成熟案例)

发布于: 雪球转发:0回复:0喜欢:0

在实时K线BAR阶段直接下一个买入单开多持仓。然后立即下一个计划平仓单,给这个计划平仓单设置跟踪止盈/止损参数。因为我们只测试一次开仓、然后计划单平仓,所以代码中我设计了一个isTrade变量标记,执行一次之后就赋值true,下次就不会再次进入这个开仓、平仓逻辑了。然后使用plot函数画图记录各个时刻的一些数据,便于观察。

实现跟踪止损、止盈的语句主要是:

strategy.exit("exit 1", "test 1", 1, trail_price=close+offset, trail_offset=offset)

1、trail_price参数为触发跟踪止损、止盈的价格,测试中我们使用了当时的收盘价close,加上一个偏移量offset。开发唯hkkf5566,怎么区分多头持仓还是空头持仓的跟踪止盈、止损触发价格呢?strategy.exit函数会要求指定一个标签,来确定是对哪个仓位进行执行跟踪止损止盈计划单。我们使用strategy.entry("test 1", strategy.long, 1)函数开了一个多头仓位,指定了标签为test 1,所以在strategy.exit函数调用时我们也传入了这个标签。那么Pine语言脚本就知道是要对这个标签为test 1的多头仓位执行跟踪止损、止盈计划单了。

当对多头持仓使用trail_price参数时,是当价格高于这个trail_price价格时才会触发跟踪止损止盈。空头持仓则反之。

2、trail_offset参数为跟踪止损、止盈偏移量,跟踪止损止盈时会时时刻刻记录出现过的价格,用来动态调整跟踪止盈止损线(注意,不是触发启动跟踪止损止盈行为的线,是执行跟踪止损止盈的线)。拿本例子中开多仓之后跟踪止损止盈来说,这里就会监控行情出现的最高价格,当价格回撤到距离最高价格超过trail_offset参数设置的值时就会立即平仓止盈止损。如果是空头仓位的跟踪止损止盈,那么方向相反。

trategy("test", overlay = true)

varip a = na

varip highPrice = na

varip isTrade = false

varip offset = 30

if not barstate.ishistory and not isTrade

    strategy.entry("test 1", strategy.long, 1)

    strategy.exit("exit 1", "test 1", 1, trail_price=close+offset, trail_offset=offset)

    a := close + offset

    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close)

    isTrade := true

if close > a and not barstate.ishistory

    highPrice := na(highPrice) ? close : highPrice

    highPrice := close > highPrice ? close : highPrice

plot(a, "trail_price 触发线")

plot(strategy.position_size>0 ? highPrice : na, "当前最高价")

plot(strategy.position_size>0 ? highPrice-syminfo.mintick*offset : na, "移动止损触发线")