当前位置: 首页 > 科技观察

如何使用Python提高比特币收益率

时间:2023-03-15 22:49:27 科技观察

本文转载自微信公众号《区块链研究实验室》,作者连三峰。转载本文请联系区块链研究实验室公众号。交叉指标在金融领域,黄金交叉和死亡交叉指标是衍生的移动平均线,也称为交叉指标。与移动平均线一样,这两个交叉指标中的任何一个都将通过使用以下公式对特定时间段内的市场收盘价进行平均来计算。在上面的公式中,n对应于使用的周期数。这个概念包括结合两个移动平均线(短期和长期)以获得加密货币趋势。当短期移动平均线穿越或回撤长期移动平均线时,就会出现买入或卖出信号。从数学上讲,如果您选择5个周期的短期移动平均线和20个周期的长期移动平均线,我们将通过以下方式获得买入信号:MA(5)和MA(20)等于:CPrice对应收盘值,这些交叉指标是帮助检测正在研究的加密货币的全球趋势的等式的一部分。这些CI(交叉指标)在全球范围内被多个交易者和基金广泛使用,以定义支撑、阻力水平、止损和目标,并了解潜在趋势。现在我们已经介绍了一些背景知识,让我们开始测试,看看它们如何帮助预测市场。如果你想以同样的速度编写代码,你需要预先安装一些配置和包。先决条件在开始之前,您需要在计算机上安装Python3版本和以下软件包:PandasNumPyYfinancePlotly(您可以选择安装或不安装)如果您尚未安装任何这些软件包,则可以使用pip命令,如下。pipinstallfinancepipinstallplotly一旦我们确保安装了以下包,我们就可以从我们的数据管道和数据模型开始。数据管道和建模既然我们已经验证了上面的包已经安装在我们的机器上,我们就可以定义数据处理了。数据模型将分为3个不同的步骤:我们将使用YahooFinanceAPI查询实时加密货币数据。定义一个时间段,为我们的计算字段创建新的列,然后每秒更新这些值。实时绘制此图并检查我们的信号是否准确。现在我们可以开始编码了!(如果您已经有使用Python的经验,可以跳到第二步。)第1步:导入所需的包您将使用以下代码行开始导入以前安装的包:#RawPackageimportnumpyasnpimportpandasaspd#DataSourceimportyfinanceeasyf#Datavizimportplotly.graph_objsasgo上面的行是查询numpy、pandas、yfinance和要导入的图第2步:获取实时市场数据现在,上传所需的不同包。我们将以BTC-USD货币对为例,通过YahooFinanceAPI设置导入,可以扩展加密货币选择列表以及货币。例如,如果您来自印度或加拿大,则可以使用INR或CAD;如果您来自印度或加拿大,则可以使用INR或CAD。两者都可以正常工作,无论您需要Ripple还是Ethereum数据。第3步:回到我们的API结构YahooFinanceAPI将按此顺序要求三个强制参数:股票代码(1)开始日期+结束日期或期间(2)间隔(3)在我们的例子中,股票代码(参数1)将是BTC-USD对。此外,在此示例中,我们将选择最近7天作为时间段(参数2)。并设置90分钟的间隔(参数3)。要调用数据,您必须使用以下结构:上面描述了获取我们感兴趣的数据的结构,以便快速查找可能的间隔我想快速概述您可以使用雅虎金融设置的不同间隔应用程序接口。可能需要的间距可能性详述如下:可以选择的不同间距在上面列出。现在我们已经定义了三个参数,让我们执行查询并检查输出:data=yf.download(tickers='BTC-USD',period='8d',interval='90m')上面的行将上传到雅虎金融API请求BTC-USD。这是您必须获得的输出:每90分钟的市场输出现在我们已经下载并存储了数据,我们可以继续定义移动平均线、买入和卖出信号。部署我们的算法现在我们的实时数据已经下载并存储在一个名为“数据”的变量中。下一步涉及计算我们的移动平均线并设置我们的买卖信号。我们需要创建以下计算字段:horse(5)horse(20)为此,我们将使用Python中包含的滚动函数来获取最近n个周期的平均值。关于MA(5),我们将在最后90分钟的最后5分钟应用我们的策略。这意味着我们将计算过去7小时30分钟(5乘以90分钟)的平均收盘价。对于MA(20),我们将使用滚动函数,但不是计算最近5个90分钟周期,而是计算最近2??0个周期的平均值。那么让我们在Python上编写代码:#MovingaverageusingPythonRollingfunctiondata['MA5']=data['Close'].rolling(5).mean()data['MA20']=data['Close'].rolling(20).mean()上面的代码行使用Python滚动函数来获取移动平均线上面的代码一旦执行,将为您的数据框创建2个新列,如下所示:现在您已经定义了波段,您必须创建2个额外的列。我们终于可以部署我们的策略并对其进行测试。在下图中,我将绿色标记为良好预测,将黑色标记为错误预测。带有购买信号的预付款现在您可以在家开发它了:#RawPackageimportnumpyasnpimportpandaspd#DataSourceimportyfinanceasyf#Datavizimportplotly.graph_objsasgo#Importingmarketdatadata=yf.download(tickers='BTC-USD'0d',period=m',period=m)#AddingMovinaveragecalculatedfielddata['MA5']=data['Close'].rolling(5).mean()data['MA20']=data['Close'].rolling(20).mean()#declarefurefig=go。Figure()#Candlestickfig.add_trace(go.Candlestick(x=data.index,open=data['Open'],high=data['High'],low=data['Low'],close=data['Close'],name='marketdata'))#AddMovingaverageonthegraphfig.add_trace(go.Scatter(x=data.index,y=data['MA20'],line=dict(color='blue',width=1.5),name='LongTermMA'))fig.add_trace(go.Scatter(x=data.index,y=data['MA5'],line=dict(color='orange',width=1.5),name='ShortTermMA'))#UpdatingXaxisandgraph#X-Axesfig.update_xaxes(rangeslider_visible=True,rangeselector=dict(buttons=list([dict(count=3,label="3d",step="days",stepmode="backward"),dict(计数=5,标签="5d",step="days",stepmode="backward"),dict(count=7,label="WTD",step="days",stepmode="todate"),dict(step="all")])))#Showfig.show()结论所以交易并不是完美的,有时候我们往往会滞后进场或出场,但是在比特币的稳定时期,探索实时的概念是非常有趣的阻力位和支撑位,黄金交叉策略已经成为增加我们利润的有用策略。经过短暂的计算和使用我个人的经纪费,我们将在一周内获得7,1%的回报,而比特币则稳定在附近同期增长1.7%。