欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 请帮忙看看问题出在什么地方

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4031人关注过本帖树形打印复制链接

主题:请帮忙看看问题出在什么地方

帅哥哟,离线,有人找我吗?
chendong
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
请帮忙看看问题出在什么地方  发帖心情 Post By:2016/1/15 12:27:27 [只看该作者]

公式:DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  := EMA(DIFF,9);
MACD1 := 2*(DIFF-DEA);

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);

KDJbuyCOND:=count(cross(k,d),10)>=1;
MACDbuyCOND:=count(cross(DIFF,DEA),3)>=1 and MACD1>0;

KDJsellCOND:=count(cross(d,k),10)>=1;
MACDsellCOND:=count(cross(DEA,DIFF),3)>=1 and MACD1<0;

KaiDuoCond:KDJbuyCOND and MACDbuyCOND;
KaiKongCond:KDJsellCOND and MACDsellCOND;


macd30:=MACD1;
macd30b:=REF(macd30,1);
macd30b2:=REF(macd30,2);

PingDuoCond:macd30b>macd30 and macd30b2>macd30b;
PingKongCond:macd30b<macd30 and macd30b2<macd30b;


Sub MARKETDATA_ReportNotify(ReportData) '行情触发时的操作
NewPrice = ReportData.NewPrice 'application.MsgOut cdate(time) & (NewPrice>(TraderForm_adjustPrice.value-5) and NewPrice<(TraderForm_adjustPrice.value+5)) NewBuyPrice=ReportData.BuyPrice1 NewSellPrice=ReportData.SellPrice1 'stkLable=ReportData.Label Set Formula=marketdata.STKINDI(Tcode,Tmarket,"TradeCond",0,17) KaiDuoCond=Formula.GetBufData("KaiDuoCond",Formula.DataSize-1) PingDuoCond=Formula.GetBufData("PingDuoCond",Formula.DataSize-1) KaiKongCond=Formula.GetBufData("KaiKongCond",Formula.DataSize-1) PingKongCond=Formula.GetBufData("PingKongCond",Formula.DataSize-1) 
 application.MsgOut "KaiDuoCond:" & KaiDuoCond 
 application.MsgOut "KaiKongCond:" & KaiKongCond 
 application.MsgOut "PingDuoCond:" & PingDuoCond 
application.MsgOut "PingKongCond:" & PingKongCond 
 set Formula=nothing
后面还有一些代码,在此省略
End Sub

问题:打印的PingKongCond的值与公式在图表中显示的值不一样,比如,公式的值已经变成0,在VBA中打印的值还是1,为何呢?



 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/15 12:30:37 [只看该作者]

是否是行情触发的时间间隔太短导致MARKETDATA_ReportNotify事件中的代码未能执行到?

那,一般情况要达到在MARKETDATA_ReportNotify事件中的代码能确定完全地执行,该如何处理呢?

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/1/15 13:31:02 [只看该作者]

你贴的代码没写明PingKongCond这个变量你是如何取得的


 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/15 15:39:11 [只看该作者]

PingKongCond=Formula.GetBufData("PingKongCond",Formula.DataSize-1) 

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/1/15 15:55:28 [只看该作者]

Formula 对象你是怎么获取的

 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/15 21:28:30 [只看该作者]

Set Formula=marketdata.STKINDI(Tcode,Tmarket,"TradeCond",0,17) 

 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/15 21:29:15 [只看该作者]

公式贴过来时,有点乱,没有断行



 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/15 21:33:38 [只看该作者]

Sub MARKETDATA_ReportNotify(ReportData) '行情触发时的操作

Set Formula=marketdata.STKINDI(Tcode,Tmarket,"TradeCond",0,17) 
KaiDuoCond=Formula.GetBufData("KaiDuoCond",Formula.DataSize-1) 
PingDuoCond=Formula.GetBufData("PingDuoCond",Formula.DataSize-1) 
KaiKongCond=Formula.GetBufData("KaiKongCond",Formula.DataSize-1) 
PingKongCond=Formula.GetBufData("PingKongCond",Formula.DataSize-1) 

application.MsgOut "KaiDuoCond:" & KaiDuoCond 

application.MsgOut "KaiKongCond:" & KaiKongCond 

application.MsgOut "PingDuoCond:" & PingDuoCond 

application.MsgOut "PingKongCond:" & PingKongCond 

set Formula=nothing

后面还有一些代码,在此省略
End Sub

Tcode,Tmarket是已经赋值的全局变量。值可以取出来,只是不会同步,公式中的值已经变化好久了,可VBA中打印出来,且没变


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/1/15 22:31:29 [只看该作者]

你这么调用Set Formula=marketdata.STKINDI(Tcode,Tmarket,"TradeCond",0,17)

不能保证你的参数和数据和图表上是严格一致的,导致结果不同也算正常,你试试直接取图表上的Formula对象看看

 

Set Grid = Technic.GetGridByName("Main")
Set Formula = Grid.GetFormulaByIndex(1)

 

框架和窗口根据你自己的实际情况修改


 回到顶部
帅哥哟,离线,有人找我吗?
chendong
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:284 积分:0 威望:0 精华:0 注册:2015/10/23 10:17:30
  发帖心情 Post By:2016/1/18 14:23:39 [只看该作者]

我把Set Formula=marketdata.STKINDI(Tcode,Tmarket,"TradeCond",0,17)放在一个定时器中运行,取到的值就是一致的


 回到顶部
总数 13 1 2 下一页