加密数字货币市场现状
我们将使用PHP计算8天和21天的指数移动平均值,以确定比特币的看涨/看跌交叉。
什么是移动平均线?
移动平均线使您可以直观地看到一段时间内金融工具的价格走势。 它在技术分析中被广泛使用,由于它是基于历史价格的,因此被称为“落后”指标。
两种常用的平均值是简单移动平均值(SMA)和指数移动平均值(EMA)。 SMA是特定时期内证券的简单平均值。 EMA相似,但将更大的权重归因于最近的价格。
SMA和EMA的示例
理解SMA和EMA的最简单方法是看一个例子。
我们将采用过去15天的虚拟证券的收盘价,如下所示:
第1周 :10、12、15、11、18
第2周 :21、17、15、10、7
第3周 :8、9、15、17、20
在此示例中,前10天的平均收盘价为10天SMA。 第二天的SMA将是前10天,将第一天从列表中删除。 等等。
EMA的参与度略高。 它涉及在使用价格,加权值和前一天的EMA确定EMA之前,计算加权乘数。
幸运的是,您不必担心所涉及的基础算法。 PHP有一个名为Trader的库,用于处理技术分析计算。
8天和21天EMA
8天和21天EMA是在股票市场和加密货币市场中都非常流行的短期指标。
主要信号是:
- 当8天线超过21天时。 这表明交叉看涨,价格可能会上涨(买入信号)。
- 当8天线越过21天时。 这表明交叉看跌,价格可能会下降(卖出信号)。
查看上面的图表,我标记了8天(蓝色)和21天(红色线)的交叉点,从而得出了趋势。
注意事项
我不是财务顾问,因此本文中的任何内容都不应解释为财务建议。 加密市场非常动荡,在进行任何投资之前,您应该进行自己的透彻研究。
还需要注意的是,技术分析并不完美。 由于市场是由心理驱动的,因此某些信号可能会完全消失。 这就是为什么同时使用各种指标(例如RSI和交易量)很重要的原因。 然后,您将寻找合流点,即几个指标都显示出相似的趋势。 即使那样,您也永远无法百分百确定。
技术分析不是灵丹妙药。
准备好您PHP环境
我们将使用PHP Trader扩展来计算EMA。 您可以通过检查phpinfo()
的结果来确认已安装:
历史价格数据可通过出色的CryptoCompare API获得 。 我们将使用他们的历史数据API。 以下请求将向我们显示最近60天BTC的美元价格:
https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60
它将关闭时间视为格林尼治标准时间12:00,并且time
字段返回Unix时间戳(纪元时间)。
确定EMA
添加以下代码以从CryptoCompare API读取响应:
<?php
$response = json_decode(file_get_contents('https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60'));
如果执行print_r($response)
则将返回如下print_r($response)
:
接下来,我们将收盘价添加到数组中:
$prices = [];
foreach ($response->Data as $v) {
$prices[] = $v->close;
}
保存这些价格后,我们现在可以使用trader_ema() PHP函数来确定8天和21天EMA:
$ema8 = trader_ema($prices, 8);
$ema21 = trader_ema($prices, 21);
请注意:默认情况下,Trader扩展程序使用3位小数的精度。 要使用satoshi或显示为十进制小数的硬币(例如XRP和XLM),可以在运行时设置精度:
ini_set('trader.real_precision', '8');
或在php.ini文件中:
trader.real_precision=8
现在我们有了一系列的EMA,我们将获取每个EMA的最后两个以设置前一天的EMA和当前EMA:
$current_8 = array_pop($ema8);
$current_21 = array_pop($ema21);
$previous_8 = array_pop($ema8);
$previous_21 = array_pop($ema21);
现在,我们可以简单地检查一下是否发生了交叉,并做出相应的React:
if ($current_8 > $current_21 && $previous_8 < $previous_21) {
echo 'Buy';
} elseif ($current_8 < $current_21 && $previous_8 > $previous_21) {
echo 'Sell';
} else {
echo 'Do Nothing';
}
这是完整的最终源代码,其中包含一些输出:
<?php
ini_set(‘trader.real_precision’, ‘8’);
$response = json_decode(file_get_contents(‘ https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60' ));
$prices = [];
foreach ($response->Data as $k => $v) {
$prices[] = $v->close;
}
$ema8 = trader_ema($prices, 8);
$ema21 = trader_ema($prices, 21);
$current_8 = array_pop($ema8);
$current_21 = array_pop($ema21);
$previous_8 = array_pop($ema8);
$previous_21 = array_pop($ema21);
echo ‘Current 8-day: ‘ . $current_8 . “\n”;
echo ‘Current 21-day: ‘ . $current_21 . “\n”;
echo ‘Previous 8-day: ‘ . $previous_8 . “\n”;
echo ‘Previous 21-day: ‘ . $previous_21 . “\n”;
if ($current_8 > $current_21 && $previous_8 < $previous_21) {
echo ‘Buy’;
} elseif ($current_8 < $current_21 && $previous_8 > $previous_21) {
echo ‘Sell’;
} else {
echo ‘Do Nothing’;
}
现实世界中的用途
一个简单的实际应用程序可以将其合并到交易机器人中。 您可以将其设置为每天使用服务器上的cron运行。 在最新收盘价之后运行它,以检测是否存在交叉。
您可以与Binance之类的交易所集成,并且如果您的机器人发现了某些趋势,可以通过其API执行交易。 如前所述,请尝试至少从三个不同的指标中找到确认,以最大程度地降低风险。
在接下来的文章中,我们将研究更多指标以及如何将其用于确定加密货币市场趋势。
升级您的Web开发技能!
注册我的时事通讯 ,我将分享有见地的Web开发和与区块链相关的文章,以增强您的技能。
加密数字货币市场现状