TASC 2022年12月刊的《交易者技巧》包含了一篇由Barbara Star撰写的文章,题为“短期持续与反转信号”。本文介绍了如何通过代码实现文章中提出的概念。

概念
文章首先介绍了两个经典指标:商品通道指数(CCI)和方向性运动指标(DMI),并对它们的传统可视化方式进行了调整,然后将它们结合起来生成潜在的交易信号。作者首先讨论了将DMI指标转换为振荡器格式的优势,即通过将-DI从+DI中减去,并将其显示为直方图。接着,作者展示了如何通过图表上的视觉框架(如选择线条样式和颜色、为价格柱着色等)来帮助交易者解读由这两个指标产生的信号。
计算
文章基于DMI和CCI的读数提供了以下信号,适用于多种类型的交易:
- 短期趋势变化信号:DMI振荡器高于零表示价格处于上升趋势。DMI振荡器低于零线且下降意味着卖压占主导地位,价格呈下降趋势。DMI振荡器的符号通过价格柱的颜色来表示(这与DMI直方图的颜色相关)。具体来说,绿色、红色和灰色价格柱分别对应DMI振荡器高于、低于和等于零。彩色价格柱和DMI振荡器使趋势交易者能够轻松识别短期趋势的变化。
- 趋势持续信号:当DMI高于零线且价格高于其简单移动平均线时,上升趋势中会在振荡器图表边界的底部出现蓝色圆圈。在下降趋势中,当DMI振荡器低于零线且价格低于18周期移动平均线时,会在图表顶部出现深红色圆圈。趋势持续信号对那些希望增加现有头寸的交易者以及等待趋势开始后回调的交易者非常有用。
- 反转信号:CCI在突破+100后回落并跌破+100水平时,发出向下的反转信号,这由图表顶部的洋红色菱形表示。CCI在跌破-100水平后回升并突破-100水平时,发出向上的反转信号,这由图表底部的黄色菱形表示。反转信号为逆势交易者提供了短期反弹机会,也为使用持续和反转信号相互作用的波段交易者提供了更长期的交易机会。
国外指标源代码:
// TASC Issue: December 2022 - Vol. 40, Issue 13
// Article: Short-Term Continuation And Reversal Signals
// Article By: Barbara Star
// Language: TradingView's Pine Script™ v5
// Provided By: PineCoders, for tradingview.com
//@version=5
string title = 'TASC 2022.12 ' +
'Short-Term Continuation And Reversal Signals'
string stitle = 'TASC 2022.12'
indicator(title, stitle, false)
// Constant variables:
string XP0 = shape.arrowdown, string XP5 = shape.flag
string XP1 = shape.arrowup , string XP6 = shape.square
string XP2 = shape.circle , string XP7 = shape.triangledown
string XP3 = shape.cross , string XP8 = shape.triangleup
string XP4 = shape.diamond , string XP9 = shape.xcross
string LTOP= location.top , string LABAR = location.abovebar
string LBOT= location.bottom, string LBBAR = location.belowbar
string SZ = size.tiny , string LDASH = line.style_dashed
PH = plot.style_histogram
color CGRAY = #555522
// Input panel groups, titles and inline references:
string g00 = 'Input Options:'
string g01 = 'Style Options:'
string it0 = 'Continuity Signals:'
string it1 = 'CCI Signals: '
string it2 = 'Oscillator Mode:'
string it3 = 'DMI Colors: '
string it4 = 'DMI Multiplier: '
string MD0 = 'DMI', string MD2 = 'Dual'
string MD1 = 'CCI', string MD3 = 'Overlay'
// Input options:
string mode = input.string(MD2, it2,
[MD0, MD1, MD2, MD3], group=g00)
float DMIMult = input.float(1.0, it4, step=0.25, group=g00)
int diLength = input.int(10, 'DMI Length:', group=g00)
int maLength = input.int(18, 'MA Length:', group=g00)
int cciLength = input.int(13, 'CCI Length:', group=g00)
// Style options:
color colDMIUp = input.color(#22AA22,it3,'',it3,g01)
color colDMIDo = input.color(#AA2222,'','',it3,g01)
string shapeCon = input.string(XP2, it0,
[XP0,XP1,XP2,XP3,XP4,XP5,XP6,XP7,XP8,XP9],'',it0,g01)
color colConUpTrend = input.color(#5188FF,'','',it0,g01)
color colConDoTrend = input.color(#771515,'','',it0,g01)
string shapeCCI = input.string(XP4, it1,
[XP0,XP1,XP2,XP3,XP4,XP5,XP6,XP7,XP8,XP9],'',it1,g01)
color colCCITop = input.color(#BB00FF,'','',it1,g01)
color colCCIBot = input.color(#FFBB00,'','',it1,g01)
// Indicators:
float ma = ta.sma(close, maLength)
[dp, dm, _] = ta.dmi(diLength, 1)
float DMI = dp - dm
float mDMI = DMIMult * DMI
float CCI = ta.cci(close, cciLength)
float uCCI = CCI > +100.0 ? CCI : na
float lCCI = CCI < -100.0 ? CCI : na
// Boolean Signals:
bool pGTma = close > ma, bool pLTma = close < ma
bool cciGTp100 = CCI > 100 , bool cciLTm100 = CCI < -100
bool dmiGT0 = DMI > 0 , bool dmiLT0 = DMI < 0
bool risingL = low > low[1] and low[1] > low[2]
bool falingH = high < high[1] and high[1] < high[2]
bool conUpTrend = pGTma and dmiGT0 and risingL
bool conDoTrend = pLTma and dmiLT0 and falingH
bool cciTop = (not cciGTp100) and cciGTp100[1] and cciGTp100[2]
bool cciBot = (not cciLTm100) and cciLTm100[1] and cciLTm100[2]
bool useDMI = mode == MD0 or mode == MD2
bool useCCI = mode == MD1 or mode == MD2
bool isOverlay = mode == MD3
// Color variation:
color colDMI = switch
dmiGT0 => colDMIUp
dmiLT0 => colDMIDo
=> CGRAY
color colCCI = switch
cciGTp100 => colCCITop
cciLTm100 => colCCIBot
=> CGRAY
// Output:
showDMI = useDMI ? display.all : display.none
showCCI = useCCI ? display.all : display.none
showLVL = isOverlay ? display.none : display.all
showOverlay = isOverlay ? display.all : display.none
// Oscillator signals:{MADE BY 李津}
plotshape(conUpTrend, it0, shapeCon, LBOT, colConUpTrend,
size=SZ, display=showLVL)
plotshape(conDoTrend, it0, shapeCon, LTOP, colConDoTrend,
size=SZ, display=showLVL)
plotshape(cciTop, it1, shapeCCI, LTOP, colCCITop,
size=SZ, display=showLVL)
plotshape(cciBot, it1, shapeCCI, LBOT, colCCIBot,
size=SZ, display=showLVL)
// Overlaid signals:
plotshape(conUpTrend, it0, shapeCon, LBBAR, colConUpTrend,
size=SZ, display=showOverlay)
plotshape(conDoTrend, it0, shapeCon, LABAR, colConDoTrend,
size=SZ, display=showOverlay)
plotshape(cciTop, it1, shapeCCI, LABAR, colCCITop,
size=SZ, display=showOverlay)
plotshape(cciBot, it1, shapeCCI, LBBAR, colCCIBot,
size=SZ, display=showOverlay)
// Plots:
plot(mDMI, 'DMI Histogram', colDMI, 4, PH, display=showDMI)
plot(mDMI, 'DMI', CGRAY, display=showDMI)
plot(uCCI, 'CCI+', colCCI, 2, PH, false,+100, display=showCCI)
plot(lCCI, 'CCI-', colCCI, 2, PH, false,-100, display=showCCI)
plot(CCI, 'CCI', #BBFFFF, 2, display=showCCI)
hline(0, 'LVL0', CGRAY, display=showLVL)
h1 = hline(+100, "100", CGRAY, display = showCCI)
h2 = hline(-100, "100", CGRAY, display = showCCI)
fill(h1, h2, color.new(CGRAY, 90))
barcolor(colDMI, editable=true, title='barcolor')

通达信指标翻译代码
TYPLIJIN:=(HIGH+LOW+CLOSE)/3;
CCILIJIN:(TYPLIJIN-MA(TYPLIJIN,13))*1000/(15*AVEDEV(TYPLIJIN,13));{MADE BY 李津}
N:=10;
MTRLIJI:=EMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(REF(CLOSE,1)-LOW)),N);
HDLJ :=HIGH-REF(HIGH,1);
LDLJ :=REF(LOW,1)-LOW;
DMPLIJIN:=EMA(IF(HDLJ>0 AND HDLJ>LDLJ,HDLJ,0),N);
DMMLIJIN:=EMA(IF(LDLJ>0 AND LDLJ>HDLJ,LDLJ,0),N);
PDILJ:=DMPLIJIN*100/MTRLIJI;
MDILJ:=DMMLIJIN*100/MTRLIJI;
LIJIN:=(PDILJ-MDILJ)*2;
100,POINTDOT;
-100,POINTDOT;
STICKLINE(LIJIN > 0 , LIJIN, 0, 1, 0),COLORRED ;
STICKLINE(LIJIN <= 0, LIJIN, 0, 1, 0), COLOR00B000;
STICKLINE(CCILIJIN > 100 , CCILIJIN, 100, 1, 0), COLOR4080FF;
STICKLINE(CCILIJIN < -100 , CCILIJIN, -100, 1, 0),COLORFF0080 ;

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/322688
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!