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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 请教版主sub参数为对象的问题

   

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


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

主题:请教版主sub参数为对象的问题

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/1 10:26:22 [显示全部帖子]

可否将代码贴出来,我们帮你仔细看看


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/3 15:55:00 [显示全部帖子]

请加我QQ442902994, 然后将框架也拷贝给我,否则我这里无法复现你的机器运行状态


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/4 17:30:23 [显示全部帖子]

初步运行了你的例子,然后发现你的死机情况主要是你的LOOP循环的位置会出现死循环导致,因为你的循环的唯一终止点是一个DataCount变量,但是很不明确,这种代码编写极易导致因为DataCount计算不当导致死循环无法推出,导致金字塔停止相应,我在你的循环地方加了MAXLOOP循环判断,就是到了10000次就强行终止退出,但治标不治本,这个地方还得靠你自己去完善改写

 

Sub kp_Paint()
     set Grid=kp.GetGridByName("Win30")
   
    Set History =Grid.GetHistoryData()
  
 DataCount = 0
 rTime=0
 lTime=0
 i=history.Count-4
    spaceNumber=Grid.ShowLastCyc
    CS=0
    MaxLoop = 0
 
 do
    boolH=history.high(i)>history.high(i-1) and history.high(i)>=history.high(i-2) and history.high(i)>=history.high(i-3) _
           and history.high(i)>=history.high(i+1) and history.high(i)>=history.high(i+2) and history.high(i)>=history.high(i+3)
'       boolL=history.Low(i)<history.Low(i-1) and history.Low(i)<=history.Low(i-2) and history.Low(i)<=history.Low(i-3) _
 '          and history.Low(i)<=history.Low(i+1) and history.Low(i)<=history.Low(i+2) and history.Low(i)<=history.Low(i+3)
     if boolH then
           DataCount=DataCount+1
           if DataCount=1 then
             RTime=i
           
           end if
    
           if DataCount=2 then
             LTime=i
             
             exit do
           end if 
     end if
     i=i-1 
     MaxLoop = MaxLoop + 1
     if MaxLoop > 10000 then
        exit do
     end if
 loop
 
    hLeftPrice=history.high(LTime)
    hRightPrice=history.high(RTime)
   
    xhLeft=Grid.PelsByPos(LTime,false)
    xhRight=Grid.PelsByPos(RTime,false)
   
    yhLeft=Grid.PriceToPels(hLeftPrice)  
    yhRight=Grid.PriceToPels(hRightPrice)
   
    xhLastPos=Grid.PelsByPos(history.Count+spaceNumber,false)  
    

   '小心除零错误
    if Rtime-Ltime <= 0 then
       exit sub
    end if

   
    CS1=FormatNumber(CDbl((hleftPrice-hRightPrice)/(Rtime-Ltime)),2)
    CS=(yhleft-yhright)/(xhRight-xhLeft)
   
    ZhuLi=HLeftPrice-CS1*(History.Count-Ltime-1)
    Grid.drawtext 0,20,"阻力值:"+Cstr(Zhuli),rgb(0,255,0)
   
    yhLastPos=yhRight+(xhright-xhLastPos)*CS
      
   
    Grid.drawline xhleft,yhleft,xhLastPos,yhlastPos,rgb(255,0,0),3
   
End Sub


 回到顶部