利他科技分享技术
通达信指标安装技巧:
电脑端 打开通达信软件;点击“功能”-“公式系统”-“公式管理器”;选择“技术指标公式”-“新建”;测试通过的话,一定要记得去点击右上角的”确定“按钮,这样就完成了。
友情提示(指标只是辅助,不作建议)

图一:指标全局分析图
指标名称:ICU均线
指标类型画线方法:主图叠加
适用软件:通达信
加密类型:未加密、开源免费共享
未来函数:不包含

图二:指标指数示范图
from scipy.stats import siegelslopes# 计算ICU均线defcalc_icu(srs):n = srs.shape[0]m = round((n-1) / 2)beta, mu = siegelslopes(srs, np.arange(-m,m+1), method='hierarchical')y = mu + beta * mreturn y# 均线长度ma_len = 5# 普通5日均线data['ma'] = data['close'].rolling(ma_len).mean()data['icu'] = data['close'].rolling(ma_len).apply(calc_icu, raw=True)data.tail(10)
说明:
通达信没有中位数,也没有对应回归函数,所以只能使用自己构建实现。
在通达信公式中没有直接提供Theil-Sen回归函数,需要自己实现“穷举法”。穷举法指的是Theil-Sen方法:计算所有点对之间的斜率,取中位数作为斜率估计,然后截距取所有残差的中位数
但注意原函数method='hierarchical',scipy中的实现使用了一种分层方法,但是最终结果等同于Theil-Sen估计:斜率是所有点对斜率的中位数
截距是所有截距的中位数(其中截距 = y_i - beta * x_i)。
所以我们需要在通达信公式中实现这种计算。
由于窗口长度为5,点对数量为C(5,2)=10,
可以枚举所有点对计算斜率,取其中位数,然后计算每个点的截距,取中位数。
最后计算y = mu + beta * m。

LIJIN1:=BARSCOUNT(C)<5; LIJIN2:=REF(C,4); LIJIN3:=REF(C,3); LIJIN4:=REF(C,2); LIJIN5:=REF(C,1); LIJIN6:=C; LIJIN7:=LIJIN4-LIJIN2; LIJIN8:=(LIJIN3-LIJIN2)/2; LIJIN9:=(LIJIN5-LIJIN2)/3; LIJIN10:=(LIJIN6-LIJIN2)/4; LIJIN11:=LIJIN3-LIJIN4; LIJIN12:=(LIJIN5-LIJIN4)/2; LIJIN13:=(LIJIN6-LIJIN4)/3; LIJIN14:=LIJIN5-LIJIN3; LIJIN15:=(LIJIN6-LIJIN3)/2; LIJIN16:=LIJIN6-LIJIN5; LIJIN17:=MIN(LIJIN7,LIJIN8); LIJIN18:=MAX(LIJIN7,LIJIN8); LIJIN19:=IF(LIJIN9<=LIJIN17,LIJIN9,LIJIN17); LIJIN20:=IF(LIJIN9<=LIJIN17,LIJIN17,IF(LIJIN9<=LIJIN18,LIJIN9,LIJIN18)); LIJIN21:=IF(LIJIN9<=LIJIN18,LIJIN18,LIJIN9); LIJIN22:=IF(LIJIN10<=LIJIN19,LIJIN10,LIJIN19); LIJIN23:=IF(LIJIN10<=LIJIN19,LIJIN19,IF(LIJIN10<=LIJIN20,LIJIN10,LIJIN20)); LIJIN24:=IF(LIJIN10<=LIJIN20,LIJIN20,IF(LIJIN10<=LIJIN21,LIJIN10,LIJIN21)); LIJIN25:=IF(LIJIN10<=LIJIN21,LIJIN21,LIJIN10); LIJIN26:=IF(LIJIN11<=LIJIN22,LIJIN11,LIJIN22); LIJIN27:=IF(LIJIN11<=LIJIN22,LIJIN22,IF(LIJIN11<=LIJIN23,LIJIN11,LIJIN23)); LIJIN28:=IF(LIJIN11<=LIJIN23,LIJIN23,IF(LIJIN11<=LIJIN24,LIJIN11,LIJIN24)); LIJIN29:=IF(LIJIN11<=LIJIN24,LIJIN24,IF(LIJIN11<=LIJIN25,LIJIN11,LIJIN25)); LIJIN30:=IF(LIJIN11<=LIJIN25,LIJIN25,LIJIN11); LIJIN31:=IF(LIJIN12<=LIJIN26,LIJIN12,LIJIN26); LIJIN32:=IF(LIJIN12<=LIJIN26,LIJIN26,IF(LIJIN12<=LIJIN27,LIJIN12,LIJIN27)); LIJIN33:=IF(LIJIN12<=LIJIN27,LIJIN27,IF(LIJIN12<=LIJIN28,LIJIN12,LIJIN28)); LIJIN34:=IF(LIJIN12<=LIJIN28,LIJIN28,IF(LIJIN12<=LIJIN29,LIJIN12,LIJIN29)); LIJIN35:=IF(LIJIN12<=LIJIN29,LIJIN29,IF(LIJIN12<=LIJIN30,LIJIN12,LIJIN30)); LIJIN36:=IF(LIJIN12<=LIJIN30,LIJIN30,LIJIN12); LIJIN37:=IF(LIJIN13<=LIJIN31,LIJIN13,LIJIN31); LIJIN38:=IF(LIJIN13<=LIJIN31,LIJIN31,IF(LIJIN13<=LIJIN32,LIJIN13,LIJIN32)); LIJIN39:=IF(LIJIN13<=LIJIN32,LIJIN32,IF(LIJIN13<=LIJIN33,LIJIN13,LIJIN33)); LIJIN40:=IF(LIJIN13<=LIJIN33,LIJIN33,IF(LIJIN13<=LIJIN34,LIJIN13,LIJIN34)); LIJIN41:=IF(LIJIN13<=LIJIN34,LIJIN34,IF(LIJIN13<=LIJIN35,LIJIN13,LIJIN35)); LIJIN42:=IF(LIJIN13<=LIJIN35,LIJIN35,IF(LIJIN13<=LIJIN36,LIJIN13,LIJIN36)); LIJIN43:=IF(LIJIN13<=LIJIN36,LIJIN36,LIJIN13); LIJIN44:=IF(LIJIN14<=LIJIN37,LIJIN14,LIJIN37); LIJIN45:=IF(LIJIN14<=LIJIN37,LIJIN37,IF(LIJIN14<=LIJIN38,LIJIN14,LIJIN38)); LIJIN46:=IF(LIJIN14<=LIJIN38,LIJIN38,IF(LIJIN14<=LIJIN39,LIJIN14,LIJIN39)); LIJIN47:=IF(LIJIN14<=LIJIN39,LIJIN39,IF(LIJIN14<=LIJIN40,LIJIN14,LIJIN40)); LIJIN48:=IF(LIJIN14<=LIJIN40,LIJIN40,IF(LIJIN14<=LIJIN41,LIJIN14,LIJIN41)); LIJIN49:=IF(LIJIN14<=LIJIN41,LIJIN41,IF(LIJIN14<=LIJIN42,LIJIN14,LIJIN42)); LIJIN50:=IF(LIJIN14<=LIJIN42,LIJIN42,IF(LIJIN14<=LIJIN43,LIJIN14,LIJIN43)); LIJIN51:=IF(LIJIN14<=LIJIN43,LIJIN43,LIJIN14); LIJIN52:=IF(LIJIN15<=LIJIN44,LIJIN15,LIJIN44); LIJIN53:=IF(LIJIN15<=LIJIN44,LIJIN44,IF(LIJIN15<=LIJIN45,LIJIN15,LIJIN45)); LIJIN54:=IF(LIJIN15<=LIJIN45,LIJIN45,IF(LIJIN15<=LIJIN46,LIJIN15,LIJIN46)); LIJIN55:=IF(LIJIN15<=LIJIN46,LIJIN46,IF(LIJIN15<=LIJIN47,LIJIN15,LIJIN47)); LIJIN56:=IF(LIJIN15<=LIJIN47,LIJIN47,IF(LIJIN15<=LIJIN48,LIJIN15,LIJIN48)); LIJIN57:=IF(LIJIN15<=LIJIN48,LIJIN48,IF(LIJIN15<=LIJIN49,LIJIN15,LIJIN49)); LIJIN58:=IF(LIJIN15<=LIJIN49,LIJIN49,IF(LIJIN15<=LIJIN50,LIJIN15,LIJIN50)); LIJIN59:=IF(LIJIN15<=LIJIN50,LIJIN50,IF(LIJIN15<=LIJIN51,LIJIN15,LIJIN51)); LIJIN60:=IF(LIJIN15<=LIJIN51,LIJIN51,LIJIN15); LIJIN61:=IF(LIJIN16<=LIJIN52,LIJIN16,LIJIN52); LIJIN62:=IF(LIJIN16<=LIJIN52,LIJIN52,IF(LIJIN16<=LIJIN53,LIJIN16,LIJIN53)); LIJIN63:=IF(LIJIN16<=LIJIN53,LIJIN53,IF(LIJIN16<=LIJIN54,LIJIN16,LIJIN54)); LIJIN64:=IF(LIJIN16<=LIJIN54,LIJIN54,IF(LIJIN16<=LIJIN55,LIJIN16,LIJIN55)); LIJIN65:=IF(LIJIN16<=LIJIN55,LIJIN55,IF(LIJIN16<=LIJIN56,LIJIN16,LIJIN56)); LIJIN66:=IF(LIJIN16<=LIJIN56,LIJIN56,IF(LIJIN16<=LIJIN57,LIJIN16,LIJIN57)); LIJIN67:=IF(LIJIN16<=LIJIN57,LIJIN57,IF(LIJIN16<=LIJIN58,LIJIN16,LIJIN58)); LIJIN68:=IF(LIJIN16<=LIJIN58,LIJIN58,IF(LIJIN16<=LIJIN59,LIJIN16,LIJIN59)); LIJIN69:=IF(LIJIN16<=LIJIN59,LIJIN59,IF(LIJIN16<=LIJIN60,LIJIN16,LIJIN60)); LIJIN70:=IF(LIJIN16<=LIJIN60,LIJIN60,LIJIN16); LIJIN71:=(LIJIN65+LIJIN66)/2; LIJIN72:=LIJIN2-LIJIN71*(-2); LIJIN73:=LIJIN3-LIJIN71*(-1); LIJIN74:=LIJIN4-LIJIN71*0; LIJIN75:=LIJIN5-LIJIN71*1; LIJIN76:=LIJIN6-LIJIN71*2; LIJIN77:=MIN(LIJIN72,LIJIN73); LIJIN78:=MAX(LIJIN72,LIJIN73); LIJIN79:=IF(LIJIN74<=LIJIN77,LIJIN74,LIJIN77); LIJIN80:=IF(LIJIN74<=LIJIN77,LIJIN77,IF(LIJIN74<=LIJIN78,LIJIN74,LIJIN78)); LIJIN81:=IF(LIJIN74<=LIJIN78,LIJIN78,LIJIN74); LIJIN82:=IF(LIJIN75<=LIJIN79,LIJIN75,LIJIN79); LIJIN83:=IF(LIJIN75<=LIJIN79,LIJIN79,IF(LIJIN75<=LIJIN80,LIJIN75,LIJIN80)); LIJIN84:=IF(LIJIN75<=LIJIN80,LIJIN80,IF(LIJIN75<=LIJIN81,LIJIN75,LIJIN81)); LIJIN85:=IF(LIJIN75<=LIJIN81,LIJIN81,LIJIN75); LIJIN86:=IF(LIJIN76<=LIJIN82,LIJIN76,LIJIN82); LIJIN87:=IF(LIJIN76<=LIJIN82,LIJIN82,IF(LIJIN76<=LIJIN83,LIJIN76,LIJIN83)); LIJIN88:=IF(LIJIN76<=LIJIN83,LIJIN83,IF(LIJIN76<=LIJIN84,LIJIN76,LIJIN84)); LIJIN89:=IF(LIJIN76<=LIJIN84,LIJIN84,IF(LIJIN76<=LIJIN85,LIJIN76,LIJIN85)); LIJIN90:=IF(LIJIN76<=LIJIN85,LIJIN85,LIJIN76); LIJIN91:=LIJIN88; LIJIN92:=LIJIN91+LIJIN71*2; LIJIN93:IF(LIJIN1,DRAWNULL,LIJIN92),COLORRED,LINETHICK4; |





