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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]图表上实现过滤4秒信号

   

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


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

主题:[求助]图表上实现过滤4秒信号

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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
[求助]图表上实现过滤4秒信号  发帖心情 Post By:2011/1/11 10:17:06    Post IP:222.244.243.241[只看该作者]

我需要在每次发出委托后过滤后面4秒的信号~

if cond then begin

buy(...);

sleep(4000);

end;

 

类似的语句无法用在图表上~

今天图表实盘(图表)一开仓后sleep导致系统卡住...(没卡死..我机器高配的)

一担心马上切换回原来的系统~...

倒是昨天做模拟的时候没注意图表使用sleep会导致卡住的现象.

一直运行的好好的

 

现在需要一个能在图表上实现过滤最近4秒信号的程序...

希望admin能帮个忙...

 

以下是引用admin在2010-7-25 1:05:01的发言:

本示例以后台自动交易的方式,展现了金字塔实现延迟信号确认的工作原理。

本代码可以实现3天现上穿5天线后,15秒等待信号确认后,再发开仓单。

请选择固定时间间隔模式运行后台自动交易,间隔时间设为1秒

本公式会在运行时产生很多临时数据,请用户再第二天交易前清空这些历史变量,否则会导致与第二天的临时变量冲突。方法 工具菜单-》数据-》全局变量,进去后,选择“清空”按钮

 

MA1:=MA(CLOSE,3);
MA2:=MA(CLOSE,5);

CROS:=CROSS(MA1,MA2);

CROS2:=CROSS(MA2,MA1);


BUY1:=FALSE;

IF ISLASTBAR THEN
BEGIN
 IF CROS THEN
 BEGIN
  //将当前信号周期置全局变量数据库
  //数据名字前加信号周期,标记周期位置
  CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
  
  //读取原有变量的时间,判断是否到延时时间
  BUYTIME1:=EXTGBDATA(CRTEMP);
  BUYTIME2:=TIMETOT0(CURRENTTIME);
  DEBUGOUT('D1 %.0f',BUYTIME1);
  IF BUYTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
  BEGIN
   DEBUGOUT('D2 %.0f',BUYTIME2 - BUYTIME1);
   IF BUYTIME2 - BUYTIME1 > 15 THEN
   BEGIN
    //大于15秒的延迟,表示信号已经得到确认
    BUY1:=TRUE;
   END
  END
  ELSE
  BEGIN
   //第一次信号位置记录
   EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));
  END
 END
 ELSE
 BEGIN
  //否则表示信号中间消失了
  CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
  EXTGBDATASET(CRTEMP,0);
 END
END

TBUY(BUY1,1,MKT);
TSELL(CROS2,0,MKT);

[此贴子已经被作者于2010-7-25 1:06:05编辑过]

 

 

在学习这段语句...

不少地方琢磨不透啊..


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


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

sleep一般用在后台,使用sleep语句后会导致程序停下来等待,因为后台是独立工作的,故对使用影响不大,但是图表上使用sleep会导致整个程序都被挂起来。


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

金字塔-技术部

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

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

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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2011/1/11 10:40:36    Post IP:222.244.243.241[只看该作者]

以下是引用王锋在2011-1-11 10:19:53的发言:
sleep一般用在后台,使用sleep语句后会导致程序停下来等待,因为后台是独立工作的,故对使用影响不大,但是图表上使用sleep会导致整个程序都被挂起来。

我是没搞清楚sleep是后台函数

如果金字塔在函数介绍上有一栏函数属性告知是哪类函数就更好了..

 

希望哪位老师能够帮我在图表上实现过滤最近4秒信号的功能

[此贴子已经被作者于2011-1-11 10:40:55编辑过]

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/1/11 10:45:55    Post IP:202.101.153.222[只看该作者]

试试用全局变量。

发单后,用全局变量记录currenttime

再次发单,再用currenttime和全局变量做比较

 

只是这样 用于测试的图表交易系统和用于实盘的图表交易系统是分开的 

 

 


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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2011/1/11 11:16:33    Post IP:222.244.243.241[只看该作者]

以下是引用leevolvo在2011-1-11 10:45:55的发言:

试试用全局变量。

发单后,用全局变量记录currenttime

再次发单,再用currenttime和全局变量做比较

 

只是这样 用于测试的图表交易系统和用于实盘的图表交易系统是分开的 

 

 

能不能写个简单点的例子?

EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));

这句搞的我那个数据里面全是新建的全局变量...


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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/1/11 11:42:02    Post IP:202.101.153.222[只看该作者]

一个思路,不知道可不可行,bbking兄根据自己的实际情况试试。

 

if cond and timetot0(currenttime)>timetot0(extgbdata('m')+4) then begin

//cond为买入条件,全局变量m的初始值每天更新为0

buy(......);

extgbdataset('m',currenttime);

end

 

如果具体情况中有用到holding的话,也要做相应的改变

 


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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2011/1/12 16:18:02    Post IP:222.244.243.241[只看该作者]

以下是引用leevolvo在2011-1-11 11:42:02的发言:

一个思路,不知道可不可行,bbking兄根据自己的实际情况试试。

 

if cond and timetot0(currenttime)>timetot0(extgbdata('m')+4) then begin

//cond为买入条件,全局变量m的初始值每天更新为0

buy(......);

extgbdataset('m',currenttime);

end

 

如果具体情况中有用到holding的话,也要做相应的改变

 

 

 

这个M是否需要手动设置为0?否则第二天就开不了仓?

图片点击可在新窗口打开查看


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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/1/12 21:09:49    Post IP:112.111.180.227[只看该作者]

恩。是啊。你是不是日内交易?

加一行代码,让收盘的时候,全局变量m自动变为0


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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2011/1/14 10:25:47    Post IP:222.244.243.241[只看该作者]

if hour=10 and minute=9 then begin
extgbdataset('crt',currenttime);
end;

 

我新建个指标~然后写入以上代码~

结果全局变量crt直接等于currenttime

可以超过10点09分钟的

 


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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2011/1/14 12:38:10    Post IP:222.244.243.241[只看该作者]

可能是我自己搞错了~我再试试...

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