我使用trader_bbands()函数
$bBand = trader_bbands( $NumberArray,
25,
TRADER_REAL_MIN,
TRADER_REAL_MIN,
TRADER_MA_TYPE_EMA
);
它返回三个数组.
$bBand[0]; // upper-edge of the Bollinger Band ( an upline )
$bBand[1]; // central line the Bollinger Bands surround ( a moving average )
$bBand[2]; // lower-edge of the Bollinger Band ( a downline )
我原来的$NumberArray值都在2000.0左右
$bBand [1]是简单的移动平均线,所以它返回2000左右的数字.
但是$bBand [0]和$bBand [2]返回值
如下所示(示例引自var_dump())
double(3.1325286910105E+38)
[105] =>
double(3.1907365920756E+38)
[106] =>
double(3.1907365920756E+38)
[107] =>
double(3.1740850650235E+38)
[108] =>
double(3.1498571396175E+38)
Q1:这个数组是什么意思?
我对布林带的期望是大约2000α,或2000 – α.
解决方法:
A1:1.回顾trader_bbands()上的php-library文档,作为第一步.将MCVE与DataSET一起发布,以允许针对公共DataSET3进行验证.比较参考实现以证明{PASS | FAIL} -status of Trader
php-library implementation.
Ad Step 1.:
array trader_bbands ( array $real [, integer $timePeriod [, float $nbDevUp [, float $nbDevDn [, integer $mAType ]]]] )
我们同意设置$nbDevUp = 1.0,而不是技术上最小的浮点数TRADER_REAL_MINLet同意设置$nbDevDn = 1.0.
我们同意设置$timePeriod = 7
我们同意设置$real
$real = array(
0 => 2000.0,
1 => 2001.0,
2 => 2002.0,
3 => 2003.0,
4 => 2004.0,
5 => 2005.0,
6 => 2006.0,
);
期望:
.std() – sigma相关的值应该进入公平的方式,独立于不知道关于Trader
php-library模型trader_bbands()演算的所有实现细节,特别是在TRADER_MA_TYPE_EMA模式中,缺少模型中使用的指数加权细节.
虽然
A)应该确定$bBand [0] [i] – $bBand [1] [i] == $bBand [1] [i] – $bBand [2] [i]之间的所有差异为== 2.0
B)应该在.ewma()中使用指数的值的值 – 在Trader
php-library中记录的方法.
嗯,当然,如果没有这样的价值,人们可能会使用强力反向搜索所使用的匹配值,但这可能是一种相当低效的方法来证明$bBand [1]值是在Trader
php-library中以兼容的方式计算的.使用ewmaEXP = 2.0 /(timePeriod 1)的常见Quant-practice.