# ma_crossover/meta/declare_channels.js

    'use strict'

    const _uniq = require('lodash/uniq')

    /**
     * Declares necessary candle data channels for updating indicators and
     * eventually triggering atomic order execution.
     *
     * Part of the `meta` handler section.
     *
     * @memberOf module:MACrossover
     * @param {AOInstance} instance - AO instance state
     * @param {AOHost} host - algo host instance for declaring channel requirements
     */
    const declareChannels = async (instance = {}, host) => {
      const { h = {}, state = {} } = instance
      const { args = {} } = state
      const { symbol, long, short } = args
      const { declareChannel } = h

      const candleTimeFrames = _uniq([
        long.candleTimeFrame,
        short.candleTimeFrame
      ])

      for (let i = 0; i < candleTimeFrames.length; i += 1) {
        await declareChannel(instance, host, 'candles', {
          key: `trade:${candleTimeFrames[i]}:${symbol}`
        })
      }
    }

    module.exports = declareChannels