我可以在同一柱中策略进入后立即进入策略退出止损吗?

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

我目前使用的策略为头寸规模的 0.5% 止损以及头寸规模的 4% 和 8% 止盈。

通常情况下,策略与环境完美配合。 然而,tradingview 无法在同一柱中退出与入仓的仓位。 因此会导致我的仓位损失更大(如下图0.5%以上)。

enter image description here

我可以知道如何在输入的同一个柱中退出我的头寸,但不会引起其他问题吗? (例如

calc_on_order_fills = true
calc_on_every_tick = true
可能会影响我的参赛作品)

TP1 = strategy.position_avg_price + percentAsPoints(TP1Perc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)
TP2 = strategy.position_avg_price + percentAsPoints(TP2Perc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)
SL = strategy.position_avg_price - percentAsPoints(SLPerc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)



//Stop loss for short position 
if strategy.position_size > 0
    strategy.exit('TP1', from_entry='Long', qty=initial_position_size * TP1_Ratio, limit=TP1, stop=SL)
    strategy.exit('TP2', from_entry='Long', limit=TP2, stop=SL)


STP1 = strategy.position_avg_price + percentAsPoints(STP1Perc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)
STP2 = strategy.position_avg_price + percentAsPoints(STP2Perc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)
SSL = strategy.position_avg_price - percentAsPoints(SSLPerc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)


//Stop loss for short position 
if strategy.position_size < 0
    strategy.exit('STP1', from_entry='Short', qty=initial_position_size * STP1_Ratio, limit=STP1, stop=SSL)
    strategy.exit('STP2', from_entry='Short', limit=STP2, stop=SSL)
pine-script tradingview-api
1个回答
0
投票

所以我遇到了同样的问题,但我想我已经解决了

在策略参数中设置 calc_on_order_fills = true。这与 UI 中策略设置上的“订单执行后”复选框相同。

但是您可能会注意到,在同一柱上执行订单后,它还会重新执行您再次拥有的任何多头/空头条目。参见示例 https://www.tradingview.com/x/pwvyCOvl

除非这是您想要的,否则您可以将此条件添加到您的长条目 IF 语句中。它只是确保您仅在同一柱上存在现有已平仓交易的情况下做多/做空。

//Either first trade, or the most recent closed trade (identified by exit bar index) is not on the current bar (bar index) 
if longEntry and ((strategy.closedtrades == 0) or (bar_index != strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1))) 
    strategy.entry("Long Entry", strategy.long)
if shortEntry and ((strategy.closedtrades == 0) or (bar_index != strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1)))
    strategy.entry("Short Entry", strategy.short)
© www.soinside.com 2019 - 2024. All rights reserved.