社区所有版块导航
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编程学动量自动化:强庄起爆捉妖天眼主图指标公式

量化对冲套利 • 3 天前 • 36 次点击  

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

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

01 指标图例


图一

图二



02 Py源码


下方代码仅用于学习交流使用。

import pandas as pd
import numpy as np
import talib as ta
import mplfinance as mpf
from matplotlib import pyplot as plt
from matplotlib.collections import LineCollection, PolyCollection

def calculate_indicators(df):
    # 基础计算
    df['VAR1'] = (df['Close'] + df['High'] + df['Open'] + df['Low']) / 4
    df['卖出'] = ta.EMA(df['VAR1'], 20) * 1.08
    df['买入'] = ta.EMA(df['VAR1'], 32) * 0.90
    df['幅度'] = 100 * (df['卖出'] - df['买入']) / df['买入']
    df['菩提'] = df['买入'] + (df['卖出'] - df['买入']) * 2 / 3
    
    # 均线系统
    df['般'] = ta.EMA(df['Close'], 7)
    df['若'] = ta.EMA(df['Close'], 3)
    df['M1'] = ta.EMA(df['Close'], 5)
    df['M2'] = ta.EMA(df['Close'], 13)
    df['M3'] = ta.EMA(df['Close'], 34)
    df['MC1'] = ta.EMA(df['Close'], 55)
    df['MC2'] = ta.EMA(df['Close'], 89)
    df['MA4'] = ta.EMA(df['Close'], 144)
    df['买线1'] = df['M3'].shift(1)  # 简化处理
    
    # 动量指标
    llv = df['Low'].rolling(12).min()
    hhv = df['High'].rolling(12).max()
    df['RSVL'] = (df['Close'] - llv) / (hhv - llv) * 100
    df['KL'] = ta.SMA(df['RSVL'], 3)
    df['DL'] = ta.SMA(df['KL'], 3)
    df['NL'] = df['KL'] + df['DL']
    
    # 买卖信号
    df['买入L'] = (df['NL'] > 50) & (df['NL'].shift(1) <= 50)
    df['卖出K'] = (df['NL'] 160) & (df['NL'].shift(1) >= 160
    
    # 高级趋势指标
    df['TM'] = df['Close']
    df['SL1M'] = (df['TM'] / df['TM'].shift(1) - 1) * 1000
    df['趋势5'] = ta.EMA(ta.EMA(ta.EMA(df['SL1M'], 20), 20)
    df['趋势6'] = ta.EMA(ta.EMA(ta.EMA(df['SL1M'], 10), 10)
    df['QA9'] = df['趋势6'] - df['趋势5']
    df['QA10'] = ta.EMA(df['QA9'], 89)
    df['买入M'] = (df['QA9'] - df['QA10']) * 2
    
    # 支撑阻力位
    df['高1'] = df['High'].rolling(150).max().shift(3)
    df['低1'] = df['Low'].rolling(150).min().shift(3)
    df['中线'] = (df['卖出'] + df['买入']) / 2
    
    # 形态识别
    conditions = []
    for i in range(113):
        cond = (df['Close'] > df['Close'].shift(i)) & (df['Close'] > df['Close'].shift(i+1))
        conditions.append(cond)
    df['形态'] = pd.concat(conditions, axis=1).any(axis=1)
    
    return df

def create_plot(df):
    # 创建专业K线图
    apds = [
        mpf.make_addplot(df['卖出'], color='green', linestyle=':', width=3 , panel=0),
        mpf.make_addplot(df['买入'], color='magenta', linestyle=':', width=3, panel=0),
        mpf.make_addplot(df['中线'], color='white', width=4, panel=0),
        mpf.make_addplot(df['M3'], color='blue', width=2, panel=0),
        mpf.make_addplot(df['NL'], color='purple', panel=1),
        mpf.make_addplot(df['买入M'], type='bar', color='gray', panel=2)
    ]
    
    # 标记买卖信号
    buy_signals = df[df['买入L']]
    sell_signals = df[df['卖出K']]
    if not buy_signals.empty:
        apds.append(mpf.make_addplot(buy_signals['低1']*0.96, type='scatter', marker='^', markersize=100, color='yellow', panel=0))
    if not sell_signals.empty:
        apds.append(mpf.make_addplot(sell_signals['低1']*0.96, type='scatter', marker='v', markersize=100, color='cyan', panel=0))
    
    # 多空趋势彩带
    sma6 = ta.SMA(df['Close'], 6)
    sma13 = ta.SMA(df['Close'], 13)
    df['sma6'] = sma6
    df['sma13'] = sma13
    
    # 创建图形
    fig, axes = mpf.plot(df, type='candle', addplot=apds, 
                         fill_between=dict(y1=df['sma6'].values, 
                                         y2=df['sma13'].values, 
                                         alpha=0.2
                                         color=['orange','green']),
                         style='charles',
                         volume_panel=2,
                         figratio=(128),
                         returnfig=True)
    
    # 添加标题和网格
    axes[0].set_title('高级交易系统', fontsize=16)
    axes[0].grid(True, linestyle='--', alpha=0.7)
    axes[2].grid(True, linestyle='--', alpha=0.7)
    
    # 添加图例
    axes[0].legend(['卖出线''买入线' '中线''34日均线'], loc='upper left')
    
    return fig

# 主程序
if __name__ == "__main__":
    data = pd.read_csv('your_stock_data.csv', index_col=0, parse_dates=True)
    
    # 计算指标
    df = calculate_indicators(data)
    
    # 生成专业图表
    fig = create_plot(df[-200:])  # 展示最近200个交易日
    
    # 保存结果
    plt.savefig('trading_system.png', dpi=300, bbox_inches='tight')
    plt.show()

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





学习分享



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

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

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