OPEN-SOURCE SCRIPT
davidqqq

//version=5
indicator('CD', overlay=false, max_bars_back=500)
// 输入参数
S = input(12, title='Short EMA Period')
P = input(26, title='Long EMA Period')
M = input(9, title='Signal Line Period')
// 计算DIFF, DEA和MACD值
fastEMA = ta.ema(close, S)
slowEMA = ta.ema(close, P)
DIFF = fastEMA - slowEMA
DEA = ta.ema(DIFF, M)
MACD = (DIFF - DEA) * 2
// 计算N1和MM1
N1 = ta.barssince(ta.crossunder(MACD, 0))
MM1 = ta.barssince(ta.crossover(MACD, 0))
// 确保长度参数大于0
N1_safe = na(N1) ? 1 : math.max(N1 + 1, 1)
MM1_safe = na(MM1) ? 1 : math.max(MM1 + 1, 1)
// 计算CC和DIFL系列值
CC1 = ta.lowest(close, N1_safe)
CC2 = nz(CC1[MM1_safe], CC1)
CC3 = nz(CC2[MM1_safe], CC2)
DIFL1 = ta.lowest(DIFF, N1_safe)
DIFL2 = nz(DIFL1[MM1_safe], DIFL1)
DIFL3 = nz(DIFL2[MM1_safe], DIFL2)
// 计算CH和DIFH系列值
CH1 = ta.highest(close, MM1_safe)
CH2 = nz(CH1[N1_safe], CH1)
CH3 = nz(CH2[N1_safe], CH2)
DIFH1 = ta.highest(DIFF, MM1_safe)
DIFH2 = nz(DIFH1[N1_safe], DIFH1)
DIFH3 = nz(DIFH2[N1_safe], DIFH2)
// 判断买入条件
AAA = CC1 < CC2 and DIFL1 > DIFL2 and MACD[1] < 0 and DIFF < 0
BBB = CC1 < CC3 and DIFL1 < DIFL2 and DIFL1 > DIFL3 and MACD[1] < 0 and DIFF < 0
CCC = (AAA or BBB) and DIFF < 0
LLL = not CCC[1] and CCC
XXX = AAA[1] and DIFL1 <= DIFL2 and DIFF < DEA or BBB[1] and DIFL1 <= DIFL3 and DIFF < DEA
JJJ = CCC[1] and math.abs(DIFF[1]) >= math.abs(DIFF) * 1.01
BLBL = JJJ[1] and CCC and math.abs(DIFF[1]) * 1.01 <= math.abs(DIFF)
DXDX = not JJJ[1] and JJJ
DJGXX = (close < CC2 or close < CC1) and (JJJ[MM1_safe] or JJJ[MM1]) and not LLL[1] and math.sum(JJJ ? 1 : 0, 24) >= 1
DJXX = not(math.sum(DJGXX[1] ? 1 : 0, 2) >= 1) and DJGXX
DXX = (XXX or DJXX) and not CCC
// 判断卖出条件
ZJDBL = CH1 > CH2 and DIFH1 < DIFH2 and MACD[1] > 0 and DIFF > 0
GXDBL = CH1 > CH3 and DIFH1 > DIFH2 and DIFH1 < DIFH3 and MACD[1] > 0 and DIFF > 0
DBBL = (ZJDBL or GXDBL) and DIFF > 0
DBL = not DBBL[1] and DBBL and DIFF > DEA
DBLXS = ZJDBL[1] and DIFH1 >= DIFH2 and DIFF > DEA or GXDBL[1] and DIFH1 >= DIFH3 and DIFF > DEA
DBJG = DBBL[1] and DIFF[1] >= DIFF * 1.01
DBJGXC = not DBJG[1] and DBJG
DBJGBL = DBJG[1] and DBBL and DIFF[1] * 1.01 <= DIFF
ZZZZZ = (close > CH2 or close > CH1) and (DBJG[N1_safe] or DBJG[N1]) and not DBL[1] and math.sum(DBJG ? 1 : 0, 23) >= 1
YYYYY = not(math.sum(ZZZZZ[1] ? 1 : 0, 2) >= 1) and ZZZZZ
WWWWW = (DBLXS or YYYYY) and not DBBL
// plot买入和卖出信号
if DXDX
label.new(bar_index, low, text='抄底', style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
if DBJGXC
label.new(bar_index, high, text='卖出', style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
indicator('CD', overlay=false, max_bars_back=500)
// 输入参数
S = input(12, title='Short EMA Period')
P = input(26, title='Long EMA Period')
M = input(9, title='Signal Line Period')
// 计算DIFF, DEA和MACD值
fastEMA = ta.ema(close, S)
slowEMA = ta.ema(close, P)
DIFF = fastEMA - slowEMA
DEA = ta.ema(DIFF, M)
MACD = (DIFF - DEA) * 2
// 计算N1和MM1
N1 = ta.barssince(ta.crossunder(MACD, 0))
MM1 = ta.barssince(ta.crossover(MACD, 0))
// 确保长度参数大于0
N1_safe = na(N1) ? 1 : math.max(N1 + 1, 1)
MM1_safe = na(MM1) ? 1 : math.max(MM1 + 1, 1)
// 计算CC和DIFL系列值
CC1 = ta.lowest(close, N1_safe)
CC2 = nz(CC1[MM1_safe], CC1)
CC3 = nz(CC2[MM1_safe], CC2)
DIFL1 = ta.lowest(DIFF, N1_safe)
DIFL2 = nz(DIFL1[MM1_safe], DIFL1)
DIFL3 = nz(DIFL2[MM1_safe], DIFL2)
// 计算CH和DIFH系列值
CH1 = ta.highest(close, MM1_safe)
CH2 = nz(CH1[N1_safe], CH1)
CH3 = nz(CH2[N1_safe], CH2)
DIFH1 = ta.highest(DIFF, MM1_safe)
DIFH2 = nz(DIFH1[N1_safe], DIFH1)
DIFH3 = nz(DIFH2[N1_safe], DIFH2)
// 判断买入条件
AAA = CC1 < CC2 and DIFL1 > DIFL2 and MACD[1] < 0 and DIFF < 0
BBB = CC1 < CC3 and DIFL1 < DIFL2 and DIFL1 > DIFL3 and MACD[1] < 0 and DIFF < 0
CCC = (AAA or BBB) and DIFF < 0
LLL = not CCC[1] and CCC
XXX = AAA[1] and DIFL1 <= DIFL2 and DIFF < DEA or BBB[1] and DIFL1 <= DIFL3 and DIFF < DEA
JJJ = CCC[1] and math.abs(DIFF[1]) >= math.abs(DIFF) * 1.01
BLBL = JJJ[1] and CCC and math.abs(DIFF[1]) * 1.01 <= math.abs(DIFF)
DXDX = not JJJ[1] and JJJ
DJGXX = (close < CC2 or close < CC1) and (JJJ[MM1_safe] or JJJ[MM1]) and not LLL[1] and math.sum(JJJ ? 1 : 0, 24) >= 1
DJXX = not(math.sum(DJGXX[1] ? 1 : 0, 2) >= 1) and DJGXX
DXX = (XXX or DJXX) and not CCC
// 判断卖出条件
ZJDBL = CH1 > CH2 and DIFH1 < DIFH2 and MACD[1] > 0 and DIFF > 0
GXDBL = CH1 > CH3 and DIFH1 > DIFH2 and DIFH1 < DIFH3 and MACD[1] > 0 and DIFF > 0
DBBL = (ZJDBL or GXDBL) and DIFF > 0
DBL = not DBBL[1] and DBBL and DIFF > DEA
DBLXS = ZJDBL[1] and DIFH1 >= DIFH2 and DIFF > DEA or GXDBL[1] and DIFH1 >= DIFH3 and DIFF > DEA
DBJG = DBBL[1] and DIFF[1] >= DIFF * 1.01
DBJGXC = not DBJG[1] and DBJG
DBJGBL = DBJG[1] and DBBL and DIFF[1] * 1.01 <= DIFF
ZZZZZ = (close > CH2 or close > CH1) and (DBJG[N1_safe] or DBJG[N1]) and not DBL[1] and math.sum(DBJG ? 1 : 0, 23) >= 1
YYYYY = not(math.sum(ZZZZZ[1] ? 1 : 0, 2) >= 1) and ZZZZZ
WWWWW = (DBLXS or YYYYY) and not DBBL
// plot买入和卖出信号
if DXDX
label.new(bar_index, low, text='抄底', style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
if DBJGXC
label.new(bar_index, high, text='卖出', style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
Mã nguồn mở
Theo đúng tinh thần TradingView, người tạo ra tập lệnh này đã biến tập lệnh thành mã nguồn mở để các nhà giao dịch có thể xem xét và xác minh công năng. Xin dành lời khen tặng cho tác giả! Mặc dù bạn có thể sử dụng miễn phí, nhưng lưu ý nếu đăng lại mã, bạn phải tuân theo Quy tắc nội bộ của chúng tôi.
Thông báo miễn trừ trách nhiệm
Thông tin và ấn phẩm không có nghĩa là và không cấu thành, tài chính, đầu tư, kinh doanh, hoặc các loại lời khuyên hoặc khuyến nghị khác được cung cấp hoặc xác nhận bởi TradingView. Đọc thêm trong Điều khoản sử dụng.
Mã nguồn mở
Theo đúng tinh thần TradingView, người tạo ra tập lệnh này đã biến tập lệnh thành mã nguồn mở để các nhà giao dịch có thể xem xét và xác minh công năng. Xin dành lời khen tặng cho tác giả! Mặc dù bạn có thể sử dụng miễn phí, nhưng lưu ý nếu đăng lại mã, bạn phải tuân theo Quy tắc nội bộ của chúng tôi.
Thông báo miễn trừ trách nhiệm
Thông tin và ấn phẩm không có nghĩa là và không cấu thành, tài chính, đầu tư, kinh doanh, hoặc các loại lời khuyên hoặc khuyến nghị khác được cung cấp hoặc xác nhận bởi TradingView. Đọc thêm trong Điều khoản sử dụng.