ดึงราคาเหรียญในอดีตจาก Binance ด้วย Python
ในหลายครั้งเราต้องการดึงข้อมูลราคาของ Crypto เพื่อมาลองสร้างโมเดลเล่นกันจะมีตลาดไหนดีไปกว่า binance ดังนั้นวันนี้เราจะลองมาดึงราคาเหรียญต่าง ๆ จาก binance เพื่อไว้ทำโมเดลเล่นกันนะครับ สำหรับใครที่สนใจศึกษา python-binance api เบื้องต้นคลิ๊กที่นี้เลยนะครับ หรือถ้าอยากรู้วิธีการดึงราคาเหรียญแบบ Real Time ก็คลิ๊กที่นี้เลยนะครับ
มาเริ่มกันเลย
ก่อนอื่นเราต้อง import binance api แล้วใส่ api key และ secret key สำหรับใครไม่ทราบว่าเอา key binance ยังไงคลิ๊กเลย
from binance.client import Client #import binance apiapi_key =
api_secret =client = Client(api_key, api_secret)
เราก็สามารถดึงข้อมูลด้วย code เพียงบรรทัดเดียวแต่เราจะทำให้ดูง่ายขึ้นโดยแยกเหรียญที่ต้องการดึงข้อมูล และดึงมาเป็นรายอะไร รวมถึง start date ข้อมูล
symbol = "BTCUSDT" interval='1h'
start_date = "1 Jan,2019"klines = client.get_historical_klines(symbol, interval,start_date)
สำหรับตัวแปรคาบเวลาดังนี้เลยนะครับ
1MINUTE = ‘1m’
3MINUTE = ‘3m’
5MINUTE = ‘5m’
15MINUTE = ‘15m’
30MINUTE = ‘30m’
1HOUR = ‘1h’
2HOUR = ‘2h’
4HOUR = ‘4h’
6HOUR = ‘6h’
8HOUR = ‘8h’
12HOUR = ‘12h’
1DAY = ‘1d’
3DAY = ‘3d’
1WEEK = ‘1w’
1MONTH = ‘1M’
หลังจากนั้นเราจะแปลข้อมูลให้อยู่ในรูปแบบของ data frame เพื่อให้ง่ายต่อการนำไปใช้
data = pd.DataFrame(klines) #สร้างข้อมูลให้อยู่ในรูปแบบ data frame
แล้วก็ตั้งชื่อคอลัมน์
data.columns = ['datetime', 'open', 'high', 'low', 'close', 'volume','close_time', 'qav', 'num_trades','taker_base_vol', 'taker_quote_vol', 'ignore']
จัดรูปแบบเวลานิดนึง
data.index = [dt.datetime.fromtimestamp(x/1000.0) for x in data.close_time]data.head(5)
ก็จะได้ข้อมูลออกมาดังนี้
เขียน loop เพื่อดึงหลายๆเหรียญ
ที่นี้เราจะมาเขียน loop เพื่อดึงข้อมูลหลายๆเหรียญกัน
ก่อนอื่นสร้าง list ของเหรียญที่เราอยากจะดึงขึ้นมา
coinlist = ["ETHUSDT","BNBUSDT", "SOLUSDT", "FTMUSDT","EGLDUSDT", "MATICUSDT", "ONEUSDT" ,"AVAXUSDT", "LUNAUSDT"]
หลังจากนั้นสร้าง dataframe มารับค่า
df_coin = None
ระบุความถี่ของข้อมูลที่ต้องการดึง พร้อมกับวันเริ่มต้น พร้อมกับสร้าง dummy สำหรับ loop
interval = '1h' #ระบุความถี่ของข้อมูลที่ต้องการดึงstart_date = "1 Jan,2019"n = 0
หลังจากนั้นก็สร้าง loop
สังเกต code ในส่วนนี้ให้ดีผมต้องการแปลงข้อมูลให้อยู่ในรูปแบบ long format ไม่เขียนก็ได้แต่ต้องต่อข้อมูแบบ merg
data = pd.melt(data , value_vars=[ 'open', 'high', 'low', 'close', 'volume','close_time', 'qav', 'num_trades','taker_base_vol', 'taker_quote_vol', 'ignore'], ignore_index=False)
ง่ายๆแค่นี้เราก็จะมีข้อมูลราคาเหรียญเพื่อไปสร้างโมเดลกันได้แล้ว
สำหรับใครที่ต้องการลองดูตัวอย่างการใช้ API สามารถคลิ๊กตามลิงค์ด้านล่างเลย
ดึงราคาเหรียญในอดีต
ดึงพอร์ต
order
Note book
https://colab.research.google.com/drive/1xPsEHtGMVESUVBdqJO5mjoEJE0kaUYhK?usp=sharing