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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 变量使用的问题。

   

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


  共有2048人关注过本帖平板打印复制链接

主题:变量使用的问题。

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


加好友 发短信
等级:新手上路 帖子:81 积分:0 威望:0 精华:0 注册:2016/3/22 16:42:57
变量使用的问题。  发帖心情 Post By:2016/4/19 15:58:37    Post IP:114.250.166.149[只看该作者]


我用代码调试的方法发现  :“开仓次数 ”  “开仓方向 ” 两个变量 只在“ if 开仓方向 = 0 and COND1 then ”这个条件的控制语句执行,而且赋值为1,可为什么后来这个两个又自动变为了 0 ??

INPUT:N(30,10,50,2);
INPUT:MAP3(60,12,90,2);
INPUT:NPOINT(1,1,10,1);
INPUT:NLOST(1,1,10,1);

VARIABLE: 开仓次数:= 0;


VARIABLE: 开仓方向:= 0;  //1:买入股票     -1 :卖出股票
VARIABLE: 开基V:= 100;

VARIABLE:开仓量1:=0;
VARIABLE:开仓量2:=0;
VARIABLE:开仓量3:=0;


VARIABLE:开仓价1:=0;
VARIABLE:开仓价2:=0;
VARIABLE:开仓价3:=0;





HS300_CLOSE: CALLSTOCK('SH300',vtCLOSE,1),LINETHICK0;
HS300_OPEN: CALLSTOCK('SH300',vtOPEN,1),LINETHICK0;
HS300_EMA: EMA(HS300_CLOSE, MAP3),LINETHICK0;
EMA3:= EMA(HS300_CLOSE, MAP3);//,LINETHICK0;
EMA22:= EMA(HS300_CLOSE, 34);//,LINETHICK0;
//EMA1: EMA(HS300_CLOSE, 13);//,LINETHICK0;
//EMA11: EMA(HS300_CLOSE, 8);//,LINETHICK0;

XL:= (EMA3 - REF(EMA3,5))/5;
XL2:= (EMA22 - REF(EMA22,5))/5;


MA1:=MA(CLOSE, N);
TTR := MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR :=REF(MA(TTR,N),1);


 BEFORBARISDOWN:= REF(HS300_CLOSE,1)< REF(HS300_OPEN,1);
 
 BEFORBARISUP:= REF(HS300_CLOSE,1)> REF(HS300_OPEN,1);

   //用于顺势(和均线方向相反的情况)交易信号的发出 的量化数据 START
 ISDOWNCONTINTWO := REF(HS300_CLOSE,1)< REF(HS300_OPEN,1) AND REF(HS300_CLOSE,2)< REF(HS300_OPEN,2);
 ISUPCONTINTWO:= REF(HS300_CLOSE,1)> REF(HS300_OPEN,1) AND REF(HS300_CLOSE,2)> REF(HS300_OPEN,2) ;
 //用于顺势(和均线方向相反的情况)交易信号的发出 的量化数据 END

 //本K前面的K线是否连续收三个阴线
 ISDOWNCONTINTHREE:=   REF(HS300_CLOSE,1)< REF(HS300_OPEN,1) AND REF(HS300_CLOSE,2)< REF(HS300_OPEN,2)AND REF(HS300_CLOSE,3)< REF(HS300_OPEN,3);
  //本K前面的K线是否连续收三个阳线
 ISUPCONTINTHREE:=  REF(HS300_CLOSE,1)> REF(HS300_OPEN,1) AND REF(HS300_CLOSE,2)> REF(HS300_OPEN,2)  AND REF(HS300_CLOSE,3)> REF(HS300_OPEN,3) ;
  
  //DRAWICON();
  
  COND1:= ISDOWNCONTINTHREE AND HS300_CLOSE > HS300_OPEN;
  COND2:= ISUPCONTINTHREE AND HS300_CLOSE < HS300_OPEN;
  
  //DRAWICON(COND1,LOW-3,'ICON1');
 // DRAWICON(COND2,h+3,'ICON2');
  
  
  
  


//加仓
//多单加仓
if COND1 and 开仓方向 = 1 AND 开仓次数 <3  then 
begin 
    if 开仓次数 = 1 then 
    begin 
开仓量2 = 开基V * 3;
BUY(1,开仓量2,LIMITR,CLOSE);
开仓价2:= CLOSE;
开仓次数 := 开仓次数 + 1;             
    end
    
    if 开仓次数 = 2 then 
    begin 
开仓量3 := 开基V * 5;
BUY(1,开仓量3,LIMITR,CLOSE);
开仓价3:= CLOSE;
开仓次数 := 开仓次数 + 1;         
    end        
end 

//空单加仓
IF COND2 AND 开仓方向 = -1 AND 开仓次数 <3  THEN 
begin 
    if 开仓次数 = 1 then 
    begin 
开仓量2 := 开基V * 3;
BUYSHORT(1,开仓量2,LIMITR,CLOSE);
开仓次数 := 开仓次数 + 1;       
    end
    
    if 开仓次数 = 2 then 
    begin 
开仓量3 := 开基V * 5;
BUYSHORT(1,开仓量3,LIMITR,CLOSE);
开仓次数 := 开仓次数 + 1;         
    end      
end 

持仓均价:= (开仓价1*开仓量1+开仓价2*开仓量2+开仓价3*开仓量3)/(开仓量1+开仓量2+开仓量3);

//出场
//固定止盈止损
if 开仓方向 = 1 then 
begin
    止盈:=持仓均价 < close AND ( close - 持仓均价)/持仓均价> 0.01* NPOINT;    
    止损:= 持仓均价 > close AND ( 持仓均价-close)/持仓均价> 0.01* NLOST;
    
    IF COND2 OR 止盈 OR 止损 THEN 
    BEGIN 
    SELL(1,(开仓量1+开仓量2+开仓量3),LIMITR,close);

//出场后还原初始值
开基V:=100;
开仓次数 := 0;
开仓方向 := 0;
开仓量:= 0;
开仓均价:=0;
开仓量1:=0;
开仓量2:=0;
开仓量3:=0;
开仓价1:=0;
开仓价2:=0;
开仓价3:=0;
持仓均价:=0;    
    END     
    //DRAWICON(1,h+1,'ICON5');

end 

if 开仓方向 = -1 then 
begin
    止盈:=持仓均价 > close and ( 持仓均价-close)/持仓均价> 0.01* NPOINT;    
    止损:= 持仓均价 < close and ( close - 持仓均价)/持仓均价> 0.01* NLOST;
    
    IF COND1 OR 止盈 OR 止损 THEN 
    BEGIN 
    SELLSHORT(1,(开仓量1+开仓量2+开仓量3),LIMITR,close);
//出场后还原初始值
开基V:=100;
开仓次数 := 0;
开仓方向 := 0;
开仓量:= 0;
开仓均价:=0;
开仓量1:=0;
开仓量2:=0;
开仓量3:=0;
开仓价1:=0;
开仓价2:=0;
开仓价3:=0;
持仓均价:=0;       
    END      

end 



//第一次开仓   多
 if 开仓方向 = 0 and COND1 then 
 begin 
if  XL>0 then //第一次开仓,同时满足XL>0则重仓入场   //开仓次数 = 0 and 
begin 
开基V := 开仓基数 *2;
end

开仓量1 := 开基V;
 
    BUY(1,开仓量1,LIMITR,CLOSE);
    开仓次数 := 开仓次数 + 1;
    开仓方向 := 1;
    开仓价1:= CLOSE;
    
    DRAWICON(1,h+1,'ICON1');
 
 end 
 
 //第一次开仓   空
 if 开仓方向 = 0 and COND2 then 
 begin 
if  XL< 0 then //第一次开仓,同时满足XL>0则重仓入场   //开仓次数 = 0 and 
begin 
开基V := 开仓基数 *2;
end

开仓量1 := 开基V; 
 
    BUYSHORT(1,开仓量1,LIMITR,CLOSE);  
    开仓次数 := 开仓次数 + 1;
    开仓方向 := -1;
    开仓价1:= CLOSE;
    DRAWICON(1,L-1,'ICON2');
 end 


 回到顶部