-
Notifications
You must be signed in to change notification settings - Fork 30
Description
I also have a question regarding the buying of stocks. Perhaps I'm misunderstanding something, but it seems to me that the environment does not prevent the purchase of stocks when the funds are insufficient. Currently, when one generates sinusoidal data, it's typically in the range of 18-22K. However, with an initial account value of 1K, one could not make a purchase, right? Or is your code specifically targeting cryptocurrencies, which can be bought in any amount (e.g., 0.1 BTC)?
if action == 2: # buy
buy_order_size = order_size
next_state.allocation_percentage = last_state.allocation_percentage + (1 - last_state.allocation_percentage) * buy_order_size
next_state.assets = last_state.assets + (last_state.balance * buy_order_size / last_state.close) * self.fee_ratio
next_state.balance = last_state.balance - (last_state.balance * buy_order_size) * self.fee_ratioWhen a buy action is initiated (action == 2), the code calculates the amount of the asset to be bought (buy_order_size) and updates the new state (next_state) accordingly—both its assets and balance. The calculation does not explicitly check whether the next_state.balance will end up negative after the buy operation, which would imply buying more than what the available balance allows.