期货和股票市场上最常用的技术分析工具——KDJ指标,全名随机指标(Stochastics),由乔治·莱恩博士(George Lane)所创。融合了动量观念、强弱指标一些优点的KDJ指标,通过特定周期内出现过的最高价、最低价、收盘价三者之间的比例关系为基本数据进行计算,将得出的K值、D值与J值连接成曲线图,就形成了反映价格波动趋势的KDJ指标。

计算方法:首先要计算周期的RSV值,然后再计算K值、D值、J值。

以9日周期的KDJ为例:
 
RSVt=(Ct-L9)/(H9-L9)*100    (Ct=当日收盘价;L9=9天内最低价;H9=9天内最高价)
 
K值为RSV值3日平滑移动平均线,公式为:Kt=RSVt/3+2*t-1/3
 
D值为K值的3日平滑移动平均线,公式为:Dt=Kt/3+2*Dt-1/3
 
J值为三倍K值减两倍D值,公式为:Jt=3*Dt-2*Kt
 
KDJ指标在应用时需要考虑的几大方面:

1.K与D的取值,范围是0-100,80以上行情呈现超买现象,20以下呈现超卖现象。

2.买进信号:K值在上涨趋势中﹤D值,K线向上突破D线时;

卖出信号:K值在下跌趋势中﹥D值,K线向下跌破D线。

3.交易不活跃、发行量小的股票并不适用KD指标,而对大盘和热门大盘的准确性却很高。

4.在KD处在高位或低位,如果出现与股价走向的背离,则是采取行动的信号。

5.J的取值﹥100为超买,﹤0为超卖,都属于价格的非正常区域。

6.短期转势预警信号:K值和D值上升或者下跌的速度减弱,倾斜度趋于平缓

通常K、D、J三值在20-80之间为徘徊区,宜观望.

就敏感度而言,最强的是J值,其次是K,最慢的则是D了,而从安全性来讲,就刚刚相反。

KDJ策略

import numpy as np
import pandas as pd
from pandas import DataFrame
import talib as ta
 
start = ‘2006-01-01’                        # 回测起始时间
end = ‘2015-08-17’                          # 回测结束时间
benchmark = ‘HS300’                         # 策略参考标准
universe = set_universe(‘HS300’)
capital_base = 100000                        # 起始资金
refresh_rate = 1                           # 调仓频率,即每 refresh_rate 个交易日执行一次 handle_data() 函数
longest_history=20
MA=[5,10,20,30,60,120]                       #移动均线参数
 
def initialize(account):
    account.kdj=[]
    
def handle_data(account):  
   
    # 每个交易日的买入卖出指令
    
    sell_pool=[]
    hist = account.get_history(longest_history)
        #data=DataFrame(hist[‘600006.XSHG’])
    stock_pool,all_data=Get_all_indicators(hist)
    pool_num=len(stock_pool)
    if account.secpos==None:
        print ‘null’
        for i in stock_pool:
            buy_num=int(float(account.cash/pool_num)/account.referencePrice[i]/100.0)*100 
            order(i, buy_num)
    else:
        
        for x in account.valid_secpos:
            if all_data[x].iloc[-1][‘closePrice’]<all_data[x].iloc[-1][‘ma1’] and (all_data[x].iloc[-1][‘ma1’]-all_data[x].iloc[-1][‘closePrice’])/all_data[x].iloc[-1][‘ma1’]>0.05 :
                sell_pool.append(x)
                order_to(x, 0)
     
        if account.cash>500 and pool_num>0:
            
            try:
                sim_buy_money=float(account.cash)/pool_num
                for l in stock_pool:
                    #print sim_buy_money,account.referencePrice[l]
            
                    buy_num=int(sim_buy_money/account.referencePrice[l]/100.0)*100
           
                    #buy_num=10000
                    order(l, buy_num)
            except Exception as e:
                #print e
                pass

def Get_kd_ma(data):
    indicators={}
    #计算kd指标
    indicators[‘k’],indicators[‘d’]=ta.STOCH(np.array(data[‘highPrice’]),np.array(data[‘lowPrice’]),np.array(data[‘closePrice’]),\
    fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)
    indicators[‘ma1’]=pd.rolling_mean(data[‘closePrice’], MA[0])
    indicators[‘ma2’]=pd.rolling_mean(data[‘closePrice’], MA[1])
    indicators[‘ma3’]=pd.rolling_mean(data[‘closePrice’], MA[2])
    indicators[‘ma4’]=pd.rolling_mean(data[‘closePrice’], MA[3])
    indicators[‘ma5’]=pd.rolling_mean(data[‘closePrice’], MA[4])
    indicators[‘closePrice’]=data[‘closePrice’]
    indicators=pd.DataFrame(indicators)
    return indicators
 
def Get_all_indicators(hist):
    stock_pool=[]
    all_data={}
    for i in hist:
        try:
            indicators=Get_kd_ma(hist[i])
            all_data[i]=indicators
        except Exception as e:
            #print ‘error:%s’%e
            pass
        if indicators.iloc[-2][‘k’]<indicators.iloc[-2][‘d’] and indicators.iloc[-1][‘k’]>indicators.iloc[-2][‘d’]:
            stock_pool.append(i)
        elif indicators.iloc[-1][‘k’]>=10 and indicators.iloc[-1][‘d’]<=20 and indicators.iloc[-1][‘k’]>indicators.iloc[-2][‘k’] and indicators.iloc[-2][‘k’]<indicators.iloc[-3][‘k’]:
            stock_pool.append(i)
    return stock_pool,all_data

