From f972041e15d3a7c4f306b5614e42844f9bdd1ce0 Mon Sep 17 00:00:00 2001 From: fs714 Date: Thu, 24 Mar 2016 18:39:17 +0800 Subject: [PATCH] Add more comments --- .gitignore | 3 + ChanlunCore.cpp | 590 ++++++++++++++++++++++++------------------------ ChanlunCore.h | 122 +++++----- FxjFunc.plg | 37 ++- 4 files changed, 381 insertions(+), 371 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7ed9e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +Debug/ +dll/ + diff --git a/ChanlunCore.cpp b/ChanlunCore.cpp index 90b539d..34d5cc0 100644 --- a/ChanlunCore.cpp +++ b/ChanlunCore.cpp @@ -10,8 +10,8 @@ const int ChanlunCore::DIR_UP = 1; const int ChanlunCore::DIR_DN = -1; const int ChanlunCore::DIR_XBH = -2; const int ChanlunCore::DIR_SBH = 2; -const int ChanlunCore::QK_N = 0; // 不存在缺口 -const int ChanlunCore::QK_Y = 1; // 存在缺口 +const int ChanlunCore::QK_N = 0; // 不存在缺口 +const int ChanlunCore::QK_Y = 1; // 存在缺口 ChanlunCore::ChanlunCore() { @@ -38,46 +38,47 @@ ChanlunCore* ChanlunCore::GetInstance() return instance; } +// 初始化笔缺口 void ChanlunCore::initBiQK(CALCINFO* pData) { + // Question const qk = 0.005; if(NULL == pData) return; switch(pData->m_dataType) { - case MIN1_DATA: // 1F + case MIN1_DATA: // 1分钟线 biQuekou = qk; - case MIN5_DATA: //5分钟线 + case MIN5_DATA: // 5分钟线 biQuekou = qk * 3; - case MIN15_DATA: //15分钟线 + case MIN15_DATA: // 15分钟线 biQuekou = qk * 6; - case MIN30_DATA: //30分钟线 + case MIN30_DATA: // 30分钟线 biQuekou = qk * 9; - case MIN60_DATA: //60分钟线 + case MIN60_DATA: // 60分钟线 biQuekou = qk * 18; - case DAY_DATA: //日线 + case DAY_DATA: // 日线 biQuekou = qk * 30; - case WEEK_DATA: //周线 + case WEEK_DATA: // 周线 biQuekou = qk * 90; - case MONTH_DATA: //月线 + case MONTH_DATA: // 月线 biQuekou = qk * 250; - //case YEAR_DATA: //没有年线?? - // biQuekou = qk * 1000; - + // case YEAR_DATA: //没有年线?? + // biQuekou = qk * 1000; default: biQuekou = qk * 1000; } } +// 初始化K线及其包含关系 void ChanlunCore::initKx(CALCINFO* pData) { if(!kxData.empty()) kxData.clear(); - if (NULL != pData && pData->m_nNumData>0) + if (NULL != pData && pData->m_nNumData>0) { initBiQK(pData); - float h=0, l=0, h1=0, l1=0; int dir = 0; @@ -88,7 +89,9 @@ void ChanlunCore::initKx(CALCINFO* pData) h = pData->m_pData[dt, i].m_fHigh; l = pData->m_pData[dt, i].m_fLow; */ + // 处理包含关系 + // 如果前两根K线具有包含关系,按照向上走势处理 for(int i=0; im_nNumData; i++) { h = pData->m_pData[i].m_fHigh; @@ -106,12 +109,9 @@ void ChanlunCore::initKx(CALCINFO* pData) dir = DIR_SBH; } - - } else if (dir < DIR_0) { - // 存在包含关系 if ((h>=h1 && l<=l1) || (h<=h1 && l>=l1)) @@ -122,8 +122,6 @@ void ChanlunCore::initKx(CALCINFO* pData) dir = DIR_XBH; } - - } if(h>h1 && l>l1) @@ -134,6 +132,7 @@ void ChanlunCore::initKx(CALCINFO* pData) dir = DIR_DN; } + // TODO: low和rlow,high和rhigh都永远相等? ckx kx; kx.low = l; kx.high = h; @@ -149,213 +148,257 @@ void ChanlunCore::initKx(CALCINFO* pData) h1 = h; l1 = l; + // 每根K线都会被push回kxData,但是它的高点和低点是合并后的值 kxData.push_back(kx); } } } +// 初始化分型 void ChanlunCore::initFX() { - int kxnum = kxData.size(); - if(kxnum <= 5) return; + int kxnum = kxData.size(); + if(kxnum <= 5) return; - int i = 0, j = 0, k = 0; + int i = 0, j = 0, k = 0; - float h = 0, h11 = 0, h12 = 0, h13 = 0, h21 = 0; - float l = 0, l11 = 0, l12 = 0, l13 = 0, l21 = 0; - float p31 = 0, p32 = 0, p33 = 0, quekou = 0; - bool tjg1 = false, tjd1 = false, tjc = false; - - int jg = 0, jg2 = 0; // 至少5根K线 - int gdnum = 0; //顶底数量 + float h = 0; // 当前K线的高点 + float h11 = 0; // 当前K线前面第1根的高点 + float h12 = 0; // 当前K线前面第2根的高点 + float h13 = 0; // 当前K线前面第3根的高点 + float h21 = 0; // 当前K线后面第1根的高点 + float l = 0; // 当前K线的低点 + float l11 = 0; // 当前K线前面第1根的低点 + float l12 = 0; // 当前K线前面第2根的低点 + float l13 = 0; // 当前K线前面第3根的低点 + float l21 = 0; // 当前K线后面第1根的低点 + + float p31 = 0, p32 = 0, p33 = 0, quekou = 0; + bool tjg1 = false, tjd1 = false, tjc = false; + + // 间隔(jg) + int jg = 0, jg2 = 0; // 至少5根K线 + int gdnum = 0; //顶底数量 - int tj_jg = 3, tj_jg2 = 3; - //if (pData->m_dataType > WEEK_DATA) tj_jg = 4; + int tj_jg = 3, tj_jg2 = 3; + //if (pData->m_dataType > WEEK_DATA) tj_jg = 4; - CKXIT kx, kxt, kxl, kxlg, kxld; + CKXIT kx, kxt, kxl, kxlg, kxld; - kx = kxData.begin(); - kx = getCKX(2); + kx = kxData.begin(); + kx = getCKX(2); - // 标出顶底分型 - for(i=2; idir || DIR_UP==kx->dir) jg2++; // 处理包含关系后的间隔 + // 标出顶底分型 + for(i=2; idir || DIR_UP==kx->dir) jg2++; // 处理包含关系后的间隔 + + h11 = 0, h12 = 0, h13 = 0, h21 = 0, l11 = 0, l12 = 0, l13 = 0, l21 = 0, p31 = 0, p32 = 0, p33 = 0; + tjg1 = false, tjd1 = false; - h11 = 0, h12 = 0, h13 = 0, h21 = 0, l11 = 0, l12 = 0, l13 = 0, l21 = 0, p31 = 0, p32 = 0, p33 = 0; + h = kx->high; + l = kx->low; + + j = i; + kxt = kx; + // 基于合并后每根K线的属性,找到和当前K线高点一样的第一根K线的前一根 + do { + j = j - 1; + if(j>0) + { + kxt--; + h11 = kxt->high; + l11 = kxt->low; + } + } while(h11 == h && j>0); + + // 前面第2根 + // Question: 为什么不考虑合并的情况 + j = j - 1; + if(j>0) + { + kxt--; + h12 = kxt->high; + } - tjg1 = false, tjd1 = false; + // 前面第3根 + j = j - 1; + if(j>0) + { + kxt--; + h13 = kxt->high; + } - h = kx->high; - l = kx->low; + k = i; + kxt = kx; + // 基于合并后每根K线的属性,找到和当前K线高点一样的最后一根K线的后一根 + do { + k = k + 1; + if(khigh; + l21 = kxt->low; + } + } while(h21 == h && k 顶分的前2根K线的高点 + tjg1 = h>h11 && h>h21 && h>h12 && h>h13; + // 非顶 + if(!tjg1) + { j = i; kxt = kx; - // 前第一个高点 + // 基于合并后每根K线的属性,找到和当前K线低点一样的第一根K线的前一根 do { j = j - 1; - if(j>0) + if(j>0) { kxt--; h11 = kxt->high; l11 = kxt->low; - } - } while(h11 == h && j>0); - // 前第二个高点 - j = j - 1; - if(j>0) - { - kxt--; - h12 = kxt->high; - } - - // 前第三个高点 - j = j - 1; - if(j>0) - { - kxt--; - h13 = kxt->high; - } + } + } while(l11 == l && j>0); + + // 前面第2根 + j = j - 1; + if(j>0) + { + kxt--; + h12 = kxt->high; + l12 = kxt->low; + } + + // 前面第3根 + j = j - 1; + if(j>0) + { + kxt--; + h13 = kxt->high; + l13 = kxt->low; + } k = i; kxt = kx; - // 后第一个高点 + // 基于合并后每根K线的属性,找到和当前K线低点一样的最后一根K线的后一根 do { k = k + 1; - if(khigh; + h21 = kxt->high; l21 = kxt->low; } - } while(h21 == h && k顶分的前2根K线的高点 - tjg1 = h>h11 && h>h21 && h>h12 && h>h13 ; - - // 非顶 - if(!tjg1) - { - j = i; - kxt = kx; - // 前第一个低点 - do { - j = j - 1; - if(j>0) - { - kxt--; - h11 = kxt->high; - l11 = kxt->low; - } - } while(l11 == l && j>0); - // 前第2个低点 - j = j - 1; - if(j>0) + } while(l21 == l && khigh; - l12 = kxt->low; - } - - // 前第3个低点 - j = j - 1; - if(j>0) + kx->flag = DIR_UP; + kxlg = kx; + } + else if (tjd1) { - kxt--; - h13 = kxt->high; - l13 = kxt->low; - } - - - k = i; - kxt = kx; - // 后第一个低点 - do { - k = k + 1; - if(khigh; - l21 = kxt->low; - } - } while(l21 == l && kflag = DIR_DN; + kxld = kx; + } + kxl = kx; + gdnum++; + jg = 1; + jg2 = 1; + } + else { - if (0 == gdnum) + if (tjg1) { - // 第一个分型 - if (tjg1) + // 计算边界 + // Question: 分型区间的定义 + kxt = kx; + kxt--; + p31 = kxt->low; + kx->fxqj = p31; + // 如果存在缺口 缺口边界就未本K线的顶底 (上涨缺口) + + if (i>1) { - kx->flag = DIR_UP; - kxlg = kx; + j = i - 1; + //quekou = pData->m_pData[i].m_fLow - pData->m_pData[j].m_fHigh; + quekou = kx->rlow - kxt->rhigh; + if(quekou >= biQuekou) + { + kx->fxqj = kx->low; + } } - else if (tjd1) + + // 顶接顶 价高为新顶 + if(DIR_UP == kxl->flag) { - kx->flag = DIR_DN; - kxld = kx; + if(kx->high > kxl->high) + { + kx->flag = DIR_UP; + gdnum++; + jg = 1; + //jg2 = 1; + + kxl->flag = DIR_SBH; + kxl = kx; + kxlg = kx; + } + else + { + //kx->flag = DIR_SBH; + } } - kxl = kx; - gdnum++; - jg = 1; - jg2 = 1; - } - else - { - if (tjg1) + else { - // 计算边界 - kxt = kx; - kxt--; - p31 = kxt->low; - kx->fxqj = p31; - // 如果存在缺口 缺口边界就未本K线的顶底 (上涨缺口) - - if (i>1) + // 底接顶 + // 包含后的K线至少3跟 构成顶分 最高值必须大于前低分高(不再顶的分型区间内) + if(jg >= tj_jg && kx->high > kxl->fxqj && kx->fxqj > kxl->low) { - j = i - 1; - //quekou = pData->m_pData[i].m_fLow - pData->m_pData[j].m_fHigh; - quekou = kx->rlow - kxt->rhigh; - if(quekou >= biQuekou) - { - kx->fxqj = kx->low; - } + kx->flag = DIR_UP; + gdnum++; + jg = 1; + jg2 = 1; + + kxl = kx; + kxlg = kx; } - - - // 顶接顶 价高为新顶 - if(DIR_UP == kxl->flag) + else if(jg == 2) { - if(kx->high > kxl->high) + // 1 存在缺口(上涨) 2 大于前顶 + if(i>1 && quekou >= biQuekou) { + // 存在缺口 顶分成立 前底分也有效 kx->flag = DIR_UP; gdnum++; jg = 1; - //jg2 = 1; + jg2 = 1; - kxl->flag = DIR_SBH; - kxl = kx; + kxl = kx; kxlg = kx; } - else - { - //kx->flag = DIR_SBH; - } - } - else - { - // 底接顶 - // 包含后的K线至少3跟 构成顶分 最高值必须大于前低分高(不再顶的分型区间内) - if(jg >= tj_jg && kx->high > kxl->fxqj && kx->fxqj > kxl->low) + else if(gdnum>=4 && quekou < biQuekou && kx->high > kxlg->high) { + // 大于前顶, 前底失效 前顶失效 kx->flag = DIR_UP; + kxlg->flag = DIR_SBH; + kxld->flag = DIR_0; + gdnum++; jg = 1; jg2 = 1; @@ -363,85 +406,82 @@ void ChanlunCore::initFX() kxl = kx; kxlg = kx; } - else if(jg == 2) - { - - // 1 存在缺口(上涨) 2 大于前顶 - - if(i>1 && quekou >= biQuekou) - { - // 存在缺口 顶分成立 前底分也有效 - kx->flag = DIR_UP; - gdnum++; - jg = 1; - jg2 = 1; - - kxl = kx; - kxlg = kx; - } - else if(gdnum>=4 && quekou < biQuekou && kx->high > kxlg->high) - { - // 大于前顶, 前底失效 前顶失效 - kx->flag = DIR_UP; - kxlg->flag = DIR_SBH; - kxld->flag = DIR_0; - - gdnum++; - jg = 1; - jg2 = 1; - - kxl = kx; - kxlg = kx; - - } - } } } - else if (tjd1) + } + else if (tjd1) + { + // 计算边界 + kxt = kx; + kxt--; + p31 = kxt->high; + kx->fxqj = p31; + // 如果存在缺口 缺口边界就未本K线的顶底 (下跌缺口) + if(i>1) { - // 计算边界 - kxt = kx; - kxt--; - p31 = kxt->high; - kx->fxqj = p31; - // 如果存在缺口 缺口边界就未本K线的顶底 (下跌缺口) - if(i>1) + j = i - 1; + //quekou = -(pData->m_pData[i].m_fHigh - pData->m_pData[j].m_fLow); + quekou = -(kx->rhigh - kxt->rlow); + if(quekou>=biQuekou) { - j = i - 1; - //quekou = -(pData->m_pData[i].m_fHigh - pData->m_pData[j].m_fLow); - quekou = -(kx->rhigh - kxt->rlow); - if(quekou>=biQuekou) - { - kx->fxqj = kx->high; - } + kx->fxqj = kx->high; } + } - - // 底接底 价低为新底 - if(DIR_DN == kxl->flag) + // 底接底 价低为新底 + if(DIR_DN == kxl->flag) + { + if(kx->low < kxl->low) + { + kx->flag = DIR_DN; + gdnum++; + jg = 1; + jg2 = 1; + + kxl->flag = DIR_XBH; + kxl = kx; + kxld = kx; + } + else + { + //kx->flag = DIR_XBH; + } + } + else + { + // 顶接底 包含后的K线至少3 构成底分 最低值必须小于前顶低 不再顶区间内 + if(jg >= tj_jg && kx->low < kxl->fxqj && kx->fxqj < kxl->high) + { + kx->flag = DIR_DN; + gdnum++; + jg = 1; + jg2 = 1; + + kxl = kx; + kxld = kx; + } + else if(jg == 2) { - if(kx->low < kxl->low) + // 1 存在缺口(下跌) 2 小于前底 + if(i>1 && quekou >= biQuekou) { + // 存在缺口 顶分成立 前底分也有效 kx->flag = DIR_DN; gdnum++; jg = 1; jg2 = 1; - kxl->flag = DIR_XBH; kxl = kx; kxld = kx; } - else - { - //kx->flag = DIR_XBH; - } - } - else - { - // 顶接底 包含后的K线至少3 构成底分 最低值必须小于前顶低 不再顶区间内 - if(jg >= tj_jg && kx->low < kxl->fxqj && kx->fxqj < kxl->high) + + else if(gdnum>=4 && quekou < biQuekou && kx->low < kxld->low) { + // 大于前顶, 前底失效 前顶失效 kx->flag = DIR_DN; + kxld->flag = DIR_XBH; + kxlg->flag = DIR_0; + gdnum++; jg = 1; jg2 = 1; @@ -449,68 +489,36 @@ void ChanlunCore::initFX() kxl = kx; kxld = kx; } - else if(jg == 2) - { - // 1 存在缺口(下跌) 2 小于前底 - if(i>1 && quekou >= biQuekou) - { - // 存在缺口 顶分成立 前底分也有效 - kx->flag = DIR_DN; - gdnum++; - jg = 1; - jg2 = 1; - - kxl = kx; - kxld = kx; - } - - else if(gdnum>=4 && quekou < biQuekou && kx->low < kxld->low) - { - // 大于前顶, 前底失效 前顶失效 - kx->flag = DIR_DN; - kxld->flag = DIR_XBH; - kxlg->flag = DIR_0; - - gdnum++; - jg = 1; - jg2 = 1; - - kxl = kx; - kxld = kx; - } - } } - } - } - } // end 顶底 - else - { - // do nothing - } // end else 非顶底 - - - } // end for 标出顶底分型 - - - // 当下 - kxt = kxData.end(); - kxt--; // 最后一根K线 - // 非顶 非底 用于判断当下 顶底未成之前 - // 创新高 低 必然产生新的高点和低点 去掉前一个高低点 注意必须是高高 低低 - if (DIR_UP == kxl->flag) - { - if(kxt->high > kxl->high) - { - kxl->flag = DIR_SBH; + } + } } + } // end 顶底 + else + { + // do nothing + } // end else 非顶底 + } // end for 标出顶底分型 + + // 当下 + kxt = kxData.end(); + kxt--; // 最后一根K线 + // 非顶 非底 用于判断当下 顶底未成之前 + // 创新高 低 必然产生新的高点和低点 去掉前一个高低点 注意必须是高高 低低 + if (DIR_UP == kxl->flag) + { + if(kxt->high > kxl->high) + { + kxl->flag = DIR_SBH; } - else if(DIR_DN == kxl->flag) + } + else if(DIR_DN == kxl->flag) + { + if (kxt->low < kxl->low) { - if (kxt->low < kxl->low) - { - kxl->flag = DIR_XBH; - } - } + kxl->flag = DIR_XBH; + } + } } CKXIT ChanlunCore::getCKX(int num) diff --git a/ChanlunCore.h b/ChanlunCore.h index 28e21ad..334a0f1 100644 --- a/ChanlunCore.h +++ b/ChanlunCore.h @@ -1,75 +1,76 @@ /************************************************************************/ /* 缠论核心模块实现 -单例模式 -所有Chanlun接口中缠论核心函数在此实现 - */ +单例模式 +所有Chanlun接口中缠论核心函数在此实现 +*/ /************************************************************************/ #ifndef __CHANLUNCORE_H_INCLUDE #define __CHANLUNCORE_H_INCLUDE #include "FxjFunc.h" #include - + using namespace std; -//定义基本数据 -// 缠论K线结构 处理过包含关系的K线 +// 定义基本数据 +// 缠论K线结构 +// 处理过包含关系的K线 typedef struct chankx { int no; // K线序号 从1开始是 float rhigh; // 高值 float rlow; // 低值 - float high; //包含处理后的高值 - float low; //包含处理后的低值 - int flag; //1顶 -1底 0 非顶底 - float fxqj; // 分型区间 如果为顶底 记录区间边界 - int dir; //K线方向 1上 -1下 2 上包含 -2 下包含 - int bi; //笔 1上 -1下 2 上包含 -2 下包含 - int duan; //段 1上 -1下 2 上包含 -2 下包含 + float high; // 包含处理后的高值 + float low; // 包含处理后的低值 + int flag; // 1顶 -1底 0 非顶底 + float fxqj; // 分型区间 如果为顶底 记录区间边界 + int dir; // K线方向 1上 -1下 2 上包含 -2 下包含 + int bi; // 笔 1上 -1下 2 上包含 -2 下包含 + int duan; // 段 1上 -1下 2 上包含 -2 下包含 } ckx; // 笔 (特征序列) typedef struct chanbi { - int no; // 序号 - int noh; // 高点K线编号 - int nol; // 低点K线编号 - float high; // 高点 - float low; // 低点 - int dir; // 方向 方向 1上 -1下 2 上包含 -2 下包含 - int flag; // 1顶 -1底 - int qk; // 特征1 2 之间是否存在缺口 + int no; // 序号 + int noh; // 高点K线编号 + int nol; // 低点K线编号 + float high; // 高点 + float low; // 低点 + int dir; // 方向 方向 1上 -1下 2 上包含 -2 下包含 + int flag; // 1顶 -1底 + int qk; // 特征1 2 之间是否存在缺口 } cbi; // 段 typedef struct chanduan { - int no; // 序号 - int noh; // 高点K线编号 - int nol; // 低点K线编号 - float high; // 高点 - float low; // 低点 - int flag; // 1顶 -1底 - int binum; // 包含几笔 + int no; // 序号 + int noh; // 高点K线编号 + int nol; // 低点K线编号 + float high; // 高点 + float low; // 低点 + int flag; // 1顶 -1底 + int binum; // 包含几笔 } cduan; // 走势中枢 typedef struct chanzhongshu { - int no; // 序号 - int duanno; // 段序号 - int flag; // 走势方向 1上 -1下 - int ksno; // zg所在K线NO (有zg必有zd) - int jsno; // zd所在K线NO - int znnum; // 包含zn数 - float zg; // ZG=min(g1、g2) - float zd; // ZD=max(d1、d2) - float gg; // GG=max(gn); - float dd; // dd=min(dn); - float zz; // 震荡中轴(监视器) + int no; // 序号 + int duanno; // 段序号 + int flag; // 走势方向 1上 -1下 + int ksno; // zg所在K线NO (有zg必有zd) + int jsno; // zd所在K线NO + int znnum; // 包含zn数 + float zg; // ZG=min(g1、g2) + float zd; // ZD=max(d1、d2) + float gg; // GG=max(gn); + float dd; // dd=min(dn); + float zz; // 震荡中轴(监视器) } czhongshu; -//定义基本数据 END +//定义基本数据END typedef list KXDATA; typedef list BIDATA; @@ -90,39 +91,38 @@ typedef list::const_iterator C_ZSIT; class ChanlunCore { private: - ChanlunCore(); // 构造函数 - ~ChanlunCore(); // 析构函数 + ChanlunCore(); // 构造函数 + ~ChanlunCore(); // 析构函数 static ChanlunCore* instance; - - KXDATA kxData; // 根据缠论处理过的K线 - BIDATA xbData; // 向下笔 (向上笔开始的段的特征序列) - BIDATA sbData; // 向上笔 (向下笔开始的段的特征序列) - DUANDATA dData; // 段 - ZSDATA zsData; // 中枢 + KXDATA kxData; // 根据缠论处理过的K线 + BIDATA xbData; // 向下笔 (向上笔开始的段的特征序列) + BIDATA sbData; // 向上笔 (向下笔开始的段的特征序列) + DUANDATA dData; // 段 + ZSDATA zsData; // 中枢 float biQuekou; int firstDuanDir; - void initBiQK(CALCINFO* pData); // 初始化缺口 - void initTZXL(); // 初始化特征分型 - void initDuanList(); //初始化段 + void initBiQK(CALCINFO* pData); // 初始化缺口 + void initTZXL(); // 初始化特征分型 + void initDuanList(); // 初始化段 - BIIT findTZG(int fromNo); // 查找特征序列的顶分型 - BIIT findTZD(int fromNo); // 查找特征序列的底分型 + BIIT findTZG(int fromNo); // 查找特征序列的顶分型 + BIIT findTZD(int fromNo); // 查找特征序列的底分型 - void findFanTanZS(int duanno, int begin, int end, int high, int low); // 查找下跌段中枢 - void findHuiTiaoZS(int duanno, int begin, int end, int high, int low); // 查找上升段中枢 + void findFanTanZS(int duanno, int begin, int end, int high, int low); // 查找下跌段中枢 + void findHuiTiaoZS(int duanno, int begin, int end, int high, int low); // 查找上升段中枢 public: - static ChanlunCore* GetInstance(); //获取 唯一实例 + static ChanlunCore* GetInstance(); // 获取唯一实例 - void initKx(CALCINFO* pData); // 初始化缠论K线 - void initFX(); // 初始化分型 - void initBi(); // 初始化笔 - void initDuan(); // 初始化段 - void initZhongshu(); // 初始化中枢 + void initKx(CALCINFO* pData); // 初始化缠论K线 + void initFX(); // 初始化分型 + void initBi(); // 初始化笔 + void initDuan(); // 初始化段 + void initZhongshu(); // 初始化中枢 CKXIT getCKX(int num); diff --git a/FxjFunc.plg b/FxjFunc.plg index cbf619d..78f111a 100644 --- a/FxjFunc.plg +++ b/FxjFunc.plg @@ -3,36 +3,35 @@
 

