Can not set stop loss / take profit, error ‘Order does not exist
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 18/100
Research direction
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.
Written by the indexing model from the issue text.
Description
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)
@2pd @aisling11 @chairz @bnbot
- Dominant language
- Python
- Stars
- 110
- Forks
- 22
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from binance/binance-toolbox-python
-
Difficulty 4/5 3-5 days Newbie friendliness 30/100
All issues in binance/binance-toolbox-python
Similar issues
-
documentation help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100