券商接口量化交易策略——KDJ指标相关推荐

  1. 【量化交易】KDJ指标实现

    [量化交易]KDJ指标实现 指标说明 指标原理 计算步骤 Python指标实现 利用Tushare获取数据源 平台介绍 获取数据源 利用Python实现指标计算 指标说明 指标原理 KDJ指标又称为随 ...

  2. 量化交易策略——CCI指标

    20世纪80年代,美国股市分析家唐纳德·蓝伯特(Donald Lambert)发明了顺势指标,即CCI指标,早期被用于期货市场的判断,后来被广泛应用在股票市场的研判.与大多数技术分析指标相比,根据统计 ...

  3. sar偏移量追踪技术_SAR指标配合阶段高低价的量化交易策略

    SAR指标 抛物线SAR指标试图通过突出资产移动的方向以及提供进入和退出点来为交易者提供优势.在本文中,我们将介绍该指标的基础知识,并向您展示如何将其纳入您的量化交易策略.我们还将看一下该指标的一些缺 ...

  4. 哪些券商支持api接口量化交易

    现在可以做api接口量化交易的公司确实是不多的,但是市场上有几家上市券商领先行业,可以支持PTrade和QMT两个量化交易软件的接口,是可以实现网格交易的,软件是有两个版本,一个是普通版本,一个是专业 ...

  5. 为什么股票量化交易策略可以归类为均值回归与动量策略?

    大部分股票量化交易策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的,交易将无利可图.均值回归是金融学的一个重要概念,指股票价格无论 ...

  6. 《量化炼金术-中低频量化交易策略研发》读书笔记-序言,引言

    序言: 1.'圣杯'的找寻 2.策略复制性的强大 3.策略的时效性和解释能力的周期性 4.量化的本质是将思维转化为数理化规则,借由代码为工具进行直观表述 5.量化流程设计与思考,量化策略构建 6.本书 ...

  7. 常见的量化交易策略和源码编写过程分享

    今天给大家分享的内容是基于Python编程,实现股票交易接口相关功能开发,如果读者对股票或金融衍生物交易不太了解,又比较感兴趣的话可自行查询相关资料. 接下来笔者会给大家介绍股票交易中的常见几种量化交 ...

  8. “泰迪杯” 挑战赛 - 基于市场资金流向分析的商品期货量化交易策略(附suibian代码)

    目录 基于市场资金流向分析的 Suibian 期货策略 摘要 1 问题重述 1.1 问题重述 2 符号说明及名字定义 3 问题分析与求解 3.1 资金流向指标的定义 3.2 持仓量.成交量和价格的关系 ...

  9. QUANT[2]:量化交易策略基本框架搭建

    本文是量化交易教程的第二篇 (原文写的比较简单,编程的详解部分面向没有编程基础的人) QUANT[1]:从零开始量化交易 - プロノCodeSteel - CSDN博客 QUANT[2]:量化交易策略 ...

最新文章

  1. python des解密_python实现DES加密解密方法实例详解
  2. Android应用开发-广播和服务
  3. 逻辑判断 java_写 JS 逻辑判断,不要只知道用 if-else 和 switch
  4. Nutch2.1+mysql+solr3.6.1+中文网站抓取
  5. c语言块级作用域_块级作用域问题ES5 ES6
  6. Alpha版会议总结
  7. js结合css3,使用JS和CSS3实现的旗帜飘扬动画
  8. 华为服务器怎么查看系统日志,华为日志服务器
  9. 获取网站投资(融资成功)的20个自我检查
  10. 高文院士:从“乡村教师”到人工智能掌舵者的40年科研路
  11. Java Socket笔记-udpSocket简单收发包
  12. 承认吧,你就是不行!
  13. OpenNESS,开源的边缘网络服务平台
  14. win11开机音效设置的方法
  15. Windows 10 耳机插入前面板没反应的解决方案
  16. 10+ 张图来探究 Linux 内核,以及如何高效学习
  17. 原神3.2剧情服搭建教程
  18. 谷歌商店输入账号密码后 回到登录界面/闪退
  19. 删除姓名、年龄重复的记录——数据库
  20. vue 如何实现多页面应用(简单版)

热门文章

  1. Codeforces Round #616 (Div. 2)B. Array Sharpening
  2. 假如,我来做一款产品?
  3. D-OJ刷题日记:将十进制数转换成八进制数 题目编号:545
  4. MyBatis基础原理
  5. Javascript脚本运行的方式(js写在页面什么地方)
  6. linux lsof命令和ps的,Linux 中lsof 命令的使用
  7. 文件夹选择框 文件选择框
  8. js将字符串转换为数字
  9. 用牛顿迭代法求方程的根matlab,牛顿迭代法求方程根的MATLAB程序
  10. 深入浅出pytorch