主页 > imtoken下载链接 > 数字货币量化交易的黄金指数算法【Python】
数字货币量化交易的黄金指数算法【Python】
在本教程中,我们将学习如何使用交叉指标来预测加密货币市场的买入/卖出信号,教程最后提供了完整的 Python 代码,在市场的历史数据上使用该算法可以实现三倍于比特币的收益回报。
用您熟悉的语言学习以太坊 DApp 开发:
1. 基础知识:黄金十字与死亡十字
如果你有金融背景,你就知道黄金交叉和死亡交叉这两个指标是从移动平均算法中推导出来的,也被称为交叉指标。 这两个交叉指标都使用以下公式计算特定时间段内市场收盘价的平均值:
该概念结合了两个滑动平均值(短期和长期)以获得加密货币趋势。 当短期移动平均线穿越或回撤长期移动平均线时,就会出现买入或卖出信号。
从数学上讲,如果您选择 5 周期短期移动平均线和 20 周期长期移动平均线,我们将通过以下方式获得买入信号:
MA(5) 计算如下:
MA(20) 计算如下:
CPrice 对应收盘价。 例如,比特币当前价格为 49,670 美元,t 代表时间段定义(本文末尾的视频对此有更多介绍)。 这些交叉指标是帮助检测正在研究的加密货币的全球趋势的等式的一部分。 这些 CI(交叉指标)被全球多个交易者和基金广泛使用,以定义支撑位、阻力位、止损位和目标位,并了解潜在趋势。
现在我们已经介绍了一些背景知识btc量化交易,让我们开始测试,看看它们如何帮助预测加密货币市场。
2.使用的软件栈
在继续下面的教程之前,请确保您已经安装了 Python3 和以下包:
上面的包可以使用pip安装,例如:
pip install yfinance
pip install plotly
复制
3. 数据管道与建模
现在我们可以定义数据处理流程了,主要分为3个不同的步骤:
使用雅虎财经API查询实时加密货币数据定义一个时间段,为我们要计算的数据创建新的列,然后每秒更新一次值。 实时绘制图表并检查我们的信号是否准确。
在本文中,我不会详细介绍代码和 API,您可以在下面的文章中了解如何使用 Python 获取实时加密货币市场数据。 现在我们可以开始编码了!
4.导入软件包
第一步将包括导入必要的包。 使用以下代码行导入以前安装的包:
# Raw Package
import numpy as np
import pandas as pd
#Data Source
import yfinance as yf
#Data viz
import plotly.graph_objs as go
复制
现在库已经导入,是时候导入我们的加密货币数据了。
5.获取实时行情数据
现在上传了所需的不同包。 我们以BTC-USD交易对为例,通过雅虎财经API设置导入。
您可以扩展所需的法定货币和加密货币选项。 例如,如果你来自印度或加拿大,你可以使用 INR 或 CAD,还可以设置你想要 Ripple 还是 Ethereum 数据。
让我们回到 API 结构。
调用雅虎财经API时,需要依次传递三个参数:
在我们的示例中,交易对 ID(参数 1)将是 BTC-USD 对。 此外,在此示例中btc量化交易,我们将选择最近 7 天作为时间段(参数 2)。 并设置 90 分钟的间隔(参数 3)。
要调用数据,必须使用以下结构:
在继续之前,我将介绍有关第三个参数(间隔)的一些细节。
6.可用时间间隔
在这里,我想快速概述一下可以使用 yahoo finance API 设置的不同时间间隔。
各种可能的间隔详述如下:
现在我们已经定义了三个参数,让我们执行查询并检查输出:
data = yf.download(tickers='BTC-USD',period = '8d', interval = '90m')
复制
这是输出:
现在我们已经下载并存储了数据,我们可以继续定义华东平均线以及买入和卖出信号。
七、算法实现
现在,我们的实时数据已经下载并存储在一个名为 data 的变量中。 下一步包括计算我们的移动平均线和设置买卖信号。
我们需要创建以下计算字段:
为此,我们将使用 Python 中包含的滚动函数来获取最近 n 个周期的平均值。 关于 MA(5),我们将在最后 5 个 90 分钟时段应用我们的策略。 这意味着我们将计算过去 7 小时 30 分钟(5 乘以 90 分钟)的平均收盘价。
与 MA(20) 类似,平均值是针对 20 个而不是 5 个 90 分钟周期计算的。 Python代码如下:
#Moving average using Python Rolling function
data['MA5'] = data['Close'].rolling(5).mean()
data['MA20'] = data['Close'].rolling(20).mean()
复制
上述代码执行后,将为数据框创建 2 个新列,如下所示:
好的,现在我们可以测试策略了。
8.实时绘图
我们计划的最后一步是绘制数据并检查我们是否可以预测市场走势。 在下图中,我将绿色标记为良好预测,将黑色标记为错误预测:
9.量化交易Python代码
完整的Python代码如下:
# Raw Package
import numpy as np
import pandas as pd
#Data Source
import yfinance as yf
#Data viz
import plotly.graph_objs as go
#Importing market data
data = yf.download(tickers='BTC-USD',period = '8d', interval = '90m')
#Adding Moving average calculated field
data['MA5'] = data['Close'].rolling(5).mean()
data['MA20'] = data['Close'].rolling(20).mean()
#declare figure
fig = go.Figure()
#Candlestick
fig.add_trace(go.Candlestick(x=data.index,
open=data['Open'],
high=data['High'],
low=data['Low'],
close=data['Close'], name = 'market data'))
#Add Moving average on the graph
fig.add_trace(go.Scatter(x=data.index, y= data['MA20'],line=dict(color='blue', width=1.5), name = 'Long Term MA'))
fig.add_trace(go.Scatter(x=data.index, y= data['MA5'],line=dict(color='orange', width=1.5), name = 'Short Term MA'))
#Updating X axis and graph
# X-Axes
fig.update_xaxes(
rangeslider_visible=True,
rangeselector=dict(
buttons=list([
dict(count=3, label="3d", step="days", stepmode="backward"),
dict(count=5, label="5d", step="days", stepmode="backward"),
dict(count=7, label="WTD", step="days", stepmode="todate"),
dict(step="all")
])
)
)
#Show
fig.show()
复制
10.教程总结
所有交易都不是完美的,有时我们往往会滞后进入或退出市场,但在比特币稳定的时期,黄金交叉策略一直是增加我们利润的有用策略。 利用已有的历史数据简单计算后,我们的算法一周内可以获得7.1%的回报,而同期比特币交易的回报率稳定在1.7%左右。
原文链接:基于交叉指标的加密货币量化交易——汇智网