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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请教DEBUGFILE和DEBUGFILE2

   

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


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

主题:请教DEBUGFILE和DEBUGFILE2

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


加好友 发短信
等级:新手上路 帖子:97 积分:0 威望:0 精华:0 注册:2013/11/28 23:30:38
请教DEBUGFILE和DEBUGFILE2  发帖心情 Post By:2015/1/14 10:43:11    Post IP:101.231.104.2[只看该作者]

if thodling = 0 and 开多 then begin

   DEBUGFILE(...);

   DEBUGFILE2(...);

end;

 

d2是输出历史值和当前值,也就是每个tick都会输出来,而d是输出当前的值。

 

那么问题是我为何在用d的时候也是每个tick都输出?首先不可能每个tick都满足开多条件。相关的背景如下:

①纯后台,没有一边用图表一边用后台;

②固定1秒扫描 + 分笔扫描


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/1/14 10:52:59    Post IP:58.246.57.26[只看该作者]

贴全部代码我们做本地测试


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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:97 积分:0 威望:0 精华:0 注册:2013/11/28 23:30:38
  发帖心情 Post By:2015/1/14 14:45:26    Post IP:101.231.104.2[只看该作者]

//代码如下:

INPUT: lots(1,1,10,1);

VARIABLE: signal := 0;
ss := signal;

h_1 := ref(h,1);
l_1 := ref(l,1);

zjj := (h_1 + l_1) / 2,NODRAW;

if ss = 0 and h >= (h_1 + l_1) / 2 then BEGIN
   DEBUGFILE('C:\TEST1.TXT','ss=%.0f',ss);
   DEBUGFILE('C:\TEST1.TXT','h=%.0f',h);
   DEBUGFILE('C:\TEST1.TXT','zjj=%.0f',zjj);
   signal := 1;
   myprice := (h_1 + l_1) / 2;
end;

 

if ss > 0 and l <= l_1 then BEGIN
   DEBUGFILE('C:\TEST1.TXT','ss=%.0f',ss);
   DEBUGFILE('C:\TEST1.TXT','l=%.0f',l);
   DEBUGFILE('C:\TEST1.TXT','l_1=%.0f',l_1);
   signal := 0;
   myprice := min(l_1,o);
end;

//后台部分
if ss < 0 and signal >= 0 then begin
 tsellshort(workmode = 1, -ss * lots, MKT);
 sellshort(workmode = 0, -ss * lots, LIMITR, myprice);
 ss := 0;
end;
if ss > 0 and signal <= 0 then begin
 tsell(workmode = 1, ss * lots, MKT);
 sell(workmode = 0, ss * lots, LIMITR, myprice);
 ss := 0;
end;

tbuy(workmode = 1 and ss < signal, (signal - ss) * lots, MKT);
buy(workmode = 0 and ss < signal, (signal - ss) * lots, LIMITR, myprice);
tbuyshort(workmode = 1 and ss > signal, (ss - signal) * lots, MKT);
buyshort(workmode = 0 and ss > signal, (ss - signal) * lots, LIMITR, myprice);

 

 

 

 

我贴出日志:

2015-01-14 14:35:49.687    ss=0    ---------687入场
2015-01-14 14:35:49.687    h=2478
2015-01-14 14:35:49.687    zjj=2476
2015-01-14 14:35:49.953    ss=0----------953此时按照代码应该ss大于0了,为何这个地方还是0?
2015-01-14 14:35:49.953    h=2478
2015-01-14 14:35:49.953    zjj=2476
2015-01-14 14:35:50.281    ss=0
2015-01-14 14:35:50.296    h=2478
2015-01-14 14:35:50.296    zjj=2476
2015-01-14 14:35:50.312    ss=0
2015-01-14 14:35:50.312    h=2478
2015-01-14 14:35:50.312    zjj=2476
2015-01-14 14:35:50.593    ss=0
2015-01-14 14:35:50.593    h=2478
2015-01-14 14:35:50.593    zjj=2476

 


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/1/14 15:06:55    Post IP:58.246.57.26[只看该作者]

VARIABLE

改成

GLOBALVARIABLE

 

公式改成序列计算



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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:97 积分:0 威望:0 精华:0 注册:2013/11/28 23:30:38
  发帖心情 Post By:2015/1/14 15:13:17    Post IP:101.231.104.2[只看该作者]

谢谢版主!

 

也就是后台固定轮询模式时需要把公式改为序列? 只有等k走完模式公式才为逐K计算?


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/1/14 15:22:36    Post IP:58.246.57.26[只看该作者]

