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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 求助这个语句怎么写

   

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


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

主题:求助这个语句怎么写

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


加好友 发短信
等级:论坛游侠 帖子:137 积分:30 威望:0 精华:0 注册:2011/12/2 7:33:43
求助这个语句怎么写  发帖心情 Post By:2014/8/11 14:28:30 [只看该作者]

只在这根K线开始时为某个变量赋值,如令A:=1。

我是1分钟K线轮询高频交易,所以用当second=0时为A赋值的方法不行,因为在秒数=0的这1秒内,也会重复几次令A:=1,有没有办法令这个赋值只在这根K线里执行一次呢?
[此贴子已经被作者于2014/8/11 14:28:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2014/8/11 14:41:47 [只看该作者]

用一个全局变量限定

variable:num=0

if num=0 and second=0 then

begin

A:=1;

num:=1;

end

 

if num=1 and second=59 then             //59秒时重新将num置0

num:=0;


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


加好友 发短信
等级:论坛游侠 帖子:137 积分:30 威望:0 精华:0 注册:2011/12/2 7:33:43
  发帖心情 Post By:2014/8/12 10:58:39 [只看该作者]

variable:num=0,a=0;

sec1:=if(islastbar,dynainfo(207),time); //second不能用在1分钟图,所以用另一种方法表示秒数
sec:=time0-timetot0(sec1);

if num=0 and sec=59 then
begin
a:=1;
num:=1;
end
 
if num=1 and sec=1 then             
num:=0;

rc:=ref(c,1);
if c>rc+2 or c<rc-2 then a:=0 //我想要达到的效果,满足时a才会=0

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


加好友 发短信
等级:论坛游侠 帖子:137 积分:30 威望:0 精华:0 注册:2011/12/2 7:33:43
  发帖心情 Post By:2014/8/12 10:59:04 [只看该作者]

按2楼的方法试了一下,发现有问题:在1分钟K线高频轮询的情况下,只有在59秒那一秒内,a和num才是1,其它时间都是0。代码在上方,请问如何做到在这根1分钟K线中,当abs(c-ref(c,1))>2时,a才是0?

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


加好友 发短信
等级:论坛游侠 帖子:137 积分:30 威望:0 精华:0 注册:2011/12/2 7:33:43
  发帖心情 Post By:2014/8/12 11:11:59 [只看该作者]


variable:num=0,a=0;

sec1:=if(islastbar,dynainfo(207),time);
//second不能用在1分钟图,所以用另一种方法表示秒数
sec:=time0-timetot0(sec1);

if num=0 and sec=59 then
begin
a:=1;
num:=1;
end
 
if num=1 and sec=1 then             
num:=0;

rc:=ref(c,1);
if  (c>rc+2 or c<rc-2) and a=1 then begin
..开仓语句..;
a:=0;
end
//我想要达到的效果,满足时才开仓且只开一次

改了一下,大概是这样的
[此贴子已经被作者于2014/8/12 11:12:34编辑过]

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2014/8/12 12:13:58 [只看该作者]

一开始没留意second在分钟图上的问题,抱歉。

一条开仓语句本来就只开一次,你上面问题是什么。另外你这样会没有历史信号的。历史sec都是0,在and (a=1 or not(islastbar))这样处理下吧


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


加好友 发短信
等级:论坛游侠 帖子:137 积分:30 威望:0 精华:0 注册:2011/12/2 7:33:43
  发帖心情 Post By:2014/8/12 12:54:32 [只看该作者]

恩,islastbar的问题我注意到了,这段代码只是举一个例子。
我的问题是这样的:

if num=0 and sec=59 then begin
a:=1;
num:=1;
end

这段代码,本意是在1分钟K线开始时,将a和num赋值=1。 等到满足 (c>rc+2 or c<rc-2) and a=1 这个条件后开仓,并令a=0使得不重复开仓。 
但在我用高频轮询测试时发现,只有在sec=59时,a=1和num=1是对的。当1秒后,即sec=58以后,a和num两个变量就成0了。这样这两个变量的目的就达不到了

[此贴子已经被作者于2014/8/12 12:55:53编辑过]

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


加好友 发短信
等级:超级版主 帖子:5960 积分:0 威望:0 精华:2 注册:2014/6/12 11:29:04
  发帖心情 Post By:2014/8/12 13:29:41 [只看该作者]

1,这种K线内的精细控制,建议用户使用后台。图表涉及历史情况,不好处理

 

2,variable每次刷新都会重新赋值到0,只会记录当根K最后一次运行的结果。

  如果一定要使用需要EXTGBDATASET记录



金字塔—专业程序化交易量化投资平台

产品部

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

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部