Build Log

---------------------Configuration: FxjFunc - Win32 Release-------------------- +--------------------Configuration: FxjFunc - Win32 Debug--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\pippo\LOCALS~1\Temp\RSP257.tmp" with contents +Creating temporary file "C:\Users\eshufan\AppData\Local\Temp\RSP3CB7.tmp" with contents [ -/nologo /Zp1 /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FXJFUNC_EXPORTS" /FR"Release/" /Fp"Release/FxjFunc.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c -"G:\Projects\vc6\stock\chanlunv2.1\ChanlunCore.cpp" -"G:\Projects\vc6\stock\chanlunv2.1\ChanlunTools.cpp" -"G:\Projects\vc6\stock\chanlunv2.1\ChanlunVersion.cpp" +/nologo /Zp1 /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FXJFUNC_EXPORTS" /FR"Debug/" /Fp"Debug/FxjFunc.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c +"C:\Users\eshufan\Documents\Application\chanlun\ChanlunCore.cpp" +"C:\Users\eshufan\Documents\Application\chanlun\FxjFunc.cpp" ] -Creating command line "cl.exe @C:\DOCUME~1\pippo\LOCALS~1\Temp\RSP257.tmp" -Creating temporary file "C:\DOCUME~1\pippo\LOCALS~1\Temp\RSP258.tmp" with contents +Creating command line "cl.exe @C:\Users\eshufan\AppData\Local\Temp\RSP3CB7.tmp" +Creating temporary file "C:\Users\eshufan\AppData\Local\Temp\RSP3CB8.tmp" with contents [ -kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/chanlun.pdb" /machine:I386 /out:"./dll/chanlun.dll" /implib:"Release/chanlun.lib" -.\Release\ChanlunCore.obj -.\Release\ChanlunTools.obj -.\Release\ChanlunVersion.obj -.\Release\FxjFunc.obj -.\Release\StdAfx.obj +kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/chanlun.pdb" /debug /machine:I386 /out:"./dll/chanlun.dll" /implib:"Debug/chanlun.lib" /pdbtype:sept +.\Debug\ChanlunCore.obj +.\Debug\ChanlunTools.obj +.\Debug\ChanlunVersion.obj +.\Debug\FxjFunc.obj +.\Debug\StdAfx.obj ] -Creating command line "link.exe @C:\DOCUME~1\pippo\LOCALS~1\Temp\RSP258.tmp" +Creating command line "link.exe @C:\Users\eshufan\AppData\Local\Temp\RSP3CB8.tmp"

Output Window

Compiling... ChanlunCore.cpp -ChanlunTools.cpp -ChanlunVersion.cpp +Generating Code... +Compiling... +FxjFunc.cpp Generating Code... Linking... - Creating library Release/chanlun.lib and object Release/chanlun.exp -Creating command line "bscmake.exe /nologo /o"Release/FxjFunc.bsc" .\Release\StdAfx.sbr .\Release\ChanlunCore.sbr .\Release\ChanlunTools.sbr .\Release\ChanlunVersion.sbr .\Release\FxjFunc.sbr" +Creating command line "bscmake.exe /nologo /o"Debug/FxjFunc.bsc" .\Debug\StdAfx.sbr .\Debug\ChanlunCore.sbr .\Debug\ChanlunTools.sbr .\Debug\ChanlunVersion.sbr .\Debug\FxjFunc.sbr" Creating browse info file...

Output Window