不是,后台基本都是序列计算,你在后台上使用了图表函数所以到了公式被切换到逐k线计算


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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:97 积分:0 威望:0 精华:0 注册:2013/11/28 23:30:38
  发帖心情 Post By:2015/1/15 10:56:08    Post IP:101.231.104.2[只看该作者]

①改了GLOBALVARIABLE,同时注释掉了图表的函数。
②逐K改为序列
但是依然每个tick都打印出来,并且开仓平仓点位都不对了,你们本地测试下看看,代码在下面

2015-01-15 10:21:59.321    ss=0
2015-01-15 10:21:59.337    h=3510
2015-01-15 10:21:59.337    zjj=3507
2015-01-15 10:22:06.618    ss=1
2015-01-15 10:22:06.633    l=3506
2015-01-15 10:22:06.633    l_1=3506
2015-01-15 10:22:08.024    ss=0
2015-01-15 10:22:08.040    h=3510
2015-01-15 10:22:08.040    zjj=3507
2015-01-15 10:22:09.602    ss=1
2015-01-15 10:22:09.602    l=3506
2015-01-15 10:22:09.618    l_1=3506
2015-01-15 10:22:11.087    ss=0
2015-01-15 10:22:11.102    h=3510
2015-01-15 10:22:11.102    zjj=3507
2015-01-15 10:22:11.977    ss=0
2015-01-15 10:22:11.977    h=2508
2015-01-15 10:22:11.977    zjj=2505
2015-01-15 10:22:19.040    ss=0
2015-01-15 10:22:19.055    h=2508
2015-01-15 10:22:19.055    zjj=2505



INPUT: lots(1,1,10,1);

GLOBALVARIABLE: signal := 0;
ss := signal;

h_1 := ref(h,1);
l_1 := ref(l,1);

zjj := (h_1 + l_1) / 2,NODRAW;

if ss = 0 and h >= (h_1 + l_1) / 2 then BEGIN
   DEBUGFILE('C:\TEST1.TXT','ss=%.0f',ss);
   DEBUGFILE('C:\TEST1.TXT','h=%.0f',h);
   DEBUGFILE('C:\TEST1.TXT','zjj=%.0f',zjj);
   signal := 1;
   myprice := (h_1 + l_1) / 2;
end;



if ss > 0 and l <= l_1 then BEGIN
   DEBUGFILE('C:\TEST1.TXT','ss=%.0f',ss);
   DEBUGFILE('C:\TEST1.TXT','l=%.0f',l);
   DEBUGFILE('C:\TEST1.TXT','l_1=%.0f',l_1);
   signal := 0;
   myprice := min(l_1,o);
end;





//后台部分
if ss < 0 and signal >= 0 then begin
    tsellshort(workmode = 1, -ss * lots, MKT);
    //sellshort(workmode = 0, -ss * lots, LIMITR, myprice);
    ss := 0;
end;
if ss > 0 and signal <= 0 then begin
    tsell(workmode = 1, ss * lots, MKT);
    //sell(workmode = 0, ss * lots, LIMITR, myprice);
    ss := 0;
end;

tbuy(workmode = 1 and ss < signal, (signal - ss) * lots, MKT);
//buy(workmode = 0 and ss < signal, (signal - ss) * lots, LIMITR, myprice);
tbuyshort(workmode = 1 and ss > signal, (ss - signal) * lots, MKT);
//buyshort(workmode = 0 and ss > signal, (ss - signal) * lots, LIMITR, myprice);

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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2015/1/15 11:31:04    Post IP:58.246.57.26[只看该作者]

DEBUGFILE,这里就说明你给了会在最后一周期输出,只要满足条件就输出

②固定1秒扫描 + 分笔扫描

那么基本上就是1秒左右,只要满足条件h >= (h_1 + l_1) / 2或l <= l_1,就会有输出

在最后一个周期输出指定的调试字符串到一个指定的文件中
用户可以在程式化交易中通过输出指定的字符串到文件来实现调试的目的.借此可以借助这个功能来完成监控程式化交易的各种细节参数

 

你不就是输出下面这6个值吗?

2015-01-15 10:21:59.321    ss=0
2015-01-15 10:21:59.337    h=3510
2015-01-15 10:21:59.337    zjj=3507
2015-01-15 10:22:06.618    ss=1
2015-01-15 10:22:06.633    l=3506
2015-01-15 10:22:06.633    l_1=3506

怎么还跟开仓平仓点位联系上了,

 

你的ss和signal联系的非常紧密,每次运算都会根据运算结果进行赋值的

[此贴子已经被作者于2015/1/15 11:31:23编辑过]


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

客户服务部

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

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

service@weistock.com

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

 回到顶部