CCXT技术分析入门
本文为利用CCXT进行加密市场技术分析的入门介绍。
一键发币: SUI | SOL | BNB | ETH | BASE | 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翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。