以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]收盘时全局变量赋值0的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=175805)

--  作者:金色阳光2020
--  发布时间:2020/4/29 10:47:20
--  [求助]收盘时全局变量赋值0的问题
IF TIME=CLOSETIME(0) THEN NUM:=0; 
5分K线上,一直没有恢复0?导致后继无开仓。

--  作者:FireScript
--  发布时间:2020/4/29 11:08:28
--  
 你看下是不是其他地方又给重新赋值了。
--  作者:金色阳光2020
--  发布时间:2020/4/29 11:22:10
--  
是最后一条语句,却一直无法恢复。


input:n(4,1,100,1),K1(0.7,0.1,1,0.1),k2(0.7,0.1,1,0.1),nmin(50,1,100,1),ss(4,1,100,1);
variable:num=0;
CYC:=barslast(date<>ref(date,1))+1;
昨高:=callstock(stklabel,vthigh,6,-1);
昨低:=callstock(stklabel,vtlow,6,-1);
昨收:=callstock(stklabel,vtclose,6,-1);
开盘价:=valuewhen(cyc=1,open);
HH:=hhv(昨高,n);//N日high的最高价
HC:=hhv(昨收,n);//N日close的最高价
LC:=LLV(昨收,n);//N日close的最低价
LL:=LLV(昨低,n);//N日low的最低价
浮动区间:=max(HH-LL,HC-LL);//range
上轨:开盘价+k1*浮动区间;
下轨:开盘价-K2*浮动区间;
t1:=time>opentime(1) and time<closetime(0)-nmin*100;
t2:=time>=closetime(0)-nmin*100;
手数:=ss;
//交易条件 www.cxh99.com
开多条件:=c>上轨 and holding=0;
开空条件:=c<下轨 and holding=0;

if holding>0 then
  begin
    zyp:=enterprice*1.02;
    zsp:=enterprice*0.99;
    cdy:=h>zyp;
    cds:=l<zsp; 
    多盈:sell(cdy,手数,marketr),linethick0;
    多损:sell(cds,手数,marketr),linethick0;
    //num:=1;
  end;

if holding<0 then
  begin
    zyp:=enterprice*0.98;
    zsp:=enterprice*1.01;
    cdy:=l<zyp;
    cds:=h>zsp;
    空盈:sellshort(cdy,手数,marketr),linethick0;
    空损:sellshort(cds,手数,marketr),linethick0;
    //num:=1;
  end;
 
//交易系统
if holding=0 then
begin
  开多:buy(开多条件 and t1 and cyc>1 and num<1,手数,market);
  开空:buyshort(开空条件 and t1 and cyc>1 and num<1,手数,market);
  num:=1;
end;
 
 
收盘平多:sell(t2,手数,market);    
收盘平空:sellshort(t2,手数,market);
IF TIME>CLOSETIME(0) THEN
begin
  num:=0;
end;

Nu:num,linethick0;
 

--  作者:FireScript
--  发布时间:2020/4/29 12:23:17
--  
 TIME>CLOSETIME(0) 改成 TIME>=CLOSETIME(0)

或者直接改成=  也行。 time值肯定不会大于CLOSETIME(0)的。

--  作者:金色阳光2020
--  发布时间:2020/4/29 13:39:52
--  
最早,用time=closetime(0),没用
后改为time>closetime(0)-1000,也改为time>closetime(0)-500,都不起作用。我也搞不清怎么回事。

--  作者:FireScript
--  发布时间:2020/4/29 13:42:56
--  
 因为还有个问题。

if holding=0 then
begin
  开多:buy(开多条件 and t1 and cyc>1 and num<1,手数,market);
  开空:buyshort(开空条件 and t1 and cyc>1 and num<1,手数,market);
  num:=1;
end;

只要仓位是0  num总会在当日第一个K被重设为1

--  作者:金色阳光2020
--  发布时间:2020/4/29 13:47:35
--  
呵呵,谢谢你,这个有道理。
我再搞搞~

--  作者:FireScript
--  发布时间:2020/4/29 13:48:00
--  
 你应该这样:

if 开多条件 and holding=0 then
begin
  开多:buy(开多条件 and t1 and cyc>1 and num<1,手数,market);
  num:=1;
end

开空也是这样的。

--  作者:金色阳光2020
--  发布时间:2020/4/29 14:50:17
--  
好的