mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-11 01:08:07 +00:00
commit
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
- [Bybit Updated](./examples/py/)
|
||||
|
||||
|
||||
```python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import asyncio
|
||||
import os
|
||||
from random import randint
|
||||
import sys
|
||||
from pprint import pprint
|
||||
|
||||
|
||||
import ccxt.async_support as ccxt # noqa: E402
|
||||
|
||||
|
||||
print('CCXT Version:', ccxt.__version__)
|
||||
|
||||
exchange = ccxt.bybit({
|
||||
'apiKey': 'YOUR_API_KEY',
|
||||
'secret': 'YOUR_SECRET_KEY',
|
||||
})
|
||||
|
||||
|
||||
# Example 1: Spot : fetch balance, create order, cancel it and check canceled orders
|
||||
async def example_1():
|
||||
exchange.options['defaultType'] = 'spot'; # very important set spot as default type
|
||||
markets = await exchange.load_markets(True)
|
||||
|
||||
# fetch spot balance
|
||||
balance = await exchange.fetch_balance()
|
||||
print(balance)
|
||||
|
||||
# create limit order
|
||||
symbol = 'LTC/USDT'
|
||||
type = 'limit'
|
||||
side = 'buy'
|
||||
amount = 0.1
|
||||
price = 50
|
||||
create_order = await exchange.create_order(symbol, type, side, amount, price)
|
||||
print('Create order id:', create_order['id'])
|
||||
|
||||
# cancel created order
|
||||
canceled_order = await exchange.cancel_order(create_order['id'], symbol)
|
||||
print(canceled_order)
|
||||
|
||||
# Check canceled orders (bybit does not have a single endpoint to check orders
|
||||
# we have to choose whether to check open or closed orders and call fetch_open_orders
|
||||
# or fetch_closed_orders respectively
|
||||
orders = await exchange.fetch_closed_orders(symbol)
|
||||
print(orders)
|
||||
await exchange.close()
|
||||
# Example 2 :: Swap : fetch balance, open a position and close it
|
||||
async def example_2():
|
||||
exchange.options['defaultType'] = 'swap'; # very important set swap as default type
|
||||
markets = await exchange.load_markets(True)
|
||||
|
||||
# fetch swap balance
|
||||
balance = await exchange.fetch_balance()
|
||||
print(balance)
|
||||
|
||||
# create market order and open position
|
||||
symbol = 'LTC/USDT:USDT'
|
||||
type = 'market'
|
||||
side = 'buy'
|
||||
amount = 0.1
|
||||
price = None
|
||||
create_order = await exchange.create_order(symbol, type, side, amount, price)
|
||||
print('Create order id:', create_order['id'])
|
||||
|
||||
# check opened position
|
||||
symbols = [ symbol ]
|
||||
positions = await exchange.fetch_positions(symbols)
|
||||
print(positions)
|
||||
|
||||
# Close position by issuing a order in the opposite direction
|
||||
side = 'sell'
|
||||
params = {
|
||||
'reduce_only': True
|
||||
}
|
||||
close_position_order = await exchange.createOrder(symbol, type, side, amount, price, params)
|
||||
print(close_position_order)
|
||||
# Example 3 :: USDC Swap : fetch balance, open a position and close it
|
||||
async def example_3():
|
||||
exchange.options['defaultType'] = 'swap'; # very important set swap as default type
|
||||
markets = await exchange.load_markets(True)
|
||||
|
||||
# fetch USDC swap balance
|
||||
# when no symbol is available we can show our intent
|
||||
# of using USDC endpoints by either using defaultSettle in options or
|
||||
# settle in params
|
||||
# Using Options: exchange.options['defaultSettle'] = 'USDC';
|
||||
# Using params:
|
||||
balanceParams = {
|
||||
'settle': 'USDC'
|
||||
}
|
||||
balance = await exchange.fetch_balance(balanceParams)
|
||||
print(balance)
|
||||
|
||||
# create order and open position
|
||||
# taking into consideration that USDC markets do not support
|
||||
# market orders
|
||||
symbol = 'BTC/USD:USDC'
|
||||
type = 'limit'
|
||||
side = 'buy'
|
||||
amount = 0.1
|
||||
price = 15000 # adjust this accordingly
|
||||
create_order = await exchange.create_order(symbol, type, side, amount, price)
|
||||
print('Create order id:', create_order['id'])
|
||||
|
||||
# check if the order was filled and the position opened
|
||||
symbols = [ symbol ]
|
||||
positions = await exchange.fetch_positions(symbols)
|
||||
print(positions)
|
||||
|
||||
# Close position (assuming it was already opened) by issuing an order in the opposite direction
|
||||
side = 'sell'
|
||||
params = {
|
||||
'reduce_only': True
|
||||
}
|
||||
close_position_order = await exchange.createOrder(symbol, type, side, amount, price, params)
|
||||
print(close_position_order)
|
||||
# Example 4 :: Future : fetch balance, create stop-order and check open stop-orders
|
||||
async def example_4():
|
||||
exchange.options['defaultType'] = 'future'; # very important set future as default type
|
||||
markets = await exchange.load_markets(True)
|
||||
|
||||
# fetch future balance
|
||||
balance = await exchange.fetch_balance()
|
||||
print(balance)
|
||||
|
||||
# create stop-order
|
||||
symbol = 'ETH/USD:ETH-220930'
|
||||
amount = 10 # in USD for inverse futures
|
||||
price = 1200
|
||||
side = 'buy'
|
||||
type = 'limit'
|
||||
stop_order_params = {
|
||||
'position_idx': 0, # 0 One-Way Mode, 1 Buy-side, 2 Sell-side, default = 0
|
||||
'stopPrice': 1000, # mandatory for stop orders
|
||||
'basePrice': 1100 # mandatory for stop orders
|
||||
}
|
||||
stop_order = await exchange.create_order(symbol, type, side, amount, price, stop_order_params)
|
||||
print('Create order id:', stop_order['id'])
|
||||
|
||||
# check opened stop-order
|
||||
open_order_params = {
|
||||
'stop': True
|
||||
}
|
||||
openOrders = await exchange.fetch_open_orders(symbol, None, None, open_order_params)
|
||||
print(openOrders)
|
||||
|
||||
# cancell all open stop-orders
|
||||
cancelOrder = await exchange.cancel_all_orders(symbol, open_order_params)
|
||||
print(cancelOrder)
|
||||
async def main():
|
||||
try:
|
||||
await example_1()
|
||||
await example_2()
|
||||
await example_3()
|
||||
await example_4()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
await exchange.close()
|
||||
|
||||
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
|
||||
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user