Как создать несколько отдельных длинных ордеров на вход и выход в одном скрипте

Я пытаюсь понять, как создать несколько Лонг-ордеров в одном скрипте.
Например, я собрал один скрипт, который имеет 3 условия покупки/продажи, и я хотел бы, чтобы у каждого были свои параметры входа/выхода. Выяснение того, как упорядочить несколько длинных записей в одном скрипте, является моим текущим препятствием.

В настоящее время существует стратегия Main, Fast и Vol.

Что бы я ни пытался, каждый из них работает сам по себе, но когда они работают вместе, тот из них, который работает быстрее, по сути, запускает все. Может быть, один из 100 раз проскочит более низкий, а затем иногда другой страт будет продавать / открывать длинные позиции по этой сделке, вместо того, чтобы позволить страту, купившему его, определить, когда его продавать.

Вещи, которые я пробовал, включают вложенные циклы, а также группы Strategy.oca. Я просматривал документацию, но ни одна из них не демонстрирует мой сценарий — сценарии, которые я нашел, представляли собой несколько входов с одним большим выходом. Я хочу, чтобы каждая стратегия входила и выходила сама по себе. У меня есть пирамида на 3. Я пытался использовать Strategy.position_size == 0 записей, а также пытался добавить переменную, чтобы остановить условный порядок от заказа, если у него уже есть заказ, но ничего из того, что я пробовал, не работает.
Если это имеет значение, я не буду использовать маржу.

if OrderLong and not OrderShort
    strategy.cancel(id="Sell")
    strategy.entry(id="Buy", long=true, comment="Buy")  //strategy.entry(id="Buy", long=true, stop=high, comment="Buy", limit=(OrderLimit))

if OrderShort and not OrderLong and not OrderShortFast
    strategy.cancel(id="Buy")
    strategy.exit("Sell", "Buy", stop=low, limit=(OrderLimit),comment="Sell")
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////    
if OrderLongFast and not OrderShortFast
    strategy.cancel(id="SellFast")
    strategy.entry(id="BuyFast", long=true, comment="Buy Fast")           //strategy.entry("BuyFast", long=true, stop=high, comment="Buy Fast", limit=(OrderLimit))

         
if OrderShortFast and not OrderShort
    strategy.cancel(id="BuyFast")
    strategy.exit("SellFast", "BuyFast", stop=low, limit=(OrderLimit),comment="Sell Fast")    
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////     
if OrderLongVol
    strategy.cancel(id="SellVol")
    strategy.entry(id="BuyVol", long=true, comment="Buy Vol")           //strategy.entry("BuyFast", long=true, stop=high, comment="Buy Fast", limit=(OrderLimit))
if OrderShortVol
    strategy.cancel(id="BuyVol")
    strategy.exit("SellVol", "BuyVol", stop=low, limit=(OrderLimit),comment="Sell Vol")    

person Lucid Dreams    schedule 26.04.2021    source источник


Ответы (1)


Используете ли вы параметр close_entries_rule = "ANY" в вызове strategy()?

https://kodify.net/tradingview/strategy-settings/close-entries-rule/

person Starr Lucky    schedule 27.04.2021
comment
Эй, извините, что я вернулся к вам, это было правильное решение, и ваш ответ помог мне двигаться вперед! Было не интуитивно понятно, что стратегия по умолчанию() не позволяет моим конкретным инструкциям открывать несколько позиций. - person Lucid Dreams; 14.06.2021