金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 125|回复: 8

C++调用焦煤JM01 的 CLOSE的值与图表显示的CLOSE值不同

[复制链接]

5

主题

36

帖子

46

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2025-11-4 18:33 | 显示全部楼层 |阅读模式
PEL公式
==================================================
DIFF : EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  : EMA(DIFF,M);
MACD1 : 2*(DIFF-DEA);
MACD1HHV : HHV(MACD1,PH);
MACD1LLV : LLV(MACD1,PL);

MHHV : HHV(HIGH,PH);
MLLV : LLV(LOW,PL);
MCLOSE : CLOSE;

MA1:MA(CLOSE,20);
MA2:MA(CLOSE,68);
MA3:MA(CLOSE,233);
================================================
C++ 部分
STKINDIEX_EXTFUN_ST stFormulaData = { 0 };
stFormulaData.m_nMarket = 'QD';

strcpy(stFormulaData.m_szLabel, "JM01");
strcpy(stFormulaData.m_szIndiName, "MYCOMPLEX.MCLOSE(26,52,18,120,120)");
stFormulaData.m_nPeriod = MIN1_DATA;//1分钟线
stFormulaData.m_nDataNum = un; //调用最近20周期数据
stFormulaData.m_nPower = 1; //复权数据
stFormulaData.m_nRunID = 0;



STKINDIEX_EXTFUN_DATA_RET* pRetData = (STKINDIEX_EXTFUN_DATA_RET*)g_pMainFormework->ExpandFunction(&stFormulaData, STKINDIEX_EXTFUN);
for (int i = pRetData->m_nDataCount-5; i < pRetData->m_nDataCount; i++)
{
                COleDateTime time = pRetData->m_pValues[i].m_timeDate;
                std::string str_timeDate = time.Format("%Y-%m-%d %H:%M:%S");
                std::string str_fOpen = std::to_string(pRetData->m_pValues[i].m_dbValues);
                std::string str_Label(stFormulaData.m_szLabel);
                std::string str_Market = "DQ";
                std::string input = str_cmd + "," + str_Market + "," + str_Label + "," + str_cyc + "," + str_timeDate + "," + str_fOpen;
                CString cstrResult(input.c_str());
               
                LOG_DEBUG_INFO("c:\\MyData.txt", "input: %s", cstrResult);


}

=======================================
打印结果:
2025-11-04 18:15:02.018    input: 0-DQ-JM01-1-MCLOSE-200-1=mclose,DQ,JM01,1,2025-11-04 14:56:00,1334.180176
2025-11-04 18:15:02.033    input: 0-DQ-JM01-1-MCLOSE-200-1=mclose,DQ,JM01,1,2025-11-04 14:57:00,1334.180176
2025-11-04 18:15:02.050    input: 0-DQ-JM01-1-MCLOSE-200-1=mclose,DQ,JM01,1,2025-11-04 14:58:00,1333.649170
2025-11-04 18:15:02.061    input: 0-DQ-JM01-1-MCLOSE-200-1=mclose,DQ,JM01,1,2025-11-04 14:59:00,1334.711426
2025-11-04 18:15:02.065    input: 0-DQ-JM01-1-MCLOSE-200-1=mclose,DQ,JM01,1,2025-11-04 15:00:00,1337.374512


实际上焦煤JM01的2025-11-04 15:00:00 收盘价是1253.0;

000000000.png
回复

使用道具 举报

5

主题

36

帖子

46

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2025-11-4 21:49 | 显示全部楼层
STKINDIEX_EXTFUN_DATA_RET* pRetData = (STKINDIEX_EXTFUN_DATA_RET*)g_pMainFormework->ExpandFunction(&stFormulaData, STKINDIEX_EXTFUN);

之前跑过一段时间,数据没有问题,是否数据服务器的数据在本地存储的时候,更新了什么,现在跑一段时间挂掉了。
回复

使用道具 举报

4667

主题

4778

帖子

4803

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-5 10:29 | 显示全部楼层
本帖最后由 代人发帖 于 2025-11-5 10:53 编辑

您复权了,请您取消复权标志,stFormulaData.m_nPower = 0; //复权数据
历史数据,是存储在本地的。数据没有变动。


跑一段时间挂掉了的问题,开发建议您attach到金字塔上跑跑看
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

5

主题

36

帖子

46

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2025-11-5 10:49 | 显示全部楼层
取消复权标志,数值也不对

WinStock.dmp

149.5 KB, 下载次数: 19

回复

使用道具 举报

5

主题

36

帖子

46

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2025-11-5 11:04 | 显示全部楼层
g_pMainFormework->GetDataInfo(&stData) 这个接口获取的close是正确的


PCALCINFO stData = { 0 };
stData.m_bIsPow = 1; //是否复权
stData.m_nPowType = 0; //前复权
stData.m_nDataCount = un;
stData.m_wMarket = 'QD';
stData.m_dataType = MIN1_DATA;//1分钟线
strcpy(stData.m_szLabel, "JM01");

if (g_pMainFormework->GetDataInfo(&stData))
        {
                CString strText;

                //for (int i = 0; i < 100; i++)
                for (int i = stData.m_nNumData-1; i < stData.m_nNumData; i++)
                {
                        COleDateTime timeDate = stData.m_pMainData[i].m_timeDate;
                        float fOpen = stData.m_pMainData[i].m_fOpen;
                        float fHigh = stData.m_pMainData[i].m_fHigh;
                        float fLow = stData.m_pMainData[i].m_fLow;
                        float fClose = stData.m_pMainData[i].m_fClose;
                        float fVolume = stData.m_pMainData[i].m_fVolume;
                        float fAmount = stData.m_pMainData[i].m_fAmount;

                        std::string str_timeDate = timeDate.Format("%Y-%m-%d %H:%M:%S");
                        std::string str_fClose = floatToString(fClose, 2);

                        std::string input = "mclose," + str_Market + "," + str_Label + "," + str_cyc + "," + str_timeDate + "," + str_fClose;

                        CString cstrResult(input.c_str());

                        LOG_DEBUG_INFO("c:\\MyData_close.txt", "input %s", cstrResult);
                }
        }
回复

使用道具 举报

5

主题

36

帖子

46

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2025-11-5 11:17 | 显示全部楼层
代人发帖 发表于 2025-11-5 10:29
您复权了,请您取消复权标志,stFormulaData.m_nPower = 0; //复权数据
历史数据,是存储在本地的。数据没 ...

attach到金字塔是什么操作,怎么操作
回复

使用道具 举报

4667

主题

4778

帖子

4803

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-5 13:57 | 显示全部楼层
接口没问题的,已经用您一楼的PEL代码,运行过了。
截图202511051357202888.png
截图202511051357353205.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

4667

主题

4778

帖子

4803

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-5 14:00 | 显示全部楼层
您一楼打印出来的值,看起来像是某个指标值,不像是取的收盘价CLOSE,建议您自查下代码
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

4

主题

212

帖子

223

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-11-5 14:17 | 显示全部楼层
另外您可以升级到7.2版,以排除是之前版本的BUG造成的影响
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-11-12 12:56 , Processed in 0.187754 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表