CCXT技术分析入门

本文为利用CCXT进行加密市场技术分析的入门介绍。

CCXT技术分析入门
一键发币: SOL | BNB | ETH | BASE | Blast | ARB | OP | POLYGON | AVAX | FTM | OK

让我们将代码分解为指定的部分:

1、导入库

import pandas as pd
import ccxt
import talib
import pandas_ta as ta

此部分导入了数据处理和技术分析所需的基本库:

  • pandas:用于处理表格格式的数据。
  • ccxt:提供一种统一的方式来访问来自各个交易所的加密货币交易数据。 talib:技术分析指标库。
  • pandas_ta:Pandas 库的扩展,包含附加的技术分析指标。

2、获取数据的函数

def fetch_data(symbol, timeframe='1m', limit=599):
    exchange = ccxt.huobi()
    ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
    df = pd.DataFrame(ohlcv, columns=['timestamp', 'Open', 'High', 'Low', 'Close', 'Volume'])
    df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
    df.set_index('timestamp', inplace=True)
    return df

此函数从 Huobi 交易所获取指定交易对和时间范围的历史 OHLCV 数据并将其作为 Pandas DataFrame 返回。

可用于分析特定加密货币对的历史价格数据,或者使用历史数据回测交易策略。

3、生成信号函数

def generate_signals(data):
    # Calculate MACD
    data['macd_red'], data['macd_signal_blue'], candle_macd = talib.MACD(data['Close'], fastperiod=34, slowperiod=144, signalperiod=9)

    # Calculate RSI
    data['rsi'] = talib.RSI(data['Close'])

    # Calculate Bollinger Bands
    data['upper_band'], data['middle_band'], data['lower_band'] = talib.BBANDS(data['Close'])

    # Calculate Donchian Channel
    data['upper_dc'], data['lower_dc'] = talib.MAX(data['High'], timeperiod=20), talib.MIN(data['Low'], timeperiod=20)

    return data

此函数计算各种技术指标,如 MACD、RSI、布林线(Bollinger Bands)和唐奇安通道(Donchian Channel),并将它们作为列添加到输入 DataFrame。

用例:

  • 使用 MACD 识别市场趋势和动量。
  • 使用 RSI 评估超买或超卖情况。
  • 使用布林线分析波动性。
  • 使用唐奇安通道识别突破或崩溃水平。

4、信号分析函数

def analyze_signals(data):
    signals = pd.DataFrame(index=data.index)
    
    # MACD signals
    signals['macd_buy'] = (data['macd_red'] > data['macd_signal_blue'])
    signals['macd_sell'] = (data['macd_red'] < data['macd_signal_blue']) 
    
    # RSI signals
    signals['rsi_overbought'] = (data['rsi'] > 70)
    signals['rsi_oversold'] = (data['rsi'] < 30)
    signals['rsi_middle'] = (data['rsi'] > 30) & (data['rsi'] < 70)
    
    # Bollinger Bands signals
    signals['bollinger_buy'] = data['Close'] < data['lower_band']
    signals['bollinger_sell'] = data['Close'] > data['upper_band']
    signals["bollinger_middle_line_buy"] = (data['middle_band'] < data['Close'])  
    signals["bollinger_middle_line_sell"] = (data['middle_band'] > data['Close'])
    
    # Donchian Channel signals
    signals['donchian_buy'] = data['Close'] > data['upper_dc']
    signals['donchian_sell'] = data['Close'] < data['lower_dc']
    signals['donchian_buy_middle'] = data['Close'] > data['upper_dc']
    signals['donchian_sell_middle'] = data['Close'] < data['lower_dc']
    
    # Print only the last row of the signals DataFrame
    print(signals.iloc[-1])
    
    return signals

该函数分析第 3 部分计算出的信号,并根据每个指标的具体条件生成买入/卖出信号。

用例:

  • 为算法交易策略生成交易信号。
  • 根据技术分析提供对潜在进入点和退出点的洞察。

5、示例用法

# Example Usage
symbol = 'BTC/USDT'
data = fetch_data(symbol)
data = generate_signals(data)
display(data)
signals = analyze_signals(data)

本部分演示如何使用这些函数。它获取“BTC/USDT”交易对的历史数据,根据技术指标生成信号,显示修改后的 DataFrame,并分析信号以生成买入/卖出信号。

用例:

  • 实施和测试基本交易策略。
  • 了解不同指标如何与历史价格数据保持一致。

每个部分都标有注释,表明其在代码中的用途。你可以在 Python 环境中按顺序运行这些部分。


原文链接:Building a Cryptocurrency Trading Strategy: Technical Analysis with Python and CCXT

DefiPlot翻译整理,转载请标明出处

通过 NowPayments 打赏