binance / binance/binance-toolbox-python

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

Offen
#18 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
110
Forks
22
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Start with the create_cross_order function and its POST request to /fapi/v1/order, then compare the supplied parameters with Binance Futures API documentation. The issue names no repository file or test, so done would require reproducing the reported error and confirming that the order and its TP/SL behavior are accepted as intended.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
api
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
18/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.