code: def get_feature_config(self):
      fields = []
      names = []
  
      template_if = "If(IsNull({1}), {0}, {1})"
      template_paused = (
          "Select(Or(IsNull($paused), Eq($paused, 0.0)), {0})"
      )
      template_fillnan = "BFillNan(FFillNan({0}))"
      # Because there is no vwap field in the yahoo data, a method similar to Simpson integration is used to approximate vwap
      simpson_vwap = "($open + 2*$high + 2*$low + $close)/6"
  
      def get_normalized_price_feature(price_field, shift=0):
          """Get normalized price feature ops"""
          if shift == 0:
              template_norm = (
                  "Cut({0}/Ref(DayLast({1}), 240), 240, None)"
              )
          else:
              template_norm = (
                  "Cut(Ref({0}, "
                  + str(shift)
                  + ")/Ref(DayLast({1}), 240), 240, None)"
              )
  
          feature_ops = template_norm.format(
              template_if.format(
                  template_fillnan.format(
                      template_paused.format("$close")
                  ),
                  template_paused.format(price_field),
              ),
              template_fillnan.format(template_paused.format("$close")),
          )
          return feature_ops
  
      fields += [get_normalized_price_feature("$open", 0)]
      fields += [get_normalized_price_feature("$high", 0)]
      fields += [get_normalized_price_feature("$low", 0)]
      fields += [get_normalized_price_feature("$close", 0)]
      fields += [get_normalized_price_feature(simpson_vwap, 0)]
      names += ["$open", "$high", "$low", "$close", "$vwap"]
  
      fields += [get_normalized_price_feature("$open", 240)]
      fields += [get_normalized_price_feature("$high", 240)]
      fields += [get_normalized_price_feature("$low", 240)]
      fields += [get_normalized_price_feature("$close", 240)]
      fields += [get_normalized_price_feature(simpson_vwap, 240)]
      names += ["$open_1", "$high_1", "$low_1", "$close_1", "$vwap_1"]
  
      fields += [
          "Cut({0}/Ref(DayLast(Mean({0}, 7200)), 240), 240, None)".format(
              "If(IsNull({0}), 0, If(Or(Gt({1}, Mul(1.001, {3})), Lt({1}, Mul(0.999, {2}))), 0, {0}))".format(
                  template_paused.format("$volume"),
                  template_paused.format(simpson_vwap),
                  template_paused.format("$low"),
                  template_paused.format("$high"),
              )
          )
      ]
      names += ["$volume"]
      fields += [
          "Cut(Ref({0}, 240)/Ref(DayLast(Mean({0}, 7200)), 240), 240, None)".format(
              "If(IsNull({0}), 0, If(Or(Gt({1}, Mul(1.001, {3})), Lt({1}, Mul(0.999, {2}))), 0, {0}))".format(
                  template_paused.format("$volume"),
                  template_paused.format(simpson_vwap),
                  template_paused.format("$low"),
                  template_paused.format("$high"),
              )
          )
      ]
      names += ["$volume_1"]
  
      return fields, names
  
file_path: qlib/examples/highfreq/highfreq_handler.py
imports: from qlib.data.dataset.handler import DataHandler, DataHandlerLP
  from qlib.contrib.data.handler import check_transform_proc
label_desc: Use image node_id 2 for calling the HighFreqHandler obj's underlying member method code with example usage: obj.get_feature_config() and returns: fields,  names, feature_ops