Giter Site home page Giter Site logo

btcturkapi-python's Introduction

BTCTurk API - Python Wrapper

btcturkapi-python is a wrapper library built around Btcturk's REST api implementation.

It provides more abstract version of REST Client for traders using Btcturk as a cryptocurrency platform.

Documentation

Check out the documentation for learning how to use this library and further reference

Table of Contents

Features

  • Monitor cryptocurrency prices.
  • Place buy, sell orders with stop, limit, or market methods.
  • List and cancel open orders.
  • Get crypto/fiat transaction history.

Quickstart

In order to use this library for your projects, you can checkout installation and usage sections

Requirements

  • BTCTurk API Credentials (For Authentication Necessary Operations)
https://www.btcturk.com/ApiAccess

You can go to link above and create your api credentials.

Installation

You can install this library via pip.

It is the best practice using a virtual environment for your project, keep that in mind.

Run this command through terminal:

pip install btcturk-api 

Since the project's current version doesn't have support for websockets and any advanced features, dependencies are simple and you should not encounter any installation error.

Usage

After installing the library, just import the client and you are good to go. You can use any feature btcturk api provides without dealing with preparing requests, handling responses etc.

from btcturk_api.client import Client

You can use public endpoints without providing an api key/secret pair.

>>> my_client = Client()
    >>> my_client.get_server_time()
    {'serverTime': 1613292018131, 'serverTime2': '2021-02-14T08:40:18.1308832+00:00'}

If you have an api key/secret pair, you can use account endpoints and trading operations

>>> my_client = Client(api_key='<Your Api Key>', api_secret='<Your Api Secret>')
>>> my_client.get_account_balance()
    [
      {
       'asset': 'TRY',
       'assetname': 'Türk Lirası',
       'balance': '100.00',
       'locked': '0',
       'free': '100.00',
       'orderFund': '0',
       'requestFund': '0',
       'precision': 2
       },
       {...}
    ]

License

You can use this library in your personal projects free of charge. Detailed information is in LICENSE.txt file.

Contact

Miraç Baydemir - [email protected]

Project Link: https://github.com/outlier-1/btcturkapi-python/

Donation

Bitcoin Address - '34FSjtdwTSB21uVDcptgJ8kPHHimMSCGxq'

btcturkapi-python's People

Contributors

outlier-1 avatar yemreak avatar dependabot[bot] avatar

Stargazers

Alper avatar Vusal Ismayilov avatar  avatar Fırat Eren Yakut avatar  avatar Sinan Odabasi avatar emrebulbul23 avatar Muhammed GÜNER avatar Emre Kaynar avatar Semih Yeşilyurt avatar Alihan avatar Anıl Kaynar avatar Erdem U. Altinyurt avatar  avatar Alp Helvaci avatar  avatar Metin Şaylan avatar

Watchers

Erdem U. Altinyurt avatar James Cloos avatar Muhammed GÜNER avatar  avatar Fırat Eren Yakut avatar

btcturkapi-python's Issues

BTC Turk Komisyon Oranları Hakkında

Merhaba,
Komisyon oranlarında Piyasa Yapıcı ve Piyasa Alıcı kavramı var ve ikisinin oranları farklı (Alıcı Yüksek).
Trade yaparken bu orandan düşük olanla ilerleyebilmek adına Orderbook okunup ona göre mi order yaratılmalı?
Yani istediğimiz fiyatın listede olmamasının basit bir kontrolü var mı? Ya da bunun önüne nasıl geçebiliriz , daha önce bunu tecrübe etmiş olan var mı?

İyi Günler...

JSON Decoder Error

