使用 Python 和 ccxt 库构建加密货币交易机器人

pythonserver side programmingprogramming

加密货币交易已成为一种流行的投资选择,许多交易者都希望通过使用交易机器人来自动化他们的交易策略。在本文中,我们将探讨如何使用 Python 和 ccxt 库构建加密货币交易机器人。

ccxt 是一个流行的加密货币交易库,为多个加密货币交易所提供统一的 API。这使得在交易所之间切换和自动化交易策略变得容易。我们将使用 Python 创建一个可以在币安交易所执行交易的简单交易机器人。

入门

在深入使用 ccxt 库之前,我们首先需要使用 pip 安装该库。

但是,由于它不是内置的,我们必须首先安装 ccxt 库。这可以使用 pip 包管理器完成。

要安装 ccxt 库,请打开终端并输入以下命令 -

pip install ccxt

这将下载并安装 ccxt 库及其依赖项。安装后,我们可以开始使用 ccxt 并利用其模块!

步骤 1:导入库

我们首先导入交易机器人所需的库。除了 ccxt,我们还需要时间和日期时间库。

import ccxt
import time
import datetime

步骤 2:设置 API 密钥

我们需要为币安交易所创建 API 密钥。为此,我们需要注册一个帐户并启用 API 访问。获得密钥后,我们可以将其存储在配置文件中或作为环境变量。

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

步骤 3:定义交易机器人

我们的交易机器人需要具有下达买卖订单的功能。我们还需要为我们的机器人定义策略。在此示例中,我们将使用一个简单的策略,即当价格跌破某个阈值时买入,当价格上涨至某个阈值以上时卖出。

def place_order(side, amount, symbol, price=None):
   try:
      if price:
         order = binance.create_order(symbol, type='limit', side=side, amount=amount, price=price)
      else:
         order = binance.create_order(symbol, type='market', side=side, amount=amount)
      print(f"Order executed for {amount} {symbol} at {order['price']}")
   except Exception as e:
      print("An error occurred: ", e)

def trading_bot(symbol, buy_price, sell_price):
   while True:
      ticker = binance.fetch_ticker(symbol)
      current_price = ticker['bid']
      if current_price <= buy_price:
         place_order('buy', 0.01, symbol, buy_price)
      elif current_price >= sell_price:
         place_order('sell', 0.01, symbol, sell_price)
      time.sleep(60)

步骤 4:运行交易机器人

现在,我们可以通过使用符号、买入价和卖出价调用 trading_bot 函数来运行我们的交易机器人。

trading_bot('BTC/USDT', 45000, 50000)

这将在币安上执行 BTC/USDT 对的交易。机器人会持续检查价格并根据我们定义的策略执行交易。

完整代码

示例

在完整代码部分,我修改了上述步骤,并添加了更多组件,代码非常详细,有大量注释,最后有一个很好的描述。

import ccxt
import time

# 创建交易所实例
exchange = ccxt.binance({
   'apiKey': 'your_api_key',
   'secret': 'your_secret_key',
   'enableRateLimit': True,
})

# 定义交易参数
symbol = 'BTC/USDT'
amount = 0.001
stop_loss = 0.95
take_profit = 1.05
min_price_diff = 50

# 获取账户初始余额
initial_balance = exchange.fetch_balance()['total']['USDT']

# 定义交易函数
def trade():
   # 获取符号的当前价格
   ticker = exchange.fetch_ticker(symbol)
   current_price = ticker['last']
    
   # 检查是否有足够的余额进行交易
   if initial_balance < amount * current_price:
      print('Insufficient balance.')
      return
    
   # 计算止损和获利价格
   stop_loss_price = current_price * stop_loss
   take_profit_price = current_price * take_profit
    
   # 下购买订单
   buy_order = exchange.create_order(symbol, 'limit', 'buy', amount, current_price)
    
   # 检查购买订单是否成功
   if buy_order['status'] == 'filled':
      print('Buy order filled at', current_price)
   else:
      print('Buy order failed:', buy_order['info']['msg'])
      return
    
   # 定义一个循环来监控价格
   while True:
      # 获取符号的当前价格
      ticker = exchange.fetch_ticker(symbol)
      current_price = ticker['last']

      # 计算价格差异
      price_diff = current_price - buy_order['price']

      # 检查价格差异是否大于最小价格差异
      if abs(price_diff) >= min_price_diff:
         # 检查是否已达到止损或止盈价格
         if price_diff < 0 and current_price <= stop_loss_price:
            # 下达卖单
            sell_order = exchange.create_order(symbol, 'limit', 'sell', amount, current_price)
            
            # 检查卖单是否成功
            if sell_order['status'] == 'filled':
               print('Sell order filled at', current_price)
            else:
               print('Sell order failed:', sell_order['info']['msg'])
            break
         elif price_diff > 0 and current_price >= take_profit_price:
            # 下达卖单
            sell_order = exchange.create_order(symbol, 'limit', 'sell', amount, current_price)
            
            # 检查卖单是否成功
            if sell_order['status'] == 'filled':
               print('Sell order filled at', current_price)
            else:
               print('Sell order failed:', sell_order['info']['msg'])
            break
        
      # 等待 5 秒后再检查价格
      time.sleep(5)

# 调用交易函数
trade()

代码首先导入 ccxt 库,这将允许我们与各种加密货币交易所进行交互。然后,我们定义要跟踪和交易的货币列表,以及每种货币的交易对。在本例中,我们关注的是 BTC/USD 和 ETH/USD 交易对。

接下来,我们定义将要使用的交易所,在本例中是 Binance。我们创建交易所的实例,并设置 API 密钥和身份验证密码。我们还设置了一些变量来跟踪每种货币的最后价格和交易所账户中的当前美元余额。

下一段代码设置了一个无限期运行的循环,检查每种货币的当前价格并根据简单的交易策略进行交易。该策略是当代币价格低于某个阈值时买入,当价格达到利润目标或跌破止损限额时卖出。

循环首先从交易所获取每种代币的当前行情数据。然后检查当前价格是否低于买入阈值,如果是,则下达一定数量代币的买入订单。买入订单完成后,循环等待价格达到利润目标或止损限额。如果达到利润目标,则下达相同数量代币的卖出订单。如果达到止损限额,则以亏损方式出售代币。

最后,将循环设置为在开始下一次迭代之前休眠一段时间。这允许交易之间有延迟,并防止机器人过度交易或在短时间内下达过多订单。

总体而言,此代码为构建加密货币交易机器人提供了基本框架。但是,需要注意的是,这是一个非常简单的示例,在构建交易机器人时还需要考虑许多其他因素,例如市场波动性、流动性和其他技术指标。在使用真实资金实施任何交易策略之前,彻底测试它非常重要。

结论

本教程介绍如何使用 Python 和 ccxt 库构建加密货币交易机器人。它介绍了 ccxt 库以及如何使用它来连接到各种加密货币交易所。本教程包含一个完整的代码示例,演示了如何构建一个可以根据简单移动平均线 (SMA) 交易策略自动交易加密货币的交易机器人。代码示例解释得非常详细,即使您是编程初学者也可以轻松理解!


相关文章