全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
11753 6
2015-11-27
量化策略实现平台JoinQuant(https://www.joinquant.com/

欢迎大神拍砖。

Stochastic Oscillator Slow (Stoch)更直接的理解就是我们常用的KDJ指标中的KD指标。是由两条线一条是快速确认线,另外一条是慢速主干线组成。可以参考链接Talib推荐STOCH参考
计算方法:
随机线有四种,分别是: FASTK, FASTD, SLOWK and SLOWD,D是由K经过变化得到。具体计算如下图。

使用方法:
K线是快速确认线——数值在90以上为超买,数值在10以下为超卖;
D线是慢速主干线——数值在90以上为超买,数值在10以下为超卖;

bias.jpg

#此例子采用Talib提供的STOCH(Stochastic Oscillator Slow),更直接的理解他就是我们常用的KDJ指标中的KD指标。
#     是由两条线一条是快速确认线,另外一条是慢速主干线组成。
#K线是快速确认线——数值在90以上为超买,数值在10以下为超卖;
#     D线是慢速主干线——数值在90以上为超买,数值在10以下为超卖;
import talib
#import numpy as np
#     import pandas as pd

def initialize(context):
    # 定义一个全局变量, 保存要操作的证券
    context.stocks = [&#     39;601328.XSHG',&#     39;600036.XSHG',&#     39;600196.XSHG',&#     39;600010.XSHG']
    #      设置我们要操作的股票池
    set_universe(context.stocks)
# 初始化此策略
def handle_data(context, data):
    #      取得当前的现金
    cash = context.portfolio.cash
    # 循环股票列表
    for stock in context.stocks:
        #      获取股票的数据
        h = attribute_history(stock, 30, '1d&#     39;, ('high&#     39;,'low&#     39;,'close&#     39;))
        # 创建STOCH买卖信号,包括最高价,最低价,收盘价和快速线(一般取为9),慢速线
        #      注意:STOCH函数使用的price必须是narray
        slowk, slowd = talib.STOCH(h['high&#     39;].values,
                                   h['low&#     39;].values,
                                   h['close&#     39;].values,
                                   fastk_period=9,
                                   slowk_period=3,
                                   slowk_matype=0,
                                   slowd_period=3,
                                   slowd_matype=0)
        # 获得最近的kd值
        slowk = slowk[-1]
        slowd = slowd[-1]
        #      获取当前股票的数据
        current_position = context.portfolio.positions[stock].amount
        # 获取当前股票价格
        current_price = data[stock].price
        #      当slowk > 90 or slowd > 90,且拥有的股票数量>=0时,卖出所有股票
        if slowk > 90 or slowd > 90 and current_position >= 0:
            order_target(stock, 0)
        # 当slowk < 10 or slowd < 10, 且拥有的股票数量<=0时,则全仓买入
        elif slowk < 10 or slowd < 10 and current_position <= 0:
            number_of_shares = int(cash/current_price)
            #      购买量大于0时,下单
            if number_of_shares > 0:
                # 买入股票
                order(stock, +number_of_shares)
                #      记录这次买入
                log.info("Buying %s&#    34; % (stock))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-12-2 18:54:14
还不错噢,可以考虑下KD的其他用法或者和均线结合
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-2 19:01:27
不错呦!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-3 20:23:07
顶一顶顶一顶
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-7 21:31:34
感谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-9 11:46:51
支持分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群