pine-script - 如何用 syminfo.tickerid 实现 JMA,但是没有 JMA 功能
问题描述
我有这个sma函数的代码,但是我想实现JMA但是没有JMA的函数。
study(title="Moving AVG Levels", overlay=true)
sma1 = input(title="sma 7-W", type=input.bool, defval=true)
out_sma1 = security(syminfo.tickerid, "60", sma(close, 1200))
sma_plot_1 = plot(out_sma1, color=color.new(color.fuchsia, 70), linewidth=4, title=" 7-W ")
这是我用于 JMA 指标的代码
study(title="SMA veliki frejmovi", shorttitle="JMA LOLA", overlay=true)
length1 = input(title="Length JMA 1", type=input.integer, defval=21)
phase1 = input(title="Phase JMA 1", type=input.integer, defval=50)
power1 = input(title="Power JMA 1", type=input.integer, defval=1)
src1 = input(title="Source JMA 1", type=input.source, defval=ohlc4)
highlightMovements1 = input(title="Highlight Movements JMA 1 ?", type=input.bool, defval=true)
phaseRatio1 = phase1 < -100 ? 0.5 : phase1 > 100 ? 2.5 : phase1 / 100 + 1.5
beta1 = 0.45 * (length1 - 1) / (0.45 * (length1 - 1) + 2)
alpha1 = pow(beta1, power1)
jma1 = 0.0
e01 = 0.0
e01 := (1 - alpha1) * src1 + alpha1 * nz(e01[1])
e11 = 0.0
e11 := (src1 - e01) * (1 - beta1) + beta1 * nz(e11[1])
e21 = 0.0
e21 := (e01 + phaseRatio1 * e11 - nz(jma1[1])) * pow(1 - alpha1, 2) +
pow(alpha1, 2) * nz(e21[1])
jma1 := e21 + nz(jma1[1])
jmaColor1 = highlightMovements1 ? jma1 > jma1[1] ? color.green : color.red : #6d1e7f
jmaStr1 = highlightMovements1 ? jma1 > jma1[1] ? 1 : -1 : 0
plot(jma1, title="JMA 1", linewidth=2, color=jmaColor1, transp=0)
谢谢
解决方案
您将 JMA 计算包装在自定义函数中,然后您可以将其传递给安全调用。
length1 = input(title="Length JMA 1", type=input.integer, defval=21)
phase1 = input(title="Phase JMA 1", type=input.integer, defval=50)
power1 = input(title="Power JMA 1", type=input.integer, defval=1)
src1 = input(title="Source JMA 1", type=input.source, defval=ohlc4)
res = input("", type = input.resolution)
f_jma(_src, _length, _phase, _power) =>
_phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5
_beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2)
_alpha = pow(_beta, _power)
_jma = 0.0
_e01 = 0.0
_e01 := (1 - _alpha) * _src + _alpha * nz(_e01[1])
_e11 = 0.0
_e11 := (_src - _e01) * (1 - _beta) + _beta * nz(_e11[1])
_e21 = 0.0
_e21 := (_e01 + _phaseRatio * _e11 - nz(_jma[1])) * pow(1 - _alpha, 2) + pow(_alpha, 2) * nz(_e21[1])
_jma := _e21 + nz(_jma[1])
mtf_jma = security(syminfo.tickerid, res, f_jma(src1, length1, phase1, power1))
plot(mtf_jma)
推荐阅读
- ios - 自定义 UITableView 单元格图像转换未应用于可重用单元格
- dynamics-crm - 如何将数据从 CRM 高级查找屏幕传递到自定义工作流程
- firebase - 使用 firebase 推送通知
- javascript - How to push a child into Firebase RealTime Database with a specified key?
- java - 输入不是 X.509 证书
- python - 为 CUDA 9.0 安装 PyTorch 时遇到问题
- java - 未使用伽罗瓦/计数器模式 (GCM/NoPadding)
- c# - C# - Oxyplot:如何将文本显示为跟踪器值
- php - 我需要使用 php 执行 curl 请求
- php - Drupal 8 未与 MAMP Pro 和 Windows 10 一起安装