Пример 0. Как все работает.

Начало

Напишем простой алгоритм. Чтобы понять какие методы в какой последовательности вызываются

def initialize(context):
    log.info("initialize run")
    schedule_function(rebalance,
            date_rule=date_rules.month_start(),
            time_rule=time_rules.market_open())
 
def rebalance(context, data):
    log.info("rebalance run")
 
def before_trading_start(context, data):
    log.info("before_trading_start run")
 
def handle_data(context, data):
    log.info("handle_data run")
    order(sid(24), 5)

 

Итак, один раз в начале вызовется метод initialize. Затем, каждый рабочий(торговый) день будут вызываться
  1. before_trading_start
  2. handle_data

А благодаря тому, что в методе initialize, мы специальной функцией schedule_function указали, что метод rebalance должен вызываться раз в месяц в начале месяца и в начале торгового дня. Поэтому в каждый первый торговый день месяца последовательность вызовов методов будет следующей:

  1. before_trading_start
  2. handle_data
  3. rebalance