For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See:

Proper way to pass args to next() method

  • Hello!

    I want following procedure inside next() method to be executed:

    def next():
        compute some indicators and other <statistic>
        connect remote server via <socket>,  send <statistic>
        wait for remote to respond with <signal>
        execute by/sell/hold, based on received <signal> 

    The question is: how to pass <socket> details , which will be available right before I call
    Generally, question is about passing to .next() any arguments, dynamically computed for the specific run()

  • UPD:

    Seems the easy way is to reinstantiate bt.Cerebro() before each run and pass everything as parameters:

    class TestStrategy(bt.Strategy):
       params = (('socket', None),) 
     <Loop over multiple strategy runs>: 
       <check RemoteServer, get updated socket details>
       cerebro = bt.Cerebro()
       cerebro.addstrategy(TestStrategy, socket=<FreshSocket>)
       < add data, etc.>

  • administrators

    You were faster that the coming answer. params (for parameters) is the standard way to pass things that will get to the strategy and that you can later address as self.params.myparam or with the shorthand self.p.myparam

    There is no need for that indentation. See at the top of the page. Use 2 lines with 3-backticks marks to enclose the code block.

    Or go directly (also at the top) to:

  • Yup, pure "read manual first" case. Fixed.

Log in to reply