24 / 08 / 28

加密货币量化分析学习记录一

如果在一个市场无法获利,何不尝试换个市场?加密货币属于虚拟经济,具有市场多样性,比如币种多,获利机会多。加密货币既是投资,也是生意。生意就是一买一卖,只要能在市场中赚到钱,就能通过交易谋生。

加密货币一些基础知识

选择交易平台比如币安www.binance.com

需要了解行情当前市场存在交易的币种信息,投资者需要了解选择的币种信息等等。

比如我想对AAVE/USDT币种进行量化研究看看是否可以在这个市场挣到钱。

通过chatgpt4.0了解AAVE/USDT

了解完之后就是研究AAVE/USDT的K线历史行情数据

K线(又称蜡烛图)历史数据是金融市场中广泛使用的一种数据格式,用于表示资产在特定时间段内的价格走势。K线数据通常包括开盘价、收盘价、最高价、最低价和成交量等信息,可以用于技术分析和交易策略开发。

加密货币量化分析是一种利用数学模型、算法和计算机程序,通过分析历史价格、成交量、链上数据等,来制定自动化交易策略,识别市场机会,并优化投资决策。

个人理解的一些投资策略

1.单项操作低价买入高价卖出

2.我只选择现货交易,因为没有杠杆所以不会归零,只有币的市场价值没有了才会归零,只要能涨就不会。

3.日内交易(Day Trading)是一种短期交易策略,交易者在同一交易日内买入和卖出金融资产,通常不持仓过夜。日内交易者通过捕捉市场的短期价格波动获利,交易时间范围通常从几秒钟到几小时不等。日内交易广泛 应用于股票、期货、外汇和加密货币市场,要求交易者具备快速决策能力、良好的市场分析技巧以及严格的风险管理策略。的技术。它旨在通过数据驱动的方法,在高波动性市场中实现稳定的收益。制定自动化交易策略,识别市场机会,并优化投资决策的技术。它旨在通过数据驱动的方法,在高波动性市场中实现稳定的收益。

回测AAVE/USDT k线历史行情数据

通过币安API获取AAVE/USDT k线历史行情数据,我下载AAVE/USDT 2024.8.19号的k线数据细粒度是精确到3分钟。

下载完数据AAVEUSDT-3m-2024-08-19.csv需要了解里面的数据格式。

Open_time开盘时间 open开盘价 high最高价 low最低价 close收盘价volume成交量 close_timeK线图收盘时间(unix格式) quote_volume报价币成交量 count成单数 taker_buy_volume在此期间吃单方买入的基础币数量 taker_buy_quote_volume在此期间吃单方买入的报价币数量ignore忽略

通过python解析数据进行买入卖出交易信号策略测试,计算移动平均线SMA参考的数据是收盘价格数据,1个时间段 = 15分钟。

1. 计算移动平均线 (SMA)

在你的代码中,使用了两个不同的移动平均线 (SMA):

SMA_short: 这是一个短期移动平均线,使用了过去3个时间段的收盘价来计算。

SMA_long: 这是一个长期移动平均线,使用了过去15个时间段的收盘价来计算。

data['SMA_short'] = data['Close'].rolling(window=3).mean()

data['SMA_long'] = data['Close'].rolling(window=15).mean()

2. 生成买入和卖出信号

买入和卖出信号的生成基于两个移动平均线之间的关系:

买入信号 (Signal = 1): 当短期移动平均线(SMA_short)穿过并高于长期移动平均线(SMA_long)时生成。

卖出信号 (Signal = 0): 当短期移动平均线低于长期移动平均线时生成。

data['Signal'] = 0

data.iloc[3:, data.columns.get_loc('Signal')] = np.where( data['SMA_short'].iloc[3:] > data['SMA_long'].iloc[3:], 1, 0 )

3. 生成交易信号

Position 列通过计算 Signal 的差值来生成交易信号:

Position = 1: 表示买入操作。它表示在当前时间点有一个买入信号(即短期均线刚刚突破长期均线)。

Position = -1: 表示卖出操作。它表示在当前时间点有一个卖出信号(即短期均线刚刚跌破长期均线)。

Position = 0: 表示保持现有持仓,不进行买入或卖出。

data['Position'] = data['Signal'].diff()

4. 回测过程

在回测过程中,根据交易信号的变化来决定何时买入或卖出:

买入操作: 如果 Position = 1 并且有可用的现金,则全仓买入。

卖出操作: 如果 Position = -1 并且当前持有资产,则全仓卖出。

for i in range(1, len(data)):

if data.iloc[i]['Position'] == 1: # 买入信号

if cash > 0:

holding = cash / data.iloc[i]['Close']

cash = 0

elif data.iloc[i]['Position'] == -1: # 卖出信号

if holding > 0:

cash = holding * data.iloc[i]['Close']

holding = 0

5. 策略分析

这个策略的核心思想是“均线交叉策略”。它试图通过判断短期价格趋势相对于长期趋势的变化,来捕捉市场的趋势反转点。

优点: 这种策略相对简单,适合捕捉大趋势。它能帮助避免在市场横盘整理时频繁交易。

缺点: 在震荡市中可能会出现多次虚假信号,导致频繁的交易和潜在的亏损。策略中没有考虑交易成本、滑点和其他市场影响因素。

分析跑的结果数据

开始跑一下历史数据可以看到,initial cash是初始现金,Final Portfolio value是初始现金加上的盈利的钱,return 回报率。

Initial Cash: 10000 Final Portfolio Value: 10524.922975089346 Return: 5.25%

可以看到通过策略捕捉的价格上涨信号进行买入,也有一些虚假的信号进行买入了,这只是通过历史行情数据复盘,实盘复盘需要考虑的比较多,具体还要参考每天市场行情策略不一定适用。