code: def step(self, action) -> (np.ndarray, float, bool, None):
      stock_action = action[0]
      """buy or sell stock"""
      adj = self.day_price[0]
      if stock_action < 0:
          stock_action = max(
              0,
              min(
                  -1 * stock_action,
                  0.5 * self.total_asset / adj + self.stocks,
              ),
          )
          self.account += (
              adj * stock_action * (1 - self.transaction_fee_percent)
          )
          self.stocks -= stock_action
      elif stock_action > 0:
          max_amount = self.account / adj
          stock_action = min(stock_action, max_amount)
          self.account -= (
              adj * stock_action * (1 + self.transaction_fee_percent)
          )
          self.stocks += stock_action
  
      """update day"""
      self.day += 1
      self.day_price = self.price_ary[self.day]
      self.day_tech = self.tech_ary[self.day]
      done = (self.day + 1) == self.max_step
      normalized_tech = [
          self.day_tech[0] * 2**-1,
          self.day_tech[1] * 2**-15,
          self.day_tech[2] * 2**-15,
          self.day_tech[3] * 2**-6,
          self.day_tech[4] * 2**-6,
          self.day_tech[5] * 2**-15,
          self.day_tech[6] * 2**-15,
      ]
      state = np.hstack(
          (
              self.account * 2**-18,
              self.day_price * 2**-15,
              normalized_tech,
              self.stocks * 2**-4,
          )
      ).astype(np.float32)
  
      next_total_asset = self.account + self.day_price[0] * self.stocks
      reward = (next_total_asset - self.total_asset) * 2**-16
      self.total_asset = next_total_asset
  
      self.gamma_return = self.gamma_return * self.gamma + reward
      if done:
          reward += self.gamma_return
          self.gamma_return = 0.0
          self.episode_return = next_total_asset / self.initial_account
      return state, reward, done, None
  
file_path: FinRL/finrl/meta/env_cryptocurrency_trading/env_btc_ccxt.py
imports: from __future__ import annotations
  import numpy
label_desc: Use image node_id 3 for calling the BitcoinEnv obj's underlying member method code with example usage: obj.step(action) and returns: state,  reward,  done,  None