—2023/03/03 更新—

python ccxt 套件介紹

在這篇文章中,我們將探討如何使用ccxt套件來實現自動化虛擬貨幣交易。ccxt是一個用於加密交易的Python套件,支持數百家加密交易所。在本文中,我們將使用ccxt套件來實現自動化交易,並使用Binance(币安)作為示範交易所。

Step 1: 安裝ccxt套件

安裝ccxt至python3
ccxt github 網址:
https://pypi.org/project/ccxt/
涵蓋交易所部分

在開始之前,首先需要安裝ccxt套件。你可以使用以下命令來安裝:

pip3 install ccxt

Step 2: 連接Binance API

在開始交易之前,需要使用Binance API連接到Binance交易所。要連接到Binance API,需要在Binance註冊一個帳戶,然後生成API密鑰。在生成API密鑰後,可以使用以下代碼連接到Binance API:

連接方法1

import ccxt

balance = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET_KEY',
})

連接方法2

import ccxt

balance = ccxt.binance()
balance.apiKey = 'apiKey'
balance.secret = 'secret私鑰'

Step 3: 查詢市場數據

在開始交易之前,需要查詢市場數據,以了解目前市場的狀況和價格。可以使用以下代碼查詢市場數據:

markets = exchange.load_markets()

for market in markets:
    print(market)

這個代碼會輸出所有可用的市場。你可以使用市場的符號(symbol)來指定要交易的貨幣對。
這是簡單回傳範例

{
    "id": "btcusd",
    "symbol": "BTC/USD",
    "base": "BTC",
    "quote": "USD",
    "info": {
        "pair": "BTCUSD",
        "price_precision": 1,
        "initial_margin": "20.0",
        "minimum_margin": "5.0",
        "maximum_order_size": "1000.0",
        "minimum_order_size": "0.01",
        "expiration": "NA",
        "margin": true
    },
    "limits": {
        "amount": {
            "min": 0.01,
            "max": 1000.0
        },
        "price": {
            "min": 0.01,
            "max": 1000000.0
        },
        "cost": {
            "min": 0.01,
            "max": 1000000.0
        }
    }
}

Step 4: 賬戶資產查詢

當你使用 ccxt 來進行虛擬貨幣交易時,一個非常重要的步驟就是確認你在交易所的帳戶中擁有多少資金和資產。這可以通過調用 fetch_balance() 方法來完成。

fetch_balance() 方法會返回一個字典對象,其中包含了你在交易所中的所有資產和資金。這些資源可以通過字典中的鍵值對來訪問。

以下是一個示例代碼,展示如何使用 fetch_balance() 方法來獲取您的資產和資金:

# =====獲取賬戶資產
balance = binance.fetch_balance()
print(balance)  # 獲得所有錢包資訊
print(balance['info'])  # 交易所原始返回內容
print(balance['free'])  # 可以使用的資產數量
print(balance['used'])  # 已經使用的資產數量,例如正在掛單交易的資產。
print(balance['total'])  # 總資產數量
print(balance['EOS'])  # EOS這個資產的數量
print(balance['USDT']['total'])  # USDT這個資產的數量

打印USDT資產

print(balance['USDT'])  # USDT這個資產的數量
  • free:可用貨幣數量
  • used:凍結貨幣數量
  • total:總共貨幣數量
{'free': 399.39224294, 'used': 0.0, 'total': 399.39224294}

全部列出來

balance = exchange.fetch_balance()

# 獲取所有資產和資金的列表
for key, value in balance['total'].items():
    print(key, ':', value)

# 獲取可用的資產和資金的列表
for key, value in balance['free'].items():
    print(key, ':', value)

在這個示例中,fetch_balance() 方法返回一個字典對象 balance,它包含了你在交易所中的所有資源。balance 字典中的 total 鍵對應一個子字典,其中包含了你所有資源的總數量。類似的,balance 字典中的 free 鍵對應的子字典,包含了你可用的資源數量。

在上面的示例中,我們將資源和資金列表進行迭代,並使用 print() 方法將它們輸出到控制台上。你可以根據自己的需求,進行額外的處理和使用這些資源。

Step 6: 自動化交易

以下是一個簡單的自動化交易策略的代碼,LEND/USDT市場上進行簡單的交易:

    symbol = 'LEND/USDT'
    pirce = 0.03 # 掛單價格
    amount = 20 # 賣20顆
    amount = balance['LEND']['total'] # 賣出所有LEND

    # 市價單,市價單不需要輸入價格
    order_info = binance.create_market_buy_order(symbol=symbol, amount=amount)  # 買單
    order_info = binance.create_market_sell_order(symbol=symbol, amount=amount)  # 賣單

以下是一個簡單的自動化交易策略的代碼,用於在BTC/USDT市場上進行簡單的交易:

import time

while True:
    ticker = exchange.fetch_ticker('BTC/USDT')
    balance = exchange.fetch_balance()

    # 如果BTC的價格小於41000 USDT並且賬戶中有足夠的USDT
    if ticker['last'] < 41000 and balance['USDT']['free'] > 100:
        order = exchange.create_order(symbol='BTC/USDT', type='limit', side='buy', amount=0.001, price=40000)
        print(order)

    # 如果BTC的價格大於45000 USDT並且賬戶中有足夠的BTC
    elif ticker['last'] > 45000 and balance['BTC']['free'] > 0.001:
        order = exchange.create_order(symbol='BTC/USDT', type='limit', side='sell', amount=0.001, price=46000)
        print(order)

    time.sleep(60)

完整範例

以下是一個使用 ccxt Python 庫進行虛擬貨幣交易的完整範例,這個範例可以實現以下三個步驟:

查詢可交易的幣種。
查詢你在交易所中的資源和資金。
下單購買 BTC。

import ccxt

# 初始化交易所對象
exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET_KEY',
    'enableRateLimit': True,
})

# 查詢可交易幣種
markets = exchange.load_markets()
print('可交易幣種:')
for market in markets:
    print(market)

# 查詢你在交易所中的資源和資金
balance = exchange.fetch_balance()
print('你的資源和資金:')
for key, value in balance['total'].items():
    print(key, ':', value)

# 下單購買 BTC
symbol = 'BTC/USDT'  # 交易對
amount = 0.001  # 購買數量
price = exchange.fetch_ticker(symbol)['ask']  # 購買價格
order = exchange.create_order(symbol, 'limit', 'buy', amount, price)
print('下單成功:', order)

Python更多文章


Python 檢查dict是否有這個key



[教學] Line Bot 機器人不求人 – 範例 (Python)



Python – Selenium 繞過”這個瀏覽器或應用程式可能有安全疑慮”



python 各種均線 10MA/20MA均線 | pandas安裝



python sleep 暫停幾秒執行 – 2021年



PyAutoGUI Python控制電腦 | 按鍵精靈 | 鍵盤控制



python binance币安利用ccxt完成虛擬貨幣自動化交易



python write dictionary to text file | dict 寫入讀取


Categorized in: