Py学习  »  Python

Python编程学动量自动化:通达信短线异动起飞指标

量化对冲套利 • 1 年前 • 343 次点击  

朋友们大家好今天来学习这个通达信指标算法,注意本指标源码用于通达信,友情情提示:代码较多,一定要复制全。本文所述模型算法仅限学术探讨,指标公式作为知识免费分享,"基于开源数据集的理论推演",仅用于学习交流。

图片
图片
风险提示:本指标仅供技术研究与学习交流使用。市场具有高度不确定性,任何基于本指标的决策都需要自行承担风险,不构成任何投资建议。

01 指标图例


图一

图二

02 Py 源码






    
import pandas as pd
import matplotlib.pyplot as plt

def plot_signals(df):
    plt.figure(figsize=(126))
    plt.plot(df.index, df['CLOSE'], label='Close Price')
    
    # 标记信号位置
    signals = df[df['LIJIN']]
    plt.scatter(signals.index, 
                signals['CLOSE'], 
                color='red'
                label='LIJIN Signal')
    
    plt.title('Trading Signals')
    plt.legend()
    plt.show()

# 在示例使用部分添加
plot_signals(df)
def calculate_lijin_signals(df):
    # 计算基础指标
    df['LIJINE'] = (df['VOL'] * (df['CLOSE'] - df['OPEN'])) / (df['CLOSE'] + df['OPEN'] + 1e-8)
    
    # 计算EMA指标
    df['LIJINE1'] = df['LIJINE'].ewm(span=38, adjust=False).mean()
    df['LIJINW'] = df['LIJINE1'].ewm(span=8, adjust=False).mean()
    
    # 计算移动平均
    df['LIJINW1'] = df['LIJINW'].rolling(3).mean()
    df['LIJINW2'] = df['LIJINW'].rolling(10).mean()

    # 计算均线组合
    df['MA41'] = df['CLOSE'].rolling(41).mean()
    df['LIJIN111'] = df['MA41'] * 1.10
    df['MA23'] = df['CLOSE'].rolling(23).mean()
    df['LIJIN211'] = df['MA23'] * 1.05
    
    # 计算复合均线
    ma3 = df['CLOSE'].rolling(3).mean()
    ma6 = df['CLOSE'].rolling(6).mean()
    ma12 = df['CLOSE'].rolling(12).mean()
    ma24 = df['CLOSE'].rolling(24).mean()
    df['LIJIN311'] = (ma3 + ma6 + ma12 + ma24) / 4
    
    # 计算高价均线
    df['LIJIN411'] = df['HIGH'].rolling(5).mean()

    # 条件判断
    df['LIJIN511'] = df['CLOSE'] > df[ 'CLOSE'].shift(1) * 1.088
    df['LIJIN911'] = (df['VOL'] > 0).astype(int)  # 假设DYNAINFO(17)表示有效成交量
    df['LIJIN101'] = df['LIJIN911']

    # 定义交叉函数
    def crossover(s1, s2):
        return (s1 > s2) & (s1.shift(1) <= s2.shift(1))

    # 计算交叉信号
    cross1 = crossover(df['LIJIN411'], df['LIJIN111'])
    cross2 = crossover(df['LIJIN311'], df['LIJIN111'])
    cross3 = crossover(df['LIJIN311'], df['LIJIN211'])

    # 最终信号合成
    df['LIJIN'] = (cross1 | cross2 | cross3) & df['LIJIN511'] & df['LIJIN101']
    
    return df



03 指标源码


通达信复制下方代码即可,代码仅用于学习交流使用。

LIJINE:=((VOL*(CLOSE-OPEN))/(CLOSE+OPEN));LIJINE1:=EMA(((VOL*(CLOSE-OPEN))/(CLOSE+OPEN)),38);LIJINW:=EMA(LIJINE1,8),LINETHICK3,COLORSTICK;LIJINW1:MA(LIJINW,3),COLORYELLOW,LINETHICK2;LIJINW2:MA(LIJINW,10),COLORMAGENTA,LINETHICK2;LIJIN111:=MA(CLOSE,41)+MA(CLOSE,41)*10/100;LIJIN211:=MA(CLOSE,23)+MA(CLOSE,23)*5/100;LIJIN311:=(MA(CLOSE,3)+MA(CLOSE,6)+MA(CLOSE,12)+MA(CLOSE,24))/4;LIJIN411:=MA(HIGH,5);LIJIN511:=CLOSE>REF(CLOSE,1)*1.088;LIJIN911:=DYNAINFO(17)>0;LIJIN101:=LIJIN911;LIJIN:CROSS(LIJIN411,LIJIN111)||CROSS(LIJIN311,LIJIN111)||CROSS(LIJIN311,LIJIN211)&&LIJIN511;STICKLINE(LIJIN,580,550,14,0),COLORYELLOW;


    
STICKLINE(LIJIN,570,560,12,0),COLORCYAN;STICKLINE(LIJIN,450,480,4,0),COLORWHITE;STICKLINE(LIJIN,530,500,9,0),COLOR0088DD;STICKLINE(LIJIN,550,480,6,0),COLORLIRED;STICKLINE(LIJIN,530,530,5,0),COLOR000000;STICKLINE(LIJIN,520,520,3,0),COLOR000000;STICKLINE(LIJIN,530,500,2,0),COLOR0077EE;STICKLINE(LIJIN,530,500,1,0),COLOR0077EE;STICKLINE(LIJIN,600,550,7,0),COLORRED;STICKLINE(LIJIN,600,630,4,0),COLORRED;STICKLINE(LIJIN,200,170,16,0),COLORWHITE;STICKLINE(LIJIN,220,200,12,0),COLORYELLOW;STICKLINE(LIJIN,220,170,5,0),COLORBLACK;STICKLINE(LIJIN,330,220,13,0),COLORRED;STICKLINE(LIJIN,460,420,18,0),COLORMAGENTA;STICKLINE(LIJIN,460,310,16,0),COLORRED;STICKLINE(LIJIN,410,310,12,0),COLORBROWN;STICKLINE(LIJIN,410,310,11,0),COLORRED;STICKLINE(LIJIN,320,310,12,0),COLORYELLOW;STICKLINE(LIJIN,350,330,8,0),COLOR00AAFF;STICKLINE(LIJIN,490,490,1,0),COLOR0000EE;DRAWICON(LIJIN,380,9);DRAWICON(LIJIN,260,29);

顺势而为 长期坚持 波段做T





学习分享



学术交流:我们专注于市场的学术交流与研究包括自用指标零滞后均线最速曲线,以及自动化程序量化学习。

分享知识:田都元帅,敬神常在,爱人如己,我为人人,与人为善,分享快乐!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182261