2

I am trying to figure out how to create multiple Long orders in one script.
For example, I put together one script that has 3 buy / sell conditions, and I would like each to have it's own entry / exit parameters. Figuring out how to order multiple Long entries in one script is my current obstacle.

There is currently a "Main", a "Fast" and a "Vol" strategy.

No matter what I try, each of these work by themselves but when run together whichever one is fastest essentially runs everything. Maybe one out of 100 times a lower one will slip through, and then sometimes a different strat will Sell / go long on that trade instead of letting the strat that bought it determine when to sell it.

Things I've tried includes nested loops and also strategy.oca groups. I've been reviewing documentation but none of them demonstrate my scenario--the scenarios I found were multiple entries with one big exit. I want each strat to enter and exit on it's own. I have pyramiding on at 3. I've tried using Strategy.position_size == 0 entries as well as trying to add a variable to stop a conditional from ordering if it already has an order but nothing I've tried works.
If it matters, I will not be using any margin.

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")    
Lucid Dreams
  • 21
  • 1
  • 2

1 Answers1

1

Do you use close_entries_rule = "ANY" parameter in your strategy() call?

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

Starr Lucky
  • 1,578
  • 1
  • 7
  • 8
  • Hey, sorry I did get back to you, that was the correct solution and your reply helped me move forward! It wasn't intuitive that the default strategy() was to not allow my specific instructions to open multiple positions. – Lucid Dreams Jun 14 '21 at 04:45
  • hm interestig option. but in my case problem was to set the pyramiding value to bigger than 1 to eg 2 if i want 2 orders. – luky Jan 23 '22 at 23:27