Python全系列 教程
3567个小节阅读:5931.1k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
KD指标也叫作“随机指标”。
KD指标计算:
计算“未成熟随机值”RSV
计算K值(组成快线)
计算D值(组成慢线)
RSV计算结果会介于0 ~100之间,如果RSV结果越大,表示今日收盘价越接近过去9天内
股价的高点;反之,RSV结果越小,则代表今日收盘价越接近过去9天内股价的低点。
K值是以今日RSV与昨日K值的加权平均,由于K值反应较为灵敏,因此K值组成了快线。
D值则是再一次把加权平均过的K值与昨日D值再一次平滑,因此D值反应较不灵敏,组
成了慢线。
实现K在20左右向上交叉D时,买入股票;K在80左右向下交叉D时,卖出股票
xxxxxxxxxx
# 导入函数库
import jqdata
from jqlib.technical_analysis import *
# 初始化函数
def initialize(context):
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price',True)
log.info('初始化函数开始运行,且全局只运行一次')
'''
set_order_cost()是用来设置佣金/印花税的函数,用来设定每笔交易收取的手续费
第一个参数是OrderCost对象,各项子参数意义如下:
open_tax,买入时印花税(只有股票类标的收取,基金与期货不收)
close_tax,卖出时印花税(只有股票类标的收取,基金与期货不收)
open_commission,买入时佣金
close_commission,卖出时佣金
close_today_commission,平今仓佣金
min_commission,最低佣金,不包含印花税
第二个参数type是类型,'stock'代表股票
'''
set_order_cost(OrderCost(close_tax=0.001,open_commission=0.0003,close_commission=0.0003,min_commission=5),type='stock')
# 开盘前运行,reference_security参数代表运行时间的参考标的
run_daily(before_market_open,time='before_open',reference_security='000300.XSHG')
# 开盘时运行
run_daily(market_open,time='open',reference_security='000300.XSHG')
# 收盘后运行
run_daily(after_market_close,time='after_close',reference_security='000300.XSHG')
# 开盘前运行函数
def before_market_open(context):
# 输出运行时间
log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
# 给投资者发送消息
send_message('美好的一天,祝您交易顺利!')
# 将要操作的股票保存到全局变量中(g.全局变量)
# '000538.XSHE':云南白药
g.security = '000538.XSHE'
# 收盘后运行函数
def after_market_close(context):
log.info(str('函数运行时间(after_market_close):')+str(context.current_dt.time()))
# 得到当天所有成交记录
trades = get_trades()
for _trade in trades.values():
log.info('成交记录:'+str(_trade))
log.info('一天的交易结束,祝您心情愉快!')
# 开盘时运行函数
def market_open(context):
log.info('函数运行时间(market_open):'+str(context.current_dt.time()))
security = g.security
# 调用KD函数,获取该函数的K值和D值
K1,D1 = KD(security,check_date=context.current_dt,N=9,M1=3,M2=3)
K = K1[security]
D = D1[security]
# 取得当前的现金
cash = context.portfolio.available_cash
# 如果K在20左右向上交叉D时,则全仓买入
if K >= 20 and K > D:
# 记录这次买入
log.info('买入股票%s'%(security))
# 用所有cash买入股票
order_value(security,cash)
# 如果K在80左右向下交叉D,并且还有剩余的仓位
elif K <= 80 and K < D and context.portfolio.positions[security].closeable_amount > 0:
# 记录这次卖出
log.info('卖出股票:%s'%(security))
# 卖出所有股票,使这只股票的最终持有量为0
order_target(security,0)