: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

鼎元C++期货量化/程序化教程【随机指标(Stochastic Oscillator,KDJ)的计算方法及调用方法】

鼎元C++期货量化/程序化教程【随机指标(Stochastic Oscillator,KDJ)的计算方法及调用方法】

第一部分、简介与计算原理

KDJ指标的中文名称又叫随机指标,最早起源于期货市场,由乔治·莱恩(George Lane)首创。随机指标KDJ最早是以KD指标的形式出现,而KD指标是在威廉指标的基础上发展起来的。不过KD指标只判断股票的超买超卖的现象,在KDJ指标中则融合了移动平均线速度上的观念,形成比较准确的买卖信号依据。在实践中,K线与D线配合J线组成KDJ指标来使用。KDJ指标在设计过程中主要是研究最高价、最低价和收盘价之间的关系,同时也融合了动量观念、强弱指标和移动平均线的一些优点。因此,能够比较迅速、快捷、直观地研判行情,被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。



论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

第一部分:头文件:
  1.         double hhv(vector<double> pc, int num);
  2.         double llv(vector<double> pc, int num);
复制代码
  1.         vector<double>highs, lows,rsv, KValue, DValue, JValue,highesthigh,lowestlow;
  2.         int period;
  3.         double smoothingFactor;
  4.         vector<double> K, D, J ;
复制代码
ode]

第二部分:源文件主程序部分:
  1. double k1 = 50, d1 = 50, j1 = 0, r1 = 0;
  2.         RsqBar(sPeriod, sInst);
  3.         map<string, TKVALUE >::iterator it;
  4.         for (it = mapK[sPeriod][sInst].begin(); it != mapK[sPeriod][sInst].end(); ++it)
  5.         {
  6.                 pc.push_back(it->second.dClose);
  7.                 if (pc.size() <= 9)
  8.                 {
  9.                         r1 = 0;
  10.                         k1 = 50;
  11.                         d1 = 50;
  12.                         j1 = 50;
  13.                 }
  14.                 else
  15.                 {
  16.                         rsv = (it->second.dClose - llv(pc,9))/(hhv(pc,9) - llv(pc,9)) * 100;
  17.                         k1 = 2 / 3 * k1 + rsv / 3;
  18.                         d1 = 2 / 3 * d1 + rsv / 3;
  19.                         j1 = 3 * d1 - 2 * rsv;
  20.                 }
  21.                 KValue.push_back(k1);
  22.                 DValue.push_back(d1);
  23.                 JValue.push_back(j1);
  24.         }
  25.         for (int i = 1; i <= 9; i++)
  26.         {
  27.                 InsertLog("Jvalue" + to_string(JValue[JValue.size() - i]));
  28.         }
  29.              InsertLog("最新Kvalue " + to_string(KValue[KValue.size() - 1]) + "最新Dvalue " + to_string(DValue[DValue.size() - 1]) + "最新Jvalue " + to_string(JValue[JValue.size() - 1]));
复制代码
第三部分:指标区主要核心部分:
  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////KDJ公式计算
  2. double test::hhv(vector<double> pc, int num)
  3. {
  4.         double d = 0;
  5.         for (int i = pc.size()-1; i >= pc.size() - num; i--)
  6.         {
  7.                 d = max2(d, pc[i]);
  8.         }
  9.         return d;
  10. }

  11. double test::llv(vector<double> pc, int num)
  12. {
  13.         double d1 = 999999;
  14.         for (int i = pc.size()-1; i >= pc.size() - num; i--)
  15.         {
  16.                 d1 = min2(d1, pc[i]);
  17.         }
  18.         return d1;
  19. }
  20. ////////////////////////////////////////////////////////////////////////////////////////////////////////////KDJ公式计算
复制代码
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

这里面的难点是计算rsv的部分,这个指标还是有些问题我没有搞明白,大家可以先放一下,我弄好了会在这里做说明。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

返回列表