Сейчас ищу помощника, который поможет мне быстро разобраться в этом вопросе.Это мой код:
Код: Выделить всё
class TradingBot:
def __init__(self, symbol, leverage, trigger_price, order_price, stop_loss, take_profit, amount):
self.symbol = symbol
self.leverage = leverage
self.trigger_price = trigger_price
self.order_price = order_price
self.stop_loss = stop_loss
self.take_profit = take_profit
self.amount = amount
self.running = True
def set_leverage(self):
try:
session.set_leverage(
category="linear",
symbol=self.symbol,
buyLeverage=str(self.leverage),
sellLeverage=str(self.leverage)
)
except Exception as e:
print(f"Error setting leverage: {e}")
def place_conditional_order(self):
qty = round(self.amount / self.order_price, 3)
return session.place_order(
category="linear",
symbol=self.symbol,
side="Sell",
orderType="Limit",
qty=str(qty),
price=str(self.order_price),
timeInForce="GTC",
reduceOnly=False,
orderFilter="Order",
)
def set_tp_sl(self):
return session.set_trading_stop(
category="linear",
symbol=self.symbol,
takeProfit=self.take_profit,
stopLoss=self.stop_loss,
tpTriggerBy="MarkPrice",
slTriggerB="IndexPrice",
tpslMode="Partial",
tpOrderType="Limit",
slOrderType="Limit",
tpSize=self.amount,
slSize=self.amount,
positionIdx=0,
)
def has_open_position(self):
position = session.get_positions(
category="linear",
symbol=self.symbol
)['result']['list'][0]
return float(position['size']) != 0
def run(self):
self.set_leverage()
while self.running:
try:
if self.has_open_position():
print("Open position exists. Monitoring...")
while self.running and self.has_open_position():
print("Position still open. Monitoring...")
time.sleep(60)
else:
order = self.place_conditional_order()
order_id = order['result']['orderId']
self.set_tp_sl()
while True:
order_status = session.get_order_history(
category="linear",
symbol=self.symbol,
orderId=order_id
)['result']['list'][0]
if order_status['orderStatus'] == "Filled":
print(f"Order filled: {order_id}")
break
elif order_status['orderStatus'] == "Cancelled":
print(f"Order cancelled: {order_id}")
break
time.sleep(5)
except Exception as e:
print(f"An error occurred: {e}")
time.sleep(60)
def stop(self):
self.running = False
print("Bot stopped. Existing positions remain open.")
bot = TradingBot(
symbol="BTCUSDT",
leverage=1,
trigger_price=59500,
order_price=59500,
stop_loss=59600,
take_profit=59300,
amount=100 # USDT
)
# Run the bot
bot.run()
Пожалуйста, дайте мне знать, спасибо.
Я пытался создать торгового бота.
Подробнее здесь: https://stackoverflow.com/questions/790 ... sing-pybit