Files
ccxt_with_mt5/test/test3.py
lz_db 8646036ca5 1
2025-11-22 16:08:27 +08:00

119 lines
3.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
)