学习 共享 交流 技术
通达信指标安装技巧:
手机版 使用方法:通达信找到“我的指标”→自编在云(选本地也行)→创建云指标 →填写指标信息→填写源码编译→右上角最右边点选 保存→回界面选择 技术指标→“我的指标”里 对应找到
友情提示(指标只是辅助,不作建议)


import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.stats import gaussian_kdeimport warningswarnings.filterwarnings('ignore')# 设置中文显示plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = FalseclassTongDaXinIndicator:def__init__(self, data): self.df = data.copy() self.df.columns = ['open', 'high', 'low', 'close']defwinner(self, price, window=20):""" 计算获利盘比例(WINNER函数) 使用固定窗口内的KDE估计价格分布 """ result = np.zeros(len(self.df))for i in range(window-1, len(self.df)):# 获取历史窗口数据 hist_close = self.df['close'].iloc[i-window+1:i+1]# 使用KDE估计价格分布try: kde = gaussian_kde(hist_close)# 计算低于给定价格的概率 result[i] = kde.integrate_box_1d(-np.inf, price[i])except: result[i] = np.mean(hist_close <= price[i])# 前window-1个值用NaN填充 result[:window-1] = np.nanreturn result * 100defcalculate(self):"""计算所有指标""" df = self.df# lijinU1: 常数0.20 lijinU1 = 0.20# lijinU2: 平均价格 lijinU2 = (df['close'] + df['open'] + df['low'] + df['high']) / 4# lijinU3: 获利盘比例 (价格*1.04) lijinU3 = self.winner(lijinU2 * 1.04)# lijinU4: 获利盘比例 (价格*0.96) lijinU4 = self.winner(lijinU2 * 0.96)# lijinU5: 等于lijinU4 lijinU5 = lijinU4.copy()# lijinU6: 常数0.00 lijinU6 = 0.00# lijinU7: EMA((CLOSE-LLV(LOW,20))/(HHV(HIGH,20)-LLV(LOW,20))*100,5) llv_low = df['low'].rolling(window=20, min_periods=1).min() hhv_high = df['high'].rolling(window=20, min_periods=1).max() lijinU7_raw = (df['close'] - llv_low) / (hhv_high - llv_low) * 100 lijinU7 = lijinU7_raw.ewm(span=5, adjust=False).mean()# lijinU8: (HHV(HIGH,25)-LLV(LOW,25))/EMA((CLOSE-LLV(LOW,25)),5)*2.5 hhv_high_25 = df['high'].rolling(window=25, min_periods=1).max() llv_low_25 = df['low'].rolling(window=25, min_periods=1).min() ema_close_llv = (df['close'] - llv_low_25).ewm(span=5, adjust=False).mean() lijinU8 = (hhv_high_25 - llv_low_25) / ema_close_llv * 2.5# lijinU9: EMA(lijinU7,3) lijinU9 = lijinU7.ewm(span=3, adjust=False).mean()# lijinU10: lijinU8 lijinU10 = lijinU8.copy()# lijinU11: MA(lijinU4,5) lijinU11 = lijinU4.rolling(window=5, min_periods=1).mean()# lijinU12: lijinU5 lijinU12 = lijinU5.copy()# lijinU13: EMA(lijinU5,20) lijinU13 = lijinU5.ewm(span=20, adjust=False).mean() return results
DRAWGBK(C>0, RGB(0,100,200),RGB(255,175,108),0,'11',0);lijinU1:0.20,COLOR111111;lijinU2:=(C+O+L+H)/4;lijinU3:=(WINNER((lijinU2*1.04))*100.000);lijinU4:=(WINNER((lijinU2*0.96))*100.000);lijinU5:=lijinU4;lijinU6:0.00,COLORBLUE;lijinU7:=EMA((CLOSE-LLV(LOW,20))/(HHV(HIGH,20)-LLV(LOW,20))*100,5);lijinU8:=(HHV(HIGH,25)-LLV(LOW,25))/EMA((CLOSE-LLV(LOW,25)),5)*2.5;lijinU9:=EMA(lijinU7,3),COLORGREEN;DRAWBAND(lijinU8,RGB(0,128,255),lijinU6,RGB(0,0,0));lijinU10:lijinU8,COLORYELLOW,LINETHICK1;STICKLINE(1.000,0,lijinU5,2,0),COLORRED;lijinU11:MA(lijinU4,5),COLORGREEN,LINETHICK2;lijinU12:lijinU5,COLORYELLOW,LINETHICK1;lijinU13:=EMA(lijinU5,20),COLORBLUE,LINETHICK2;
学术交流:我们专注于市场的学术交流与研究学习。
分享知识:爱人如己,我为人人,与人为善,分享快乐!



你对这个指标怎么看?欢迎在评论区聊聊你的想法。