以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  凌乱了走完K线  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=52576)

--  作者:李亚弟
--  发布时间:2013/5/29 14:34:52
--  凌乱了走完K线

要执行debugfile须得 holding<0,可是当hold=0时,竟然也debugfile。怎么是这样子
图片点击可在新窗口打开查看此主题相关图片如下:仅刷最后一个k.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:平空.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:连续平空信息.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:走完k线.png
图片点击可在新窗口打开查看


--  作者:jinzhe
--  发布时间:2013/5/29 14:41:02
--  

把全部代码帖一下


--  作者:李亚弟
--  发布时间:2013/5/29 14:46:09
--  
//05  测试交易控制符
runmode:0;
variable:cc=0,zs=0,zy=0,daywindot=0,kcj=0;
exittime:=time>=145400; 
closetime1:=time>=150500;

{ 信号输出需要添加的代码 --- BEGIN }
{ 变量(writeFileFlag + 3) --- 3是代表策略编号,不同策略编号唯一;
  writeFileFlag3 指的是开仓方向: 1-开多 2-平多  3-开空 4-平空  }
globalvariable:writeFileFlag3=0,longFlag=0,shortFlag=0,initFlag=0;

if ISLASTBAR and initFlag = 0 then BEGIN
if holding > 0 then begin longFlag := 1; end
if holding < 0 then begin shortFlag := 1; end
initFlag := 1;
end
{ 信号输出需要添加的代码 --- END }

A:MA(C,M);
B:MA(C,N);
bb:=REF(C,1)>REF(B,1);{bb - 开多条件}
pd:=REF(C,1)<REF(A,1);{pd - 平多条件}
ss:=REF(C,1)<REF(A,1);{ss - 开空条件}
pk:=REF(C,1)>REF(B,1);{pk - 平空条件}

if cc>0 and pd then begin cc:=0; end //平多单 drawtext(1,o,\'2\',colorred,4);
if cc<0 and pk then begin cc:=0; end  //平空单


//平空
if holding<0 and cc>=0 then begin 
sellshort(1,1,market); 
debugfile(\'d:\\jzt\\sinnal14.txt\',\'运行了1次平空,holding是%.2f\',holding);
pcj:=o;
//drawtext(1,o,\'4\',colorgreen,4);
if islastbar && writeFileFlag3 <> 4 && shortFlag = 1 then begin
shortFlag := 0;
writeFileFlag3 := 4;
debugfile2(\'D:\\jzt\\signal3.txt\', numtostr(date+19000000,0) + \',\' + numtostr(time,3) + \',\' +  numtostr(writeFileFlag3,0) + \',\'+ \'%.2f\', pcj,0);
debugfile2(\'D:\\jzt\\signal3copy.txt\', numtostr(date+19000000,0) + \',\' + numtostr(time,3) + \',\' +  numtostr(writeFileFlag3,0) + \',\'+ \'%.2f\', pcj,0);
end 
end 


//开空单
if cc=0 and ss then begin
cc:=-1;
zs:=c+c*30/10000;//空单止损条件
zy:=c-c*30*100/10000;//多单止盈条件
end

if exittime then begin
cc:=0;
end 


 
//开空单
if holding=0 and cc<0 then  begin 
    buyshort(1,1,market); 
    debugfile(\'d:\\jzt\\sinnal14.txt\',\'运行了1次开空,holding是%.2f\',holding);
    kcj:=open;
    //drawtext(1,o,\'3\',colorgreen,4);
    if islastbar && writeFileFlag3 <> 3 && shortFlag = 0 then begin
shortFlag := 1;
writeFileFlag3 := 3;
debugfile2(\'D:\\jzt\\signal3.txt\', numtostr(date+19000000,0) + \',\' + numtostr(time,3) + \',\' +  numtostr(writeFileFlag3,0) + \',\' + \'%.2f\', kcj,0);
debugfile2(\'D:\\jzt\\signal3copy.txt\', numtostr(date+19000000,0) + \',\' + numtostr(time,3) + \',\' +  numtostr(writeFileFlag3,0) + \',\' + \'%.2f\', kcj,0);
end 
end

if closetime1 then begin  cc:=0;  end  




--  作者:RogarZ
--  发布时间:2013/5/29 14:47:15
--  
逐K每次从第一根开始运算
这类存在很久,历经用户考验的函数,除非版本更新的原因,一般不可能出错的,不是吗?
置顶的帖子,学习下debugfile正确的使用方法吧

[此贴子已经被作者于2013-5-29 14:48:53编辑过]

--  作者:RogarZ
--  发布时间:2013/5/29 14:50:09
--  
if holding<0 and cc>=0 then begin 
sellshort(1,1,market); 
debugfile(\'d:\\jzt\\sinnal14.txt\',\'运行了1次平空,holding是%.2f\',holding);
pcj:=o;

没有islastbar吧~仔细想想

--  作者:王锋
--  发布时间:2013/5/29 15:03:25
--  

这里的走完K线指的是走完K线后才去检测是否有下单信号予以下单,并不表示连公式都不运行的,只要有行情过来公式是一直在刷新的

上面我再重复一下,请用户及金字塔客服人员仔细阅读!


--  作者:李亚弟
--  发布时间:2013/5/29 15:06:13
--  

图片点击可在新窗口打开查看此主题相关图片如下:仅刷最后一个k.png
图片点击可在新窗口打开查看
这个不是可以替代islastbar吗?
--  作者:李亚弟
--  发布时间:2013/5/29 15:14:06
--  
只要有行情过来公式是一直在刷新 ”,这个是以前我不懂的。但是刷新归刷新,难道连 if 不能满足的语句都会被执行吗?
--  作者:李亚弟
--  发布时间:2013/5/30 10:26:59
--  
没有下文了吗?
--  作者:王锋
--  发布时间:2013/5/30 13:01:45
--  
以下是引用李亚弟在2013-5-29 14:34:52的发言:

要执行debugfile须得 holding<0,可是当hold=0时,竟然也debugfile。怎么是这样子
图片点击可在新窗口打开查看此主题相关图片如下:仅刷最后一个k.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:平空.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:连续平空信息.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:走完k线.png
图片点击可在新窗口打开查看

你把你完整的测试代码发过来我们看看
[此贴子已经被作者于2013-5-30 13:02:39编辑过]