Я ищу способ напрямую управлять заказами пирамид. Я попытался использовать функцию 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)