Sanırım sunucudan anlamlı bir cevap alamadığı vakitlerde hataya düşüyor.

    self.orderbooks[TradePair] = self.api.get_order_book(TradePair)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 347, in get_order_book
    return self._get(request_url, params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 211, in _get
    return response.json()['data']
  File "/usr/lib/python3.8/site-packages/requests/models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Market SAT hatası

Market SAT da sorun var.
Satış BTC ile yapılıyor, fakat bakiyede yeterince BTC yok ise bu şekil bir hata veriyor bakiye yetersiz hatası vereceğine.

>>> btr.api.submit_market_order(quantity=1,order_type='sell',pair_symbol='BTCUSDT')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
    value = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 700, in submit_market_order
    return self.submit_order(params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
    value = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 831, in submit_order
    return self._post(request_url, params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 237, in _post
    return response.json()['data']
KeyError: 'data'

TRON TRX sembol hatası

TRX USDT alıp-satarken hata

File "btcturk_api/client.py", line 868, in submit_limit_order
scale = SCALE_LIMITS[pair_symbol.upper()]
KeyError: 'TRX_USDT' 

Internal Server Error

İyi günler,
Api'nızı kullanarak btcturk'de alım satım botu yazmaya çalışıyorum. Fakat kodumu while döngüsü ile çalıştırdığım için ve verileri sürekli çekip onlar üzerinde işlemler yaptığım için bazen 15 dakika sonra bazen 2 saat sonunda Internal Server Error yiyorum. Bu nedenle koduma delaylar koyup request miktarını azaltarak bu sorunu çözmeye çalıştım fakat bu da çözüm için yeterli olmadı. Sizce bu sorunu nasıl çözebilirim. Kodumun 7-24 çalışmasını ve serverlarda sıkıntı olsa bile serverlar düzelene kadar beklemesini istiyorum. Bir çözüm öneriniz varsa çok memnun olurum.
İyi çalışmalar diliyorum.

withdraw işlemi

withdraw işlemi mümkün müdür, mümkün ise örnek bir kod paylaşabilir misiniz?

Zenbot integration?

Öncelikle elinize, aklınıza, emeğinize sağlık...

Çoğu geliştirici Zenbot kullanıyor. Burada pek çok marketin apisi ile entegrasyon var. BTCTurk de eklenebilir mi?

Zenbot ile yapılan Automated Trading faaliyetleri BTCTurk üzerine taşınabilirse komisyonlar yerel piyasaya bırakılmış olunabilir. Dolaylı da olsa dövizin ülkeden çıkmasının önüne geçilmesinde katkı sağlanabilir :) .

Teşekkürler, Saygılar.

Saniyelik işlem limitleri

Merhaba.
Edindiğim bilgiye göre BTCTürk 22 Kasımdan itibaren dakikalık 60 adet olan limitlerinin yanı sıra saniyede 10 adet emir girme ve 10 adet emir iptali yapabilecekmiş. Bu limitler API key bazlı değil, kullanıcı hesabı bazlı olacakmış.

Bu limitlere erişmeden limit uygun mu değil mi hesabını tutacak bir mekanizmaya ihtiyaç olacağını zannediyorum.

ETHUSDT Limit Emir Price Round Problem

Merhaba Ömer Bey,
ben şu anda ETHUSDT’ye satış veya alış limit emir gönderiyorum ancak emirler yanlış yuvarlanıyor. Örneğin 620.51’e veya 620.5’e gönderirken emir 621.0’a giriyor 620.5’e gitmesini bekliyorum ben ya da 620.4’e gönderirsem 620.0’a emir gidiyor. Kontrol edebilir misiniz? Sorun benden mi kaynaklı yoksa API’den mi bilemedim. Benim tarafımda bulamadım. En son bu yuvarlama konusunda bir güncellemeniz olmuştu ondan olabilir mi acaba?

SCALE_LIMITS

constants.py kısmında SCALE_LIMITS kısmını dinamik yapma şansı var mı? Yani btcturk price ve amount digitlerini değiştirdiği zaman kullanışsız olabilir bu haliyle. Ayrıca yeni bir coin/market eklendiğinde yine manuel olarak buraya ekleme durumunda kalacağız sanırım. O yüzden bu scaleler otomatik hesaplanırsa daha iyi olabilir.

Bir de SCALE_LIMITS içerisinde price_scale ve amount_scale kısımları neden her market için ikişer kez yazılmış acaba? Örneğin şu şekilde:
'BTCTRY': {'price_scale': 2, 'amount_scale': 8}, 'BTC_TRY': {'price_scale': 2, 'amount_scale': 8} ...

BTCTurkAuthenticationError hatası

Selamlar,
BTCTurkAuthenticationError hatası alıyorum .
Sistemden(BTC) yarattığım API key ve secret IP bağımlı yaptıkları için mi diye de kontrol ettim, problem gözükmüyor?
Yardımcı olabilecek ya da deneyimlemiş olan var mı?

Nonce must be greater than ...

Ara yüzden elle denediğimde bir sorun çıkartmadıydı.
Elle bi nonce girişi yapmadım parametre olarak.
Program içerisinde yapınca böyle bir hata ile karşılaştım.
Sistemin saati de güncel ama...

    a=self.api.submit_limit_order( quantity=amount, price=pricebuy, order_type='buy', pair_symbol=TradePair )
  File "/usr/lib/python3.8/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
    value = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 747, in submit_limit_order
    return self.submit_order(params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
    value = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 831, in submit_order
    return self._post(request_url, params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 232, in _post
    self._handle_response(response)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 186, in _handle_response
    raise BadRequestError(response)
  File "/usr/lib/python3.8/site-packages/btcturk_api/exceptions.py", line 14, in __init__
    raise exception_class(response)
btcturk_api.exceptions.InvalidRequestParameterError: <Response [400]>
Nonce must be greater than 1587950598259999. You provided 1587950292585575.

get_trade_history() obje yaratıldıktan sonra yapılan işlemleri içermiyor.

get_trade_history() fonksiyonundan dönen değerler nedense BTCTurk.api.client.Client objesi yaratıldıktan sonra yapılan işlemleri içermiyor.

Objeyi yaratıp bir düşük işlemli al/sat yapıldığında işlemin get_trade_history() de gözükmesi lazım diye düşünüyorum. Ama nedense bu olmuyor. Üsterlik aynı obje tarafından al-sat yapılsa bile... Sadece client objesi yaratıldıktan önceki yapılmış olan sonuçları döndürüyor.

API v1 Hatası

Bugün BOT'um dan şöyle bir mesaj aldım:

BTCTurk BUY EOSUSDT 10.0 Error: There is something wrong with this API address: https://api.btcturk.com/api/v1/order
 The endpoint may be changed. Check the github page for further information

: dan sonrası gönderilen exception'a ait mesaj.

Exception kısmına bakarak artık v1 yolunun artık kullanılamayacağını çıkartıyorum. Ama buna benzer başka sorun da çıkmadı sonrasında.

Kütüphaneyi kontrol ettim 1.6.1 imiş. Şimdi 1.8.1 e yükselttim ama bu iki versiyon arasında bu hataya sebep olan yolun değişitrilip değiştirilmediğini kontrol etmedim. Bilgi vereyim istedim.

limit_order

aşağıdaki gibi bir komut veriyorum örneklerinize bakarak ama parametrelerim hatalı gibi bir hata veriyor

my_client.submit_limit_order(
    quantity=0.00024975,
    price=100.0,
    order_type='buy',
    pair_symbol='BTC_TRY'
)

100 TL ile 0.00024975 BTC almaya çalışıyorum

Failed Minimum Amount

client = Client(key,secretkey)
client.submit_market_order(quantity=15, order_type='buy', pair_symbol='DASHTRY')
//pairde DASH_TRY de denedim

FAILED_MIN_TOTAL_AMOUNT
btcturk_api.exceptions.InvalidRequestParameterError: <Response [400]>
Almakta olduğum hata bu

quantity'nin birimi Türk Lirası

market_orderda bir hata mı var benim hatam mı bilemedim.
Şimdiden teşekkürler.

FAILED_INVALID_QUANTITY_SCALE hatası

İyi günler,
Aşağıdaki yöntemle elimdeki tüm tetheri satmak istediğimde:
$post_data = "{ 'quantity' : '52.245855', 'price' : '7', 'stopPrice' : 0, newOrderClientId: 'BtcTurk API PHPClient', 'orderMethod':'limit', 'orderType':'sell', 'pairSymbol':'USDT_TRY' }";

FAILED_INVALID_QUANTITY_SCALE
hatasını alıyorum,

method olarak market seçtiğimde satış yapıyor, benim yapmak istediğim şu

örneğin ben elimdeki tüm tetheri 7.105 tl den satışa çıkartmak istiyorum price ye küsürat girdiğimde de aynı hata ile karşılaşıyorum, elimdeki tüm tetheri nasıl satarım yada TL tümüyle nasıl tether alabilrim.

ExchangeInfo API missing

USDTBTC emir verirken fiyat kayar noktalı olursa yada ondalıklı bir birim alırken fazla sayıda basamak bulunursa INVALID_PRICE_SCALE hatasi dönüyor.

API içinde bu hassasiyet ayarı otomatik olarak yapılabilir mi?
BTC alırken basamak sayısı alacağımız değerin hassasiyetine göre ayarlanmalı.
ETH alırken float 201.1111 girdiğimizde API bunu otomatik olarak 201.1 e çevirmeli diye düşünüyorum.

En azından şuradaki fonksiyonu API ya eklemeniz yerinde olacaktır
https://api.btcturk.com/api/v2/server/exchangeinfo

FAILED_INVALID_QUANTITY_SCALE (buy "BTCUSDT", "BTCTRY")

Merhaba, öncelikle API hizmetiniz için çok teşekkür ederim. Ben bir market order gönderdiğim zaman "sell" yaparken sorunsuz işlem gerçekleşiyor ancak "buy" yaparken aldığım hata 400 kodlu ve API hizmetiniz ### FAILED_INVALID_QUANTITY_SCALE hatasını dönüyor. Sebebi ne olabilir?

All Orders orderID missing

API ya göre sanki ID girerek emrimizin sonucunu öğrenmemiz gerekiyor.
Ama get_trade_history() de parametre listesinde orderId girebileceğimiz bir seçenek yok.

Her ne kadar gelen listede emirleri görebilsek de, gelen listedeki ID ... Sanki order'den dönen ID dekinden farklı bir ID ye benziyor. Parametre olarak eklenmemesinin sebebi bu mu?
BTCTurk API da tutarsızlık mı var?

get_trade_history parametre hatası

get_trade_history fonksiyonunda end_date kullanıldığında INVALID REQUEST hatası alıyorum.

>>> btr.api.get_trade_history( end_date=time.time()-3600 ) 
INVALID_REQUEST
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/site-packages/btcturk_api/properties.py", line 11, in wrapper_decorator
    value = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 475, in get_trade_history
    history = self._get(request_url, params)
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 208, in _get
    self._handle_response(response) # TODO: Need to raise exception (like _post), if error occurs
  File "/usr/lib/python3.8/site-packages/btcturk_api/client.py", line 184, in _handle_response
    raise BadRequestError(response)
  File "/usr/lib/python3.8/site-packages/btcturk_api/exceptions.py", line 14, in __init__
    raise exception_class(response)
btcturk_api.exceptions.InvalidRequestParameterError: <Response [400]>

tımestamp olarak float döndürülmesinden pek hoşlanmıyor galiba.int yaptığımda bu hatayı vermiyor. Fakat int dediğimde de anlamlı bir sonuç döndüremedim.
start_date ve end_date parametreleri fonksiyonel mi acaba? Son 1 saatlik veri için:
btr.api.get_trade_history( start_date=int(time.time()), end_date=int(time.time()-3600))
deniyorum ama... boş küme geliyor nedense.

Quantity Kusurat Degistirirken Yukari Yuvarlama

Merhaba,

Asagidaki sekilde emir girmeye calistigimda, API quantity'nin decimal pointini 2 yapiyor ve formatted_qty 3.25 oluyor.

client.submit_limit_order(
    quantity=3.246254185436819,
    price=173.31,
    order_type='buy',
    pair_symbol='ATOM_TRY'
)

Fakat hesabimda sadece 3.24'luk alim yapabilecek para oldugunda hata aliyorum. Bunun yerine asagidaki sekilde rounding olmadan ekstra kismi kesip atmaniz mumkun mu?

import math

quantity=3.246254185436819
amount_scale=2

str(math.floor(quantity * 10**amount_scale)/(10**amount_scale))

Kodun tutarli olmasi icin aynisi fiyat yuvarlamasinda da yapilabilir ama onunla ilgili bir sorunum yok.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.