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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → variable问题:后面怎么无法保存上一个k线的全局变量

   

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


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

主题:variable问题:后面怎么无法保存上一个k线的全局变量

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


加好友 发短信
等级:新手上路 帖子:29 积分:0 威望:0 精华:0 注册:2016/8/11 14:37:06
variable问题:后面怎么无法保存上一个k线的全局变量  发帖心情 Post By:2016/9/30 15:48:57    Post IP:183.14.16.231[只看该作者]


RUNMODE:0;
VARIABLE:FLAG=0,HL=0;//
IF HOLDING<>0 THEN FLAG:=1;
//VARIABLE:FLAG=3;//
//中间变量
INPUT:N(40,1,100,10),SS(1,1,10000,1);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
手数:=SS;

MA1:REF(MA(((H+L+C)/3,N)),1);//三价平均线
浮动区间:=REF(MA(TR,N),1);//真实振幅的移动平均线
上轨:MA1+浮动区间;
下轨:MA1-浮动区间;

//交易条件
开多条件:=MA1>REF(MA1,1) AND C>上轨;
开空条件:=MA1<REF(MA1,1) AND C<下轨;
平多条件:=C<MA1;
平空条件:=C>MA1;


//////平仓信号:1、止盈2、止损3、中轨平仓
   //1、最大获利点数
开多最大盈利:=HHV(H,ENTERBARS)-ENTERPRICE;
开空最大盈利:=ENTERPRICE-LLV(L,ENTERBARS);
IF HOLDING<0 AND ENTERPRICE-C>=ENTERPRICE*0.3 THEN P:=30; //如果盈利30%以上回撤30%止盈
IF HOLDING>0 AND C-ENTERPRICE>=ENTERPRICE*0.3 THEN P:=30; //如果盈利30%以上回撤30%止盈
IF HOLDING<0 AND ENTERPRICE-C<ENTERPRICE*0.3 AND ENTERPRICE-C>ENTERPRICE*0.1 THEN P:=15; //如果盈利10%~30%以上回撤15%止盈
IF HOLDING>0 AND C-ENTERPRICE<ENTERPRICE*0.3 AND C-ENTERPRICE>ENTERPRICE*0.1 THEN P:=15; //如果盈利10%~30%以上回撤15%止盈

   //2、计算跟踪止盈价位,向价格不利方向取p%
开多止盈点位:=ENTERPRICE+FLOOR(开多最大盈利*(1-P/100));
开空止盈点位:=ENTERPRICE-CEILING(开空最大盈利*(1-P/100));

IF HOLDING<0 AND ENTERBARS>0 AND 开空最大盈利>0 AND C>开空止盈点位 AND ENTERPRICE-C>ENTERPRICE*0.1 THEN //开空止盈
   BEGIN
      //HL:=HOLDING;
      空头止盈:SELLSHORT(1,手数,THISCLOSE);
      FLAG:=1;    
   END
ELSE IF HOLDING<0 AND (C-ENTERPRICE>ENTERPRICE*0.05) THEN //止损
   BEGIN
      //HL:=HOLDING;
      平空止损:SELLSHORT(1,手数,THISCLOSE);
      FLAG:=0;
   END
   ELSE
   BEGIN
      //HL:=HOLDING;
      平空:SELLSHORT(平空条件 AND HOLDING<0,手数,THISCLOSE);
      FLAG:=0;
   END
IF HOLDING>0 AND ENTERBARS>0 AND 开多最大盈利>0 AND C<开多止盈点位 AND C-ENTERPRICE>ENTERPRICE*0.1 THEN  //开多止盈
   BEGIN
     
      多头止盈:SELL(1,手数,THISCLOSE);
      FLAG:=1;
   END
 ELSE IF HOLDING>0 AND (C-ENTERPRICE<-ENTERPRICE*0.05) THEN //止损
   BEGIN
 
      平多止损:SELL(1,手数,THISCLOSE);
      FLAG:=0;
   END
   ELSE
   BEGIN
      平多:SELL(平多条件 AND HOLDING>0,手数,THISCLOSE);
      FLAG:=0;
   END


平多止盈最低:=LLV(L,EXITBARS);
平空止盈最高:=HHV(H,EXITBARS);     
IF CROSS(EXITPRICE,C) AND FLAG=1 AND EXITBARS>2 AND 平空止盈最高<下轨 AND HOLDING>=0 THEN
     突破止盈位开空:BUYSHORT(1,手数,THISCLOSE);
  ELSE IF 平空止盈最高>下轨 AND EXITBARS>2 AND 开空条件=1 AND HOLDING>=0 THEN
     止盈突破下轨开空: BUY(1,手数,THISCLOSE);
  ELSE 开空:BUYSHORT(开空条件 AND HOLDING>=0 AND FLAG=0,手数,THISCLOSE);

IF CROSS(C,EXITPRICE) AND FLAG=1 AND EXITBARS>2 AND 平多止盈最低>上轨 AND HOLDING<=0 THEN
     突破止盈位开多:BUY(1,手数,THISCLOSE);
  ELSE IF 平多止盈最低<上轨 AND EXITBARS>2 AND 开多条件=1 AND HOLDING<=0 THEN
     止盈突破上轨开多: BUY(1,手数,THISCLOSE);
  ELSE 开多:BUY(开多条件 AND HOLDING<=0 AND FLAG=0,手数,THISCLOSE);


//msgout(1,'FLAG=' & numtostr(FLAG,0) & ' HL=' & numtostr(HL,0));
//HLD:HL,NODRAW;
信号:FLAG,NODRAW;
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值

 

 

 

明明用的已经是定义了的全局变量flag,每次在平仓的时候都会说明这次平仓信号是因为什么原因平仓的,但是输出的flag却一直都是0.这是什么原因呢,因为后面紫色部分是要根据前面平仓信号是什么样的选择性的开仓,所以,必须要设置这样一个全局变量。


 回到顶部