This commit is contained in:
lz_db
2025-11-22 16:08:27 +08:00
parent da459da0f3
commit 8646036ca5
5 changed files with 407 additions and 0 deletions

119
test/test3.py Normal file
View File

@@ -0,0 +1,119 @@
import ccxt
# 使用您的配置
CONFIG = {
'apiKey': 'rFdbMs40biKImtwGnQ',
'secret': 'JOuEiGT1uCX9l2qbn9uZuZrVFraAZAA59mqY',
'verbose': False,
'enableRateLimit': True,
}
def place_contract_market_order(symbol, side, amount, position_side=None, leverage=10):
"""
在Bybit合约市场下市价单
Args:
symbol: 交易对,例如 'BTC/USDT:USDT'
side: 方向 'buy''sell'
amount: 合约数量
position_side: 持仓方向 'long''short'None为自动判断
leverage: 杠杆倍数
"""
try:
# 创建交易所实例
exchange = ccxt.bybit({
'apiKey': CONFIG['apiKey'],
'secret': CONFIG['secret'],
'sandbox': False, # 使用实盘,测试网改为 True
'verbose': CONFIG['verbose'],
'enableRateLimit': CONFIG['enableRateLimit'],
'options': {
'defaultType': 'swap', # 使用合约交易
}
})
exchange.enable_demo_trading(True) # 模拟交易
# 设置杠杆
exchange.set_leverage(leverage, symbol)
# 下市价单
params = {}
if position_side:
params['positionSide'] = position_side
order = exchange.create_order(
symbol=symbol,
type='market',
side=side,
amount=amount,
params=params
)
print("合约市价单创建成功!")
print(f"订单ID: {order['id']}")
print(f"交易对: {order['symbol']}")
print(f"方向: {order['side']}")
print(f"数量: {order['amount']}")
print(f"状态: {order['status']}")
return order
except Exception as e:
print(f"合约下单失败: {e}")
return None
def place_contract_market_order_with_cost(symbol, side, cost, leverage=10):
"""
按金额下合约市价单
Args:
symbol: 交易对
side: 方向
cost: 投入金额(USDT)
leverage: 杠杆倍数
"""
try:
exchange = ccxt.bybit({
'apiKey': CONFIG['apiKey'],
'secret': CONFIG['secret'],
'sandbox': False,
'options': {'defaultType': 'swap'}
})
# 获取当前价格
ticker = exchange.fetch_ticker(symbol)
current_price = ticker['last']
# 计算合约数量
amount = cost * leverage / current_price
return place_contract_market_order(symbol, side, amount, leverage=leverage)
except Exception as e:
print(f"按金额下单失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
# 示例1直接按数量下单
print("=== 按数量下单 ===")
symbol = 'BTC/USDT:USDT' # 永续合约
side = 'buy' # 开多单
amount = 0.01 # 合约数量
order_result = place_contract_market_order(symbol, side, amount, leverage=20)
# 示例2按金额下单
print("\n=== 按金额下单 ===")
cost = 100 # 投入100 USDT
order_result2 = place_contract_market_order_with_cost(symbol, 'sell', cost, leverage=10)
# 示例3指定持仓方向
print("\n=== 指定持仓方向下单 ===")
order_result3 = place_contract_market_order(
symbol='ETH/USDT:USDT',
side='buy',
amount=0.1,
position_side='long', # 明确开多仓
leverage=15
)