Donchian Trend

LonesomeTheBlue · study · 64 行 · 点赞 3,098 · TradingView 原页

本页源码来自 TradingView 公开发布的开源脚本,版权归原作者所有, 请遵循其原始许可(Pine 脚本常见 CC BY-NC-SA / MPL-2.0 / MIT)。 本项目仅用于研究检索与许可范围内的移植。

Pine Script

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LonesomeTheBlue
 
//@version=4
study("Donchian Trend", overlay = true)
dlen = input(defval = 20, title = "Donchian Channel Period", minval = 10)
 
dchannel(len)=>
    float hh = highest(len)
    float ll = lowest(len)
    
    int trend = 0
    trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1])
    
    [hh, ll, trend]
 
dchanneltr(len)=>
    float hh = highest(len)
    float ll = lowest(len)
    int trend = 0
    trend := close >= hh[1] ? 1 : close <= ll[1] ? -1 : nz(trend[1])
    
[upper, lower, maintrend] = dchannel(dlen)
 
tt = maintrend == 1 ? 10 : -10
[u1, l1, t1] = dchannel(dlen -1 )
 
tt := tt - (sign(dchanneltr(dlen - 1)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 2)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 3)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 4)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 5)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 6)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 7)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 8)) != sign(maintrend) ? int(sign(maintrend)) : 0)
tt := tt - (sign(dchanneltr(dlen - 9)) != sign(maintrend) ? int(sign(maintrend)) : 0)
 
getcolor(trend)=>
    _ret =   trend >= 10.0 ? #00FF00ff :
             trend >=  9.0 ? #00FF00e5 :
             trend >=  8.0 ? #00FF00cc :
             trend >=  7.0 ? #00FF00b2 :
             trend >=  6.0 ? #00FF0099 :
             trend >=  5.0 ? #00FF007f :
             trend >=  4.0 ? #00FF0066 :
             trend >=  3.0 ? #00FF004c :
             trend >=  2.0 ? #00FF0033 :
             trend >=  1.0 ? #00FF0019 :  
             trend ==  0.0 ? color.new(color.white, 100) :
             trend >= -1.0 ? #FF000019 :
             trend >= -2.0 ? #FF000033 :
             trend >= -3.0 ? #FF00004c :
             trend >= -4.0 ? #FF000066 :
             trend >= -5.0 ? #FF00007f :
             trend >= -6.0 ? #FF000099 :
             trend >= -7.0 ? #FF0000b2 :
             trend >= -8.0 ? #FF0000cc :
             trend >= -9.0 ? #FF0000e5 : #FF0000ff
 
tline = maintrend == 1  ? lower : upper
tcol = maintrend == 1 and nz(maintrend[1]) == 1 or maintrend == -1 and nz(maintrend[1]) == -1 ? getcolor(tt) : na
plot(tline, color = tcol, linewidth = 4)
plotchar(maintrend == 1 and tt > 2 and (tt < 10 or low == lower) ? lower : na, char = "↑", color = color.green, location = location.absolute, size = size.small)
plotchar(maintrend == -1 and tt < -2 and (tt > -10 or high == upper) ? upper : na, char = "↓", color = color.olive, location = location.absolute, size = size.small)

← 返回列表