class_docstr: stock_id : str
  amount : float
  start_time : pd.Timestamp
      closed start time for order trading
  end_time : pd.Timestamp
      closed end time for order trading
  direction : int
      Order.SELL for sell; Order.BUY for buy
  factor : float
          presents the weight factor assigned in Exchange()
class_docstr_tok: ["stock_id",":","str","amount",":","float","start_time",":","pd.Timestamp","closed","start","time","for","order","trading","end_time",":","pd.Timestamp","closed","end","time","for","order","trading","direction",":","int","Order.SELL","for","sell",";","Order.BUY","for","buy","factor",":","float","presents","the","weight","factor","assigned","in","Exchange","(",")"]
docstr: A hashable & unique key to identify this order.
code: def key(self) -> tuple:
      """A hashable & unique key to identify this order."""
      return (
          self.stock_id,
          self.start_time,
          self.end_time,
          self.direction,
      )
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from datetime import time
  from enum import IntEnum
  from typing import TYPE_CHECKING, Any, ClassVar, Generic, List, Optional, Tuple, TypeVar, Union, cast
  from qlib.backtest.utils import TradeCalendarManager
  from qlib.data.data import Cal
  from qlib.log import get_module_logger
  from qlib.utils.time import concat_date_time, epsilon_change
  from dataclasses import dataclass
  import numpy
  import pandas
label_desc: Use image node_id 7 for calling the Order obj's underlying member method code with example usage: obj.key() and returns: self,  self,  self,  self