我正在寻找一种直接直接管理金字塔订单的方法。我尝试使用strategy.position_entry_name函数,但显然它仅引用最早的开放交易。
例如,在下面的脚本中,我想做我从LONG 1到LONG 2和3的停止操作。从理论上讲,我可以使用strategy.opentrades来引用它们,但这在某些情况下是不可靠的LONG 1停止并且LONG 2和3仍然打开,LONG 3将再次打开,因为未平仓交易从3减少到2。理想情况下,我希望代码直接识别出它仍持有LONG 3,因此不应将其打开再次。
我们将不胜感激,谢谢!
//@version=4
strategy("Manage Pyramid Stop Orders Individually", shorttitle='MPSOI' , overlay=true, pyramiding=3)
MA = sma(close, 50)
Buy = MA > MA[1]
Sell = MA < MA[1]
PositionSize = strategy.initial_capital/close
Stops = low
//LONG STOPS
Long1InPosition = strategy.position_entry_name == 'LONG 1'
Long1_Stops = Stops
Long1_Stops := Long1InPosition ? Long1_Stops[1] : low
Long2InPosition = strategy.position_entry_name == 'LONG 2'
Long2_Stops = Stops
Long2_Stops := Long2InPosition ? Long2_Stops[1] : low
Long3InPosition = strategy.position_entry_name == 'LONG 3'
Long3_Stops = Stops
Long3_Stops := Long3InPosition ? Long3_Stops[1] : low
if strategy.opentrades == 0
strategy.entry("LONG 1", strategy.long, qty=PositionSize, when=Buy)
if strategy.opentrades == 1
strategy.entry("LONG 2", strategy.long, qty=PositionSize, when=Buy)
if strategy.opentrades == 2
strategy.entry("LONG 3", strategy.long, qty=PositionSize, when=Buy)
strategy.exit("LONG 1 Exit", 'LONG 1', stop=Long1_Stops)
strategy.exit("LONG 2 Exit", 'LONG 2', stop=Long2_Stops)
strategy.exit("LONG 3 Exit", 'LONG 3', stop=Long3_Stops)
strategy.close_all(when=Sell)
strategy.cancel_all(when=Sell)
//PLOTS
MAcolor = Buy ? color.lime : Sell ? color.red : color.gray
plot(MA, color=MAcolor, title='MA', linewidth=3)
plot(Long1_Stops, color=color.red, title='Long1_Stop', style=plot.style_linebr)
plot(Long2_Stops, color=color.maroon, title='Long2_Stop', style=plot.style_linebr)
plot(Long3_Stops, color=color.purple, title='Long3_Stop', style=plot.style_linebr)
bgcolor(Long1InPosition ? color.lime : na)
bgcolor(Long2InPosition ? color.olive : na)
bgcolor(Long3InPosition ? color.teal : na)
答案 0 :(得分:0)
我会尝试使用strategy.order
而不是strategy.entry
和strategy.exit
。
请注意,使用strategy.order意味着金字塔设置无效,您必须自己管理金字塔效果。