Python dünya genelinde popüler hale gelen bir yazılım dili olmayı başardı, geleceğe de yön veren Python özellikle Kripto Para borsalarında oldukça kullanılmaktadır. Yapay Zeka ve Büyük Veri ( Big Data ) kullanımı arttıkça Python'da gelişmeye devam etmekte yeni kütüphaneleri de kendi bünyesine katmakta. Python ile internet siteleri yapabilir, eklentiler oluşturabilir, yapay zeka dünyasına girebilir, büyük verilerinizi yönetebilir, içerik botları oluşturup veriler çekebilirsiniz. Daha bir çok işleme imkan veren Python ile bugün Binance Borsasında yer alan hesabımızın API bilgilerini kullanarak küçük bir alım satım botu yazacağız. Öncelikle bize gereken uygulamaları listeleyelim ve daha sonra kurulum işlemlerine geçelim.
Python'ın kendisini öncelikle indiriyoruz ben Python 3.6 indirdim.
Python kodlaması için PyCharm uygulamasını indiriyoruz, PyCharm ücretli bir Python geliştirme uygulaması fakat eğitim paketi ile ücretsiz sahip olabiliyoruz bu yüzden eğitim gördüğümüz üniversitenin e-posta adresi ile kayıt olup ücretsiz lisans alabiliriz. PyCharm kullanmak istemiyorsanız farklı bir IDE'de kullanabilirsiniz.
Python'ın kurulumunu bitirip PyCharm kurulumunu yapıyoruz ve PyCharm Settings kısmından bazı kütüphanelerin kurulumunu gerçekleştiriyoruz.
Settings kısmından kurulacak olan kütüphaneler;
Python-Binance
Numpy
Bu kütüphaneleri ilgili ekran üzerinden kurabilirsiniz, kurduktan sonra harici bir kütüphanemiz daha var onu manuel bir şekilde kurmamız gerekiyor bunun için, proje olarak yeni bir klasör oluşturup içerisinde aşağıda ismini vermiş olduğum kütüphaneyi bulup indiriyoruz.
TA_Lib‑0.4.18‑cp36‑cp36m‑win_amd64.whl kütüphanesini proje dosyamıza koyup CMD ekranı üzerinden ilgili klasöre gelip bu komutu çalıştırıyoruz.
pip3 install TA_Lib-0.4.17-cp36-cp36m-win_amd64.whl
PyCharm uygulamamıza gelerek yeni bir Python projesi oluşturup kodlarımızı yazmaya başlıyoruz. Öncelikle ilgili kütüphaneleri proje dosyamızın en üst kısmına yazarak daha sonra kullanacağımız işlemleri belirliyoruz.
from binance.client import Client
import talib as ta
import numpy as np
import time
class BinanceConnection:
def __init__(self, file):
self.connect(file)
""" Creates Binance client """
def connect(self, file):
lines = [line.rstrip('\n') for line in open(file)]
key = lines[0]
secret = lines[1]
self.client = Client(key, secret)
Bu kısımdan sonra Binance hesabımıza giriş yapıp Binance üst menü kısmında yer alan profilimiz sekmesi üzerine gelerek API Yönetimi sayfasına erişim sağlıyoruz ve buradan API ismi belirleyerek yeni bir API oluşturuyoruz. Oluşturduğumuz API bilgilerini boş bir Metin Defterine ( uzantı .txt olmak zorunda ) yapıştırıyoruz. Metin Defterini de projemizin olduğu klasöre ekliyoruz ve kod yazmaya devam ediyoruz.
if __name__ == '__main__':
filename = 'credentials.txt'
connection = BinanceConnection(filename)
symbol = 'DENTUSDT'
interval = '1m'
limit = 500
while True:
# 10 saniye bekliyoruz. Sürekli sorgu göndermeye gerek yok.
time.sleep(2)
try:
klines = connection.client.get_klines(symbol=symbol, interval=interval, limit=limit)
except Exception as exp:
print(exp.status_code, flush=True)
print(exp.message, flush=True)
open = [float(entry[1]) for entry in klines]
high = [float(entry[2]) for entry in klines]
low = [float(entry[3]) for entry in klines]
close = [float(entry[4]) for entry in klines]
last_closing_price = close[-1]
previous_closing_price = close[-2]
print('anlık kapanış fiyatı', last_closing_price, ', bir önceki kapanış fiyatı', previous_closing_price)
close_array = np.asarray(close)
close_finished = close_array[:-1]
macd, macdsignal, macdhist = ta.MACD(close_finished, fastperiod=12, slowperiod=26, signalperiod=9)
rsi = ta.RSI(close_finished, timeperiod=14)
if len(macd) > 0:
last_macd = macd[-1]
last_macd_signal = macdsignal[-1]
previous_macd = macd[-2]
previous_macd_signal = macdsignal[-2]
rsi_last = rsi[-1]
macd_cross_up = last_macd > last_macd_signal and previous_macd < previous_macd_signal
if macd_cross_up and rsi_last > 40:
print('al sinyali', flush=True)
# mail atabilirsiniz, sms gönderebilirsiniz.
# alım yapabilirsiniz (0.1 miktarında market ya da limit alım emri girebiliriz):
# buy_order = connection.client.order_market_buy(
# symbol=symbol,
# quantity=0.1)
Yazmış olduğumuz kodların içerisinde credentials.txt
isimli dosya bizim API bilgilerimizin olduğu Metin Defteri olduğunu hatırlatayım sizlere bu yüzden API bilgilerinizin yer aldığı TXT dosyasını buradan isimlendirebilirsiniz ve düzenleyebilirsiniz. Oluşturduğumuz bot ile al sinyali gönderebilir ve satın alma işlemlerini yapabilirsiniz. Kodların içerisinde yer alan RSI değerlerini düzenleyebilir ve Coin belirleyebilirsiniz şuanda DENT coini için işlem yapmakta, ilgili kod satırlarını düzenleyip Coin değişikliği yapabilirsiniz. Aşağıda yer alan bağlantıları kullanarak GitHub üzerinden bitmiş halini indirip kullanabilir ve düzenleyebilirsiniz.
GitHub üzerinden indirin.