我正在尝试学习 Pine Script,这样我就可以开始回测我的想法。这是我第一次尝试回测策略,所以我保持简单。我正在尝试制定基于较高时间范围蜡烛的均值回归策略。如果一根蜡烛看跌(收盘价低于高点),我想在下一根蜡烛开盘时建立多头头寸。空头头寸则相反。在每根蜡烛收盘时,未平仓头寸都会被平仓(无论是盈利还是亏损,都没关系。)因此,应该在蜡烛开盘时下单,然后在蜡烛收盘时平仓。
我的理解是脚本在每根蜡烛开盘时执行。首先,我将脚本设置为平仓。然后我有一个 if/else 函数来检查当前开盘价(基本上与前一个收盘价相同)是否低于或高于前一个蜡烛的开盘价。然后相应地建立多头或空头头寸。
该策略在测试器中运行,但交易未显示在图表上,因此我无法判断它是否正确执行逻辑。这是代码:
//@version=5
strategy("My Strategy", overlay = true, shorttitle = "My Strat")
strategy.close_all()
if open < open[1]
strategy.entry("Long entry", strategy.long)
else
strategy.entry("Short entry", strategy.short)
首先,由于历史原因,订单将在计算后放置在柱上。
在现场酒吧,这将按照您所说的进行,只要您有
设置 --> 属性 --> 重新计算 --> 在每个刻度上 设置为活动状态。
有多种方法可以测试您的
if
状况...
使用变量来存储条件状态,然后使用
plotchar()
向您展示发生了什么。
longCondition = open > open[1]
plotchar(longCondition, "Long", "L", location.abovebar, color.teal)
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = open < open[1]
plotchar(shortCondition, "Short", "S", location.belowbar, color.red)
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
您可以在本地范围内使用
log.*()
函数来在执行某些操作时获取消息。
if open > open[1]
log.info("Long")
strategy.entry("My Long Entry Id", strategy.long)
if open < open[1]
log.info("Short")
strategy.entry("My Short Entry Id", strategy.short)
使用警报消息来显示何时触发了某些事件。
if open > open[1]
strategy.entry("My Long Entry Id", strategy.long, alert_message = "Long")
if open < open[1]
strategy.entry("My Short Entry Id", strategy.short, alert_message = "Short")
此方法仅适用于现场酒吧。