当前位置:首页>python>Python编程通达信进阶:筹码分布与价格波动的量化逻辑

Python编程通达信进阶:筹码分布与价格波动的量化逻辑

  • 2026-10-11 08:06:40
Python编程通达信进阶:筹码分布与价格波动的量化逻辑

学习 共享 交流 技术

通达信指标安装技巧:

手机版 使用方法:通达信找到“我的指标”→自编在云(选本地也行)→创建云指标 →填写指标信息→填写源码编译→右上角最右边点选  保存→回界面选择 技术指标→“我的指标”里 对应找到

友情提示(指标只是辅助,不作建议) 

图一:指标全局分析图

一、指标核心用法

指标名称:筹码分布与价格波动的量化逻辑
指标类型画线方法:主图叠加
加密方式:未加密,开源代码
未来函数:不包含未来函数
适用软件:通达信软件
风险提示:友情提示代码较多。本文所述模型算法仅限学术探讨,指标公式作为知识免费分享,"基于开源数据集的理论推演",不构成任何投资建议仅用于学习交流。

二、指标图谱展示

图二:指标指数示范图

三、指标Python代码

Python安装依赖 pip install pandas numpy
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;

学术交流:我们专注于市场的学术交流与研究学习。

分享知识:爱人如己,我为人人,与人为善,分享快乐!

自用指标

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

最新文章

随机文章