В Pine Script я кодирую торговую систему Donchian Channel, в которой вы открываете длинную позицию на 20-дневном максимуме и открываете короткую позицию на 20-дневном минимуме.
У меня все в порядке с кодированием открытия и закрытия позиций, но я борюсь с кодированием начального уровня стоп-лосса, который мне нужно, чтобы он оставался * фиксированным *, пока вся позиция открыта.
Например. Когда вы открываете длинную позицию на прорыве 20-дневного максимума, я бы хотел, чтобы первоначальный стоп-лосс оставался зафиксированным на 20-дневном минимуме в момент входа — и чтобы этот стоп-лосс не менялся.
Я могу закодировать другие варианты стоп-лоссов, например, "strategy.position_average_price - atr(4)", но как мне связать стоп-лосс с фиксированным 20-дневным минимумом в точке входа?
Большое большое спасибо,
Дэйвид.
DonchianLow=ta.lowest(close[1],20)
strategy.exit("Exit Long", from_entry = "Long", stop=strategy.average_position_price - DonchianLow)
Вы должны установить свою стратегию выхода только один раз.
Вы можете использовать такой фрагмент кода:
if strategy.position_size == 0 // no open order
if my_entry_condition
strategy.entry('long', strategy.long, qty=Q_Jetons, limit=limiteachat)
strategy.exit(id='Exit', from_entry = "long", stop=StopLoss)
Таким образом, ваш Strategy.exit вызывается только один раз, и ваш SL не изменится.
if Strategy.position_size == 0 запрещает изменение вашего SL, пока ордер открыт. вы пробовали с if Strategy.position_size == 0 ?
Я пробовал это с этим, и это работает отлично. Большое спасибо за вашу помощь!
Большое спасибо за ваш ответ @G.Lebret - это очень помогает. Я попробовал, но мой стоп-лосс все еще растет, так как 20-дневный минимум также растет, но я бы хотел, чтобы стоп-лосс оставался фиксированным. Я использовал этот код: '''if EnterLong Strategy.entry("Long",strategy.long,qty=PosSize) Strategy.exit(id='Long Stop', from_entry = "Long", stop=DonchLow)' ''