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