1
This commit is contained in:
119
test/test3.py
Normal file
119
test/test3.py
Normal 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
|
||||
)
|
||||
Reference in New Issue
Block a user