Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trading_fees = 0.075 / 100
- futures_fees = 0.04 / 100
- class Position:
- def __init__(self, value, leverage, price, type):
- self.type = type
- self.value = value
- self.price = price
- self.leverage = leverage
- def liquidated(self, price):
- return self.get_value(price) <= 0
- def get_value(self, price):
- evolution = (price - self.price) / self.price
- if self.type == 'long':
- return self.value + self.leverage * evolution * self.value
- elif self.type == 'short':
- return self.value - self.leverage * evolution * self.value
- else:
- return 0
- class Wallet:
- def __init__(self, balance):
- self.usdt = balance
- self.btc = 0
- self.positions = []
- def buy(self, percentage, price):
- self.usdt -= self.usdt * percentage * trading_fees
- self.btc += (self.usdt * percentage) / price
- self.usdt -= self.usdt * percentage
- def sell(self, percentage, price):
- self.btc -= self.btc * percentage * trading_fees
- self.usdt += self.btc * percentage * price
- self.btc -= self.btc * percentage + self.btc * percentage * trading_fees
- def open_position(self, percentage, leverage, price, type):
- self.usdt -= percentage * self.usdt * futures_fees
- self.positions.append(Position(percentage * self.usdt, leverage, price, type))
- self.usdt -= percentage * self.usdt + percentage * self.usdt * futures_fees
- def close_positions(self, price):
- for position in self.positions:
- self.usdt += position.get_value(price)
- self.usdt -= ((position.value * position.price) / price) * futures_fees
- self.positions.remove(position)
- self.close_positions(price)
- return
- def update_positions(self, price):
- for position in self.positions:
- if position.liquidated(price):
- self.positions.remove(position)
- self.update_positions(price)
- return
- def get_balance(self, price):
- self.close_positions(price)
- self.sell(1, price)
- return self.usdt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement