我正在使用
pinescript 4.0
在下面的图表中,我正在执行使用以下内容的 strategy
:
if exec_long
// entry condition
if crossover(rsi, ema ) and inDateRange and close > close[1]
strategy.entry("MAN Long Entry Id", strategy.long)
我遇到的问题是入场发生在下一根蜡烛的顶部(见指向右侧的箭头)。对我来说,这可能意味着金钱损失(由于迟到)。我该如何解决这个问题,以便在RSI crosses over the EMA
(对于空头和多头)的准确时间进行入场?
TIA
编辑
@e2e4 - 感谢您的回复。我会尝试设置。出于好奇,它可以在实时/生产环境中运行吗?
我已经添加了一个简短条目示例的示例。在这个例子中,仓位被“止损”,因为进场发生在蜡烛的底部。如果入场发生在蜡烛的顶部(参见图片简短 #1),则不会发生“停止退出” - 或者 - 如果它发生在图片简短 #2 中的“虚线”上(目标是保持尽可能低的止损金额)。
<块引用>=> 话虽如此,想知道您是否知道 Tradingview 网站上的任何代码可能提供某种指导(或代码) 执行不会“停止”的条目(使用 pinescript) 由于 LONG 示例(较早发送)发生的情况 或使用 SHORT 示例(显示在 SHORT #1 和 简短内容#2)
TIA
答案 0 :(得分:1)
策略和研究脚本以不同的逻辑执行。有关代理模拟器的更多信息: https://www.tradingview.com/pine-script-docs/en/v4/essential/Strategies.html#broker-emulator
在 TradingView 上,根据图表的所有可用历史数据(回溯测试)计算策略,然后在实时数据到来时自动继续计算(前向测试)。 默认情况下,在历史和实时计算期间,代码在柱线收盘时计算。 前测时,您可以选择将脚本计算配置为在每个实时分时发生。要启用此功能,请选中策略设置/属性中的 Recalculate On Every Tick 选项,或使用以下命令在脚本代码中指定:
strategy(..., calc_on_every_tick = true)
您可以将策略设置为在订单成交后执行一次额外计算。为此,您需要检查在策略的设置/属性中填写的订单后重新计算,或者在脚本的代码中使用:
strategy(..., calc_on_order_fills = true)
您可能会发现这篇来自 backtest-rookies 的文章很有用,它解释了信号和订单执行之间 1 根蜡烛线的延迟,有时是 2 根蜡烛线的延迟:https://backtest-rookies.com/2017/11/15/backtesting-101-trades-delayed/