在同一蜡烛上开仓和平仓订单

问题描述 投票:0回答:1

我正在尝试学习 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)
pine-script pine-script-v5 algorithmic-trading
1个回答
0
投票

首先,由于历史原因,订单将在计算后放置在柱上。
在现场酒吧,这将按照您所说的进行,只要您有
设置 --> 属性 --> 重新计算 --> 在每个刻度上 设置为活动状态。

有多种方法可以测试您的

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")

此方法仅适用于现场酒吧。

© www.soinside.com 2019 - 2024. All rights reserved.