在5分钟图跨周期读取15分钟指标,发现只会在第一根5分钟K线更新实时值,剩余2根5分钟K线不会更新。

您好,反映一个5分钟跨周期数据库方式读取15分钟指标bug 问题。问题现象:在5分钟图通过跨周期数据库方式,读取并打印15分钟的ma及close 指标,发现只会在当前15分钟周期的第一根5分钟K线更新这两个指标,剩余2根5分钟K线不会更新指标。示图:(上图为5分钟周期,下图为插入的15分钟周期)如上图:在5分钟图跨周期数据库读取15分钟11点K线的MA、close值时候,只在5分钟图的对应周期第一根K线刷新值,余下2根K线没有刷新对应实时的MA、close值(5分钟图黄线为实时打印读取的15分钟close值,其值应以11:10的K线收盘价画横线,而不是固定为11点k线的收盘价)。而通过查看数据管理的数据库,是有动态更新15分钟的值的,如下图:对应代码:见附件。期望:希望指导解决一下,在5分钟周期可以动态读取15分钟周期ma、close 值。谢谢!

跨周期请用quant3

回复:这个是参考旗舰版帮助文档里面的说明,如果确认是bug,请看一下怎样解决。老用户很多都是用旗舰版的,转换成quant3的话要学习成本。谢谢!

回复:旗舰版已经下架了,不管是不是bug,也不会维护了。

我认为跨周期完全没有必要用读写数据库的方式另外代码属于不能运行的,请贴全

回复:你好,这个是参考了旗舰版帮助里面交易策略进阶的数据库读取方式,如果有其它更好方式麻烦指导一下,另外补充完整代码,谢谢!15分钟图代码:Params Numeric length(10);Vars NumericSeries MA; string strkey; string strValue; NumericSeries K; string strkey1; string strValue1;//定义15分钟写入数据库变量Begin MA = AverageFC(Close,length); strKey = DateToString(Date)+"日"+Text(Hour)+":"+Text(Minute); strValue = Text(MA); SetTBProfileString("15分钟MA","MinuteMA:"+strKey,strValue); PlotNumeric("MA",MA,0,Red); K = Close; strKey1 = DateToString(Date)+"日"+Text(Hour)+":"+Text(Minute); strValue1 = Text(K); SetTBProfileString("15分钟Close","MinuteC:"+strKey1,strValue1);//在15分钟收盘价表存入15分钟Close值 PlotNumeric("15Close",K,0,Yellow);End5分钟图代码:Params Numeric maLength(2); //1分钟周期1分钟均线Vars//----------------------跨周期读取数据库------------------------------ NumericSeries My15mMA; //指向15分钟MA数据库表取15分钟的MA StringSeries strKey1; //定义key1 stringSeries strValue1; //定于key1对应的值 NumericSeries My15mclose; //指向15分钟Close数据库表取15分钟的Close StringSeries strKey2; //定义key2 stringSeries strValue2; //定于key对应的值2Begin ma = AverageFC(Close,maLength);If(Date!=Date[1]) // 读数据库程序 { strKey1 = DateToString(Date[1]); strKey2 = DateToString(Date[1]); }Else { strKey1 = strKey1[1]; strKey2 = strKey2[1]; } If(Hour!=Hour[1]) { strKey1 = DateToString(Date)+"日"+Text(Hour); strKey2 = DateToString(Date)+"日"+Text(Hour); }Else { strKey1 = strKey1[1]; strKey2 = strKey2[1]; } If(Minute!=Minute[1]) { strKey1 = DateToString(Date)+"日"+Text(Hour)+":"+Text(Minute); strKey2 = DateToString(Date)+"日"+Text(Hour)+":"+Text(Minute); } Else { strKey1 = strKey1[1]; //定义key1 strKey2 = strKey2[1]; //定义key2 }strValue1= GetTBProfileString("15分钟MA","MinuteMA:"+strKey1); //当日从15分钟MA表取值 If(strValue1 != InvalidString) { My15mMA = Value(strValue1); }Else { My15mMA = My15mMA[1]; } Plotnumeric("My15mMA",My15mMA,0,Red);//跨周期读取15分钟ma值 strValue2= GetTBProfileString("15分钟Close","MinuteC:"+strKey2); //当日从15分钟Close表取值 If(strValue2 != InvalidString) { My15mclose = Value(strValue2); }Else { My15mclose = My15mclose[1]; } Plotnumeric("My15mclose",My15mclose,0,Yellow);//跨周期读取15分钟Close值 End

回复:请问这个问题怎么解决?已经贴全代码,可以交易时段验证一下。