binance / binance/binance-toolbox-python

Can not set stop loss / take profit, error ‘Order does not exist

Abierto
#18 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
110
Forks
22
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I have an issue is the TP/SL function not reading the Binance side
could you please help me to resolve this issues
```
import requests
import hashlib
import hmac
import time

def get_current_price(symbol):
base_url = 'https://fapi.binance.com'
endpoint = '/fapi/v1/ticker/price'

params = {
'symbol': symbol
}

response = requests.get(f'{base_url}{endpoint}', params=params)
data = response.json()

if 'price' in data:
return float(data['price'])
else:
return None

def calculate_required_margin(quantity, price, leverage):
return (quantity * price) / leverage

def get_account_balance():
base_url = 'https://fapi.binance.com'
endpoint = '/fapi/v2/account'

params = {
'timestamp': int(time.time() * 1000)
}

signature = hmac.new(API_SECRET.encode('utf-8'), '&'.join([f'{k}={v}' for k, v in params.items()]).encode('utf-8'), hashlib.sha256).hexdigest()

headers = {
'X-MBX-APIKEY': API_KEY
}

url = f'{base_url}{endpoint}?timestamp={params["timestamp"]}&signature={signature}'

response = requests.get(url, headers=headers)
return response.json()

def create_cross_order(symbol, side, quantity, leverage, position_side, take_profit_percent, stop_loss_percent):
base_url = 'https://fapi.binance.com'
endpoint = '/fapi/v1/order'

current_price = get_current_price(symbol)
if current_price is None:
print('Failed to fetch current price.')
return

required_margin = calculate_required_margin(quantity, current_price, leverage)

# Fetch account information to check available balance
account_info = get_account_balance()
if 'totalWalletBalance' in account_info:
total_wallet_balance = float(account_info['totalWalletBalance'])
if total_wallet_balance < required_margin:
print("Insufficient balance for required margin.")
return
else:
print("Failed to fetch account balance.")
return

# Calculate take profit and stop loss prices
take_profit_price = current_price * (1 + take_profit_percent / 100)
stop_loss_price = current_price * (1 - stop_loss_percent / 100)

params = {
'symbol': symbol,
'side': side,
'positionSide': position_side,
'quantity': quantity,
'price': current_price,
'type': 'LIMIT',
'timeInForce': 'GTC',
'leverage': leverage,
'timestamp': int(time.time() * 1000),
'takeProfit': take_profit_price,
'stopLoss': stop_loss_price
}

query_string = '&'.join([f'{k}={v}' for k, v in params.items()])
signature = hmac.new(API_SECRET.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest()

headers = {
'X-MBX-APIKEY': API_KEY
}

url = f'{base_url}{endpoint}?{query_string}&signature={signature}'

response = requests.post(url, headers=headers)
return response.json()

# Show account balance
balance_response = get_account_balance()
if 'totalWalletBalance' in balance_response:
print(f"Total Wallet Balance: {balance_response['totalWalletBalance']} USDT")
else:
print("Failed to fetch account balance.")

# Create order with take profit of 1.5% and stop loss of 2%
symbol = 'BTCUSDT'
side = 'BUY' # Change this to 'SELL' if you're opening a short position
quantity = 0.01
leverage = 10 # Leverage x10
position_side = 'LONG' # Change this to 'SHORT' if opening a short position
take_profit_percent = 1.5
stop_loss_percent = 2.0
response = create_cross_order(symbol, side, quantity, leverage, position_side, take_profit_percent, stop_loss_percent)
if response is not None:
print(response)
```
![image](https://github.com/binance/binance-futures-connector-python/assets/134910536/1fdf461e-2606-4f82-89fe-a618666f9271)
![image](https://github.com/binance/binance-futures-connector-python/assets/134910536/5ef9dd33-0ad8-4874-93d3-71b754a34800)
![image](https://github.com/binance/binance-futures-connector-python/assets/134910536/489e2a8c-23b6-48a0-9f06-44f274ba3145)

@2pd @aisling11 @chairz @bnbot

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con la función create_cross_order y su solicitud POST a /fapi/v1/order; después, compara los parámetros proporcionados con la documentación de la Binance Futures API. El issue no indica ningún archivo del repositorio ni ninguna prueba, por lo que para darlo por terminado habría que reproducir el error reportado y confirmar que la orden y su comportamiento de TP/SL se aceptan según lo previsto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
18/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.