加密数字货币市场现状_使用PHP检测加密货币市场趋势:指数移动平均线

加密数字货币市场现状

我们将使用PHP计算8天和21天的指数移动平均值,以确定比特币的看涨/看跌交叉。

Nokwan007在Shutterstock.com上的照片

什么是移动平均线?

移动平均线使您可以直观地看到一段时间内金融工具的价格走势。 它在技术分析中被广泛使用,由于它是基于历史价格的,因此被称为“落后”指标。

两种常用的平均值是简单移动平均值(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天,将第一天从列表中删除。 等等。

表格说明SMA和EMA值

EMA的参与度略高。 它涉及在使用价格,加权值和前一天的EMA确定EMA之前,计算加权乘数。

幸运的是,您不必担心所涉及的基础算法。 PHP有一个名为Trader的库,用于处理技术分析计算。

8天和21天EMA

TradingView上BTCUSD图表上的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

从CryptoCompare提取JSON

它将关闭时间视为格林尼治标准时间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)

将JSON响应解码为PHP对象

接下来,我们将收盘价添加到数组中:

$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开发和与区块链相关的文章,以增强您的技能。

翻译自: https://hackernoon.com/detect-cryptocurrency-market-trends-using-php-exponential-moving-averages-d5134d56f484

加密数字货币市场现状

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值