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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]关于在PEL语言中调用QQ窗口发送信息的问题

   

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


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

主题:[求助]关于在PEL语言中调用QQ窗口发送信息的问题

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


加好友 发短信
等级:新手上路 帖子:25 积分:273 威望:0 精华:0 注册:2009/12/1 10:57:10
[求助]关于在PEL语言中调用QQ窗口发送信息的问题  发帖心情 Post By:2011/12/27 17:13:09 [只看该作者]

在自定义函数中定义了如下函数:

 

Function QQMSSG(Formula,QQNum,QQMSG)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    QQMSSG=0
    Set obj = CreateObject("WWSCommon.TCGroup")
    call obj.TransMessage(QQNum, QQMSG)
    Set obj = Nothing

End Function

 

然后在PEL语言书写的策略中如下调用:

if VBuy then

begin

  buy(1,1,limitr,VOP);       {开多}

  VQQM:=QQMSSG('金字塔自动交易群X','hello-由金字塔程序发出');

end; 

 

逐K线模式下,运行没有反应.请客服人员帮助解决.谢谢.


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


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/12/27 17:18:38 [只看该作者]

等待高手回答

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


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

你的代码存在2个问题

1,自定义函数只能传递数值参数,不支持字符串

2,在逐周期模式下使用,要加过滤手段,否则会导致多次频繁的发送

 

一般是应对最后一个周期有效的信号才起作用

GLOBALVARIABLE bb=0;//申明一个全局变量,用于控制过滤

if VBuy then

begin

  buy(1,1,limitr,VOP);       {开多}

  if islastbar and bb<>barpos then

   begin

      bb:= barpos;

      VQQM:=QQMSSG(close,open);

   end

end; 

[此贴子已经被作者于2011-12-27 17:34:23编辑过]

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


加好友 发短信
等级:新手上路 帖子:65 积分:542 威望:0 精华:0 注册:2010/6/13 15:20:29
  发帖心情 Post By:2011/12/29 9:44:17 [只看该作者]

老师能给写全吗?这个功能还是不会用?

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


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/12/29 10:17:31 [只看该作者]

上面已将写全了,

按你的方式创建自定义函数,

有具体问题在问吧


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


加好友 发短信
等级:新手上路 帖子:94 积分:421 威望:0 精华:0 注册:2011/5/11 21:12:44
  发帖心情 Post By:2011/12/29 15:44:01 [只看该作者]

1,自定义函数只能传递数值参数,不支持字符串 我想在发送的信息是成交价格、成交时间,这些动态的信息,如何进行呢?PEL可以实现吗?

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


加好友 发短信
等级:新手上路 帖子:25 积分:273 威望:0 精华:0 注册:2009/12/1 10:57:10
[求助]  发帖心情 Post By:2011/12/29 16:02:35 [只看该作者]

按照ADMIN老大的意思写了个测试用的,在逐K线模式下,出了信号后还是不停地发报警声音,直到这个K线走完才停, 怎么样才能只发一次报警声音呢?求再解答一次,监测分笔盘中时的计数器VCountAlert已经与barpos相等,不知为什么还会不停地执行.

///////////////////////////////////////////////////////////////////////////////

//测试用策略:前收盘突破前10周期高点做多,突破前10周期低点做空

//////////////////////////////////////////////////////////////////////////////

GLOBALVARIABLE: VCountAlert=0;//申明一个全局变量,用于控制过滤
VOpenPrice:=open;                     //定义开仓价
VC:=ref(close,1);                       //前收盘
VH:=ref(hhv(high,10),2);            //前2周期的10周期内高点
VL:=ref(llv(low,10),2);                //前2周期的10周期内低点
if VC>VH then
begin
  if holding<0 then sellshort(1,0,limitr,VOpenPrice);{平空}
  if holding=0 then
  begin
    buy(1,1,limitr,VOpenPrice);                      {开多}
    if islastbar and VCountAlert<>barpos then
    begin
      VCountAlert:= barpos;
      playsound(1,'.\Alarm.wav');
    end;
  end;
end;
if VC<VL then
begin
  if holding>0 then sell(1,0,limitr,VOpenPrice);    {平多}
  if holding=0 then
  begin
    buyshort(1,1,limitr,VOpenPrice);                {开空}
    if islastbar and VCountAlert<>barpos then
    begin
      VCountAlert:= barpos;
      playsound(1,'.\Alarm.wav');
    end;
  end;
end;

[此贴子已经被作者于2011-12-29 16:09:01编辑过]

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


加好友 发短信
等级:新手上路 帖子:25 积分:273 威望:0 精华:0 注册:2009/12/1 10:57:10
  发帖心情 Post By:2011/12/29 16:55:35 [只看该作者]

在程序最后加上ViewVCountAlert:VCountAlert,linethick0,coloryellow;

分笔回放显示,在条件成立时VCountAlert等于barpos,条件结束后下一K线时,VCountAlert=0了,和设计它保存

条件成立时的barpos值不同,为什么呢,它不是全局变量吗?百思不得其解啊.为何新K线时被清零了.


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2011/12/29 22:13:46 [只看该作者]

启用调试功能看看.

如果使用调试功能,参考

金字塔决策交易系统公式调试功能技巧

http://v.youku.com/v_show/id_XMzAzMTY3NDU2.html



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2011/12/30 10:12:46 [只看该作者]

针对上面的问题,我总结一下,可以用两个步骤解决传递字符串问题:

1、在Perl语言中使用extgbdatsset函数将要传递的字符串写到全局变量;

2、在自定义函数中使用document.getExtData获取该全局变量,然后进行发送。

如:

if VBuy then

begin

  buy(1,1,limitr,VOP);       {开多}

  if islastbar and bb<>barpos then

   begin

      bb:= barpos;

      extgbdataSet('字符串','开多信号:'+numtostr(close,0));    //这里的‘字符串’是你自己取的变量名

      VQQM:=QQMSSG(close,open);

   end

end; 

在VBA的自定义函数中这样写:

   QQMSG=document.getextData("字符串")              '获取公式中设置的变量值

   Set obj = CreateObject("WWSCommon.TCGroup")
   call obj.TransMessage(QQNum, QQMSG)
   Set obj = Nothing

 

 

[此贴子已经被作者于2011-12-30 10:19:13编辑过]

 回到顶部