社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python学自动化:CCI+RSI+KDJ三线共振叠加指标

量化对冲套利 • 昨天 • 18 次点击  

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

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

01 指标图例


图一

图二

02 Py源码






    
import pandas as pd
import numpy as np
import talib as ta
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

def convert_drawgbk(ax, condition, color1, color2):
    """模拟DRAWGBK渐变背景效果"""
    mask = condition.values
    cmap = LinearSegmentedColormap.from_list('custom', [color1, color2], N=256)
    ax.imshow(mask.reshape(1,-1), cmap=cmap, aspect='auto', extent=(0,len(mask),0.5,1.5))

def main():
    data = pd.DataFrame({
        'open': np.random.rand(100)*100,
        'high': np.random.rand(100)*100,
        'low': np.random.rand(100)*100,
        'close': np.random.rand(100)*100,
        'volume': np.random.randint(100000,1000000,100)
    }).sort_values('date')

    # 参数设置
    N, M, N1 = 9146
    
    # 计算基础指标
    TYP = (data['high'] + data['low'] + data['close']) / 3
    MA_TYP = ta.EMA(TYP, M)
    CC1 = (TYP - MA_TYP) / (0.015 * ta.SMA(np.abs(TYP - MA_TYP), M))
    CC1 = (CC1 - CC1.mean()) / CC1.std()  # 标准化处理
    
    # 计算CCI指标
    C1 = ta.SMA(CC1, 3)
    C2 = ta.SMA(C1, 3)
    C3 = 3*C1 - 2*C2
    CB1 = ta.EMA(C3, 5)
    
    # 绘制带状区域CCI+RSI+KDJ三重叠加共振指标
    ax1 = plt.subplot(211)
    plt.plot(data.index, CC1, color='#FF00FF', label='CCI')
    convert_drawgbk(ax1, CC1 > 0, (0,0,0.12), (0.06,0, 0.02))  # 渐变背景
    
    # 绘制RSI指标CCI+RSI+KDJ三重叠加共振指标
    RSI1 = ta.RSI(data['close'], timeperiod=N1)
    RSI = (RSI1 - 50) * 5
    R1 = ta.SMA(RSI, 3)
    D1 = ta.SMA(R1, 3)
    J1 = 3*R1 - 2*D1
    RR1 = ta.EMA(J1, 5)
    
    # 绘制KDJ指标CCI+RSI+KDJ三重叠加共振指标
    RSV = (data['close'] - data['low'].rolling(N).min()) / \
          (data['high'].rolling(N).max() - data['low'].rolling(N).min()) * 100
    K = ta.SMA(RSV, 3)
    D = ta.SMA(K, 3)
    J = 3*K - 2*D
    BB1 = ta.EMA(J, 5)
    
    # 绘制信号指标CCI+RSI+KDJ三重叠加共振指标
    ax2 = plt.subplot(212, sharex=ax1)
    plt.plot(data.index, RSI, color='#FF00FF', label='RSI')
    plt.plot(data.index, K, color='#FFFF00', label='K')
    plt.plot(data.index, D, color='#00FFFF', label='D')
    plt.plot(data.index, J, color='#00FF00', label='J')
    
    # 绘制信号CCI+RSI+KDJ三重叠加共振指标
    buy_signal = (RR1 > RR1.shift(1)) & (CB1 -100) & (BB1 -100)
    ax1.scatter(buy_signal[buy_signal].index, 
               CC1[buy_signal], 
               marker='^', color='#640000'
               s=50, edgecolors='#FFFFFF')

    # 图表美化
    plt.setp(ax1.get_xticklabels(), visible=False)
    ax2.legend(loc='upper left')
    ax1.set_ylim(-150150)
    ax2.set_ylim(0100)
    plt.show()

if __name__ == "__main__":
    main()



03 指标源码


通达信下方三线共振指标代码仅用于学习交流使用。

DRAWGBK(C>0,RGB(0,0,20),RGB(00,0,0),0,0,1);量化对冲1:=9;量化对冲2:=14;量化对冲3:=6;量化对冲4:=(HIGH+LOW+CLOSE)/3;量化对冲5:=(量化对冲4-MA(量化对冲4,量化对冲2))/(0.015*AVEDEV(量化对冲4,量化对冲2)),COLORFF00FF;量化对冲6:=SMA(量化对冲5,3,1);量化对冲7:=SMA(量化对冲6,3,1);量化对冲8:=3*量化对冲6-2*量化对冲7;量化对冲9:=EMA(量化对冲8,5);量化对冲10:=REF(量化对冲9,1);DRAWBAND(量化对冲5,RGB(220,50,100),100,RGB(100,150,72));DRAWBAND(量化对冲5,RGB(220,50,100),100,RGB(100,80,220));STICKLINE(C>1,100,-100,5,0),COLOR640000;CCI:量化对冲5,COLORFF00FF;量化对冲12:=REF(CLOSE,1);量化对冲13:=SMA(MAX(CLOSE-量化对冲12,0),量化对冲3,1)/SMA(ABS(CLOSE-量化对冲12),量化对冲3,1)*100;RSI:(量化对冲13-50)*5,LINETHICK2;量化对冲15:=SMA(RSI,3,1);量化对冲16:=SMA(量化对冲15,3,1);量化对冲17:=3*量化对冲15-2*量化对冲16;量化对冲18:=EMA(量化对冲17,5);量化对冲19:=REF(量化对冲18,1);量化对冲20:=量化对冲18>量化对冲19;量化对冲21:=(CLOSE-LLV(LOW,量化对冲1))/(HHV(HIGH,量化对冲1)-LLV(LOW,量化对冲1))*100;量化对冲22:=SMA(量化对冲21,3,1);K:(量化对冲22-50)*5,COLORFFFF00;量化对冲24:=SMA(K,3,1);量化对冲25:=SMA(量化对冲24,3,1);量化对冲26:=3*量化对冲24-2*量化对冲25;量化对冲27:=EMA(量化对冲26,5);量化对冲28:=REF(量化对冲27,1);量化对冲29:=量化对冲20&&NOT(REF(量化对冲20,1))&&(量化对冲18100


    
&&量化对冲27100)&&量化对冲9100;DRAWICON(量化对冲29,-200,1);





学习分享



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

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


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182958
 
18 次点击