Closed exchangekiller closed 7 months ago
Aynı sorunu bende yaşıyorum. Takipteyim
Selamlar, Price alanını decimal olarak yollamanız hataya neden oluyor olabilir. Price'ı nasıl handle ettiğinizi bilmediğim için size önerim bunu string formatında api'ye iletmeniz yönünde olacaktır. Zamanında aynı problemi yaşayan bir kullanıcımız için yazmış olduğum bir kod örneği vardı. Aşağıda size ileteceğim örnekteki gibi bir istek yollamanız durumunda hata almamanızı beklerim.
Aşağıya kod örneğini bırakıyorum
import time, base64, hmac, hashlib, requests, json
import numpy as np
def format_float(num):
return np.format_float_positional(num, trim='-')
base = "https://api.btcturk.com"
method = "/api/v1/order"
uri = base + method
apiKey = "-"
apiSecret = "-"
apiSecret = base64.b64decode(apiSecret)
stamp = str(int(time.time()) * 1000)
data = "{}{}".format(apiKey, stamp).encode("utf-8")
signature = hmac.new(apiSecret, data, hashlib.sha256).digest()
signature = base64.b64encode(signature)
headers = {"X-PCK": apiKey, "X-Stamp": stamp, "X-Signature": signature, "Content-Type": "application/json"}
params = {"quantity": 10000000, "price": 0.00003939, "stopPrice": 0, "newOrderClientId": "Test", "orderMethod": "limit",
"orderType": "buy", "pairSymbol": "PEPE_TRY"}
params["price"] = format_float(params["price"])
params["quantity"] = format_float(params["quantity"])
json_params = json.dumps(params)
result = requests.post(url=uri, headers=headers, json=params)
result = result.json()
print(result)
Request body
{'quantity': '10000000', 'price': '0.00003939', 'stopPrice': 0, 'newOrderClientId': 'Test', 'orderMethod': 'limit', 'orderType': 'buy', 'pairSymbol': 'PEPE_TRY'}
<Response [200]>
{'httpStatusCode': 200, 'data': {'id': xxx, 'quantity': '10000000', 'price': '0.00003939', 'stopPrice': '0', 'newOrderClientId': 'Test', 'type': 'buy', 'method': 'limit', 'pairSymbol': 'PEPETRY', 'pairSymbolNormalized': 'PEPE_TRY', 'datetime': 1702548923527}, 'success': True, 'message': 'SUCCESS', 'code': 0}
Merhaba,
python btcturk-api kütüphanesini kullanarak alım-satım işlemleri gerçekleştiren bir kodum var. Bugün PEPEUSDT çiftinde işlem yapmaya çalıştığını ancak emirlerin gerçekleşmediğini farkettim. 0.00000099 dan daha büyük fiyatlarda emirler gerçekleşiyor. Ancak daha küçük fiyatlarda aşağıdaki hatayı alıyorum. Fiyat bu seviyenin altına düşmeden önce herhangi bir sorun yaşamıyordum. Bu fiyat seviyesindeki tek işlem çifti de PEPEUSDT. Hatanın sunucu ya da kütüphane kaynaklı olduğunu düşünüyorum. Kontrol etme şansınız var mıdır? Aşağıya izole bir test bırakıyorum:
Çalışan istek unit test (b api ile alakalı gerekli obje ve veri tiplerini tutan sınıf nesnesi):
Çalışmayan istek:
Traceback (most recent call last): File "/Users/*/Desktop/CIXIE/v3/BtcTurkApiMethods.py", line 256, in
ord = b.client.submit_limit_order(quantity=50 1000 1000,
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
value = func(args, *kwargs)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/client.py", line 1316, in submit_limit_order
return self._submit_order(params)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
value = func(args, kwargs)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/client.py", line 1444, in _submit_order
return self._post(request_url, params)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/client.py", line 387, in _post
self._handle_response(response)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/client.py", line 336, in _handle_response
raise BadRequestError(response)
File "/opt/homebrew/lib/python3.9/site-packages/btcturk_api/exceptions.py", line 18, in init
raise exception_class(response)
btcturk_api.exceptions.InvalidRequestParameterError: Invalid Request Parameters. Error Message: INVALID_REQUEST