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


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

   

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


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

主题:关于VARIABLE定义的变量的问题

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


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

左右两边的代码是不一样的,左边有交易语句所以出了信号,右边没有交易语句,所以信号是没有的


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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:81 积分:0 威望:0 精华:0 注册:2016/3/22 16:42:57
  发帖心情 Post By:2016/3/31 14:49:44    Post IP:125.33.53.41[只看该作者]

也许我的问题没有说明白:  
     问题描述:     左右量变出信号都是一样的代码,关键是“大盘信号”,  区别在于左边有buy 等交易语句,而右边没有。 现在我的问题是如何解决左边的交易动作频繁的发动? 这无法进行有效交易了

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


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

那信号要修改成什么样的?


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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:81 积分:0 威望:0 精华:0 注册:2016/3/22 16:42:57
  发帖心情 Post By:2016/3/31 15:22:07    Post IP:125.33.53.41[只看该作者]

问题解决了。 是因为全局变量的控制问题,因为全局变量被赋值后直到重新赋值之前,它的值都存在原来所赋予的值。 谢谢

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


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

//INPUT:P1(10,5,100,1),P2(30,5,100,1),P3(60,5,100,1);


INPUT:MAP1(10,5,100,1),MAP2(30,5,100,1),MAP3(60,5,100,1);

 


VARIABLE: flag = 0;  //1:已经开多了,-1:已经开空了    0:未持有多空交易单子


VARIABLE: 大盘信号 = 0;  //0:无信号状态  1:多头信号   -1:空头信号
VARIABLE: 大盘平仓信号 = 0;  //0:无信号状态  1:平空头信号   -1:平多头信号


EMA1:= EMA(CLOSE, MAP1);
EMA2:= EMA(CLOSE, MAP2);
EMA3:= EMA(CLOSE, MAP3);


//大盘数据信号分析处理 start


//大盘数据获取
// 1分钟
HS300_CLOSE:= CALLSTOCK('SH300',vtCLOSE,1),LINETHICK0;
HS300_OPEN:= CALLSTOCK('SH300',vtOPEN,1),LINETHICK0;
HS300_EMA:= EMA(HS300_CLOSE, MAP3),LINETHICK0;


//5秒数据
HS300_CLOSE_SECOND:= CALLSTOCK('SH300',vtCLOSE,22,5),LINETHICK0;
HS300_OPEN_SECOND:= CALLSTOCK('SH300',vtOPEN,22,5),LINETHICK0;

 

 


//本K开盘价大于于前K开盘价:= HS300_OPEN > REF(HS300_OPEN,1);


//大盘多空趋势: IFELSE(CLOSE>HS300_EMA, 1, -1),LINETHICK0;


//大盘信号: IFELSE(HS300_CLOSE>HS300_EMA, 1, -1),LINETHICK0;
//HS300_MA: STKINDI(
 OpenRefOpen:= HS300_OPEN > REF(HS300_OPEN,1);


 CloseRefOpen_Second:= HS300_CLOSE_SECOND > REF(HS300_OPEN_SECOND, 6);
 
 BeforBarIsDown:= REF(HS300_CLOSE,1)< REF(HS300_OPEN,1);
 
 BeforBarIsUp:= REF(HS300_CLOSE,1)> REF(HS300_OPEN,1);
 
 
 //用于顺势(和均线方向相反的情况)交易信号的发出 的量化数据 start
 IsDownContiTwo := REF(ISDOWN(),1) and  REF(ISDOWN(),2);
 IsUpContinTwo:= REF(ISUP(),1) and  REF(ISUP(),2) ;
 //用于顺势(和均线方向相反的情况)交易信号的发出 的量化数据 end
 
 
 //用于逆势(和均线方向相反的情况)交易信号的发出 的量化数据 start
 //本K前面的K线是否连续收阴
 IsDownContinThree:= REF(ISDOWN(),1) and  REF(ISDOWN(),2) and REF(ISDOWN(),3);
 //阳线上穿前阴K 50%
 UPOverP50:= HS300_CLOSE>(REF(HS300_CLOSE,1)+ABS(REF(HS300_OPEN,1)-REF(HS300_CLOSE,1))/2);
 
  //本K前面的K线是否连续收阳
 IsUpContinThree:= REF(ISUP(),1) and  REF(ISUP(),2) and REF(ISUP(),3);
  //阴线下穿前阳K 50%
 DownOverP50:= HS300_CLOSE<(REF(HS300_CLOSE,1)-ABS(REF(HS300_OPEN,1)-REF(HS300_CLOSE,1))/2);
 
 //用于逆势(和均线方向相反的情况)交易信号的发出 的量化数据 end
 
 
 //平仓信号
 //如果前K是阴线则本K为阳线的时候发出平空信号
if BeforBarIsDown and ISUP() then
begin
    大盘平仓信号:= 1;
end


 //如果前K是阳线则本K为阴线的时候发出平多信号
if BeforBarIsUp and ISDOWN() then
begin
    大盘平仓信号:= -1;
end


 
 //K线在指定均线之上
 if HS300_CLOSE > HS300_EMA then
 begin
      //由阴转阳
     if  BeforBarIsDown and  HS300_CLOSE > HS300_OPEN and IsDownContiTwo and HS300_CLOSE > HS300_EMA then
     begin
        大盘信号 := 1;
        DRAWICON(TRUE,LOW-2,1);      
     end
     else if IsUpContinThree and DownOverP50 and HS300_CLOSE > HS300_EMA then
     begin
        大盘信号 := -1;
        DRAWICON(TRUE,HIGH+2,2);       
     end
 end
 
 else
 //K线在指定均线之下
  if HS300_CLOSE < HS300_EMA then
  begin
    //由阳转阴线
    if BeforBarIsUp and HS300_CLOSE < HS300_OPEN and IsUpContinTwo and HS300_CLOSE < HS300_EMA then
    begin
        大盘信号 := -1;
        DRAWICON(TRUE,HIGH+2,2);      
    end
    else if IsDownContinThree and UPOverP50 and HS300_CLOSE < HS300_EMA then
    begin
        大盘信号 := 1;
        DRAWICON(TRUE,LOW-2,1); 
    end
   
  end
 
 
 
 //大盘数据信号分析处理 end

 

 


//中间变量

 


个股方向:IFELSE(Close> EMA3, 1,-1),LINETHICK0; //1:多头,-1:空头


//如果大盘出现空头信号

 


//TIMESHOW:TIME,LINETHICK0;
//CURRENTTIMESHOW:CURRENTTIME,LINETHICK0;

 

 


//本K开盘价大于于前K开盘价:= HS300_OPEN > REF(HS300_OPEN,1);


//大盘多空趋势: IFELSE(CLOSE>HS300_EMA, 1, -1),LINETHICK0;

 

 


//交易条件
//开多条件:= 个股方向 = 1 AND 大盘信号 = 1 AND  TIME>094000 AND  TIME<145000;
//平多条件:= 大盘平仓信号 = -1 OR CROSS(EMA3,CLOSE) OR TIME>=145000;
开多条件:=  ((BeforBarIsDown and  HS300_CLOSE > HS300_OPEN and IsDownContiTwo and HS300_CLOSE > HS300_EMA) or (IsDownContinThree and UPOverP50 and HS300_CLOSE < HS300_EMA) ) and  TIME>094000 AND  TIME<145000;
平多条件:= ((IsUpContinThree and DownOverP50 and HS300_CLOSE > HS300_EMA) or (BeforBarIsUp and HS300_CLOSE < HS300_OPEN and IsUpContinTwo and HS300_CLOSE < HS300_EMA))  OR TIME>=145000;


//开空条件:= 个股方向 = -1 AND 大盘信号 = -1  AND  TIME>094000 AND TIME<145000;
//平空条件:=  大盘平仓信号 = 1 OR CROSS(CLOSE, EMA3)OR TIME>=145000;
开空条件:=((IsUpContinThree and DownOverP50 and HS300_CLOSE > HS300_EMA) or (BeforBarIsUp and HS300_CLOSE < HS300_OPEN and IsUpContinTwo and HS300_CLOSE < HS300_EMA)) and   TIME>094000 AND TIME<145000;
平空条件:=   ((BeforBarIsDown and  HS300_CLOSE > HS300_OPEN and IsDownContiTwo and HS300_CLOSE > HS300_EMA) or (IsDownContinThree and UPOverP50 and HS300_CLOSE < HS300_EMA) ) OR TIME>=145000;

 

 


//交易系统
if   flag = 0 and 开多条件 and holding=0  then
BEGIN
    BUY(开多条件 ,1000,marketR);//交易系统之开多操作
    flag := 1;
end


if flag =1 and 平多条件 and holding>0  THEN
BEGIN
    SELL(平多条件 ,1000,marketR); //交易系统之平多操作
    flag := 0;
End

 


if flag =0 and 开空条件 and holding=0   THEN
BEGIN
    BUYSHORT(开空条件 ,1000,marketR); //交易系统之开空操作
    flag := -1;
End


if flag = -1 and 平空条件 and holding<0   THEN
BEGIN
    SELLSHORT(平空条件 ,1000,marketR); //交易系统之平空操作
    flag := 0;
End

 

 

我修改的,信号和笑脸就一样了



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

客户服务部

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

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

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


加好友 发短信
等级:新手上路 帖子:81 积分:0 威望:0 精华:0 注册:2016/3/22 16:42:57
  发帖心情 Post By:2016/4/11 22:37:06    Post IP:114.111.167.94[只看该作者]

没有看出那里修改了啊? 请指示

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/4/12 9:47:16    Post IP:58.246.57.26[只看该作者]

过了10几天了,不太记得前面的细节了,把你要的开仓条件讲一下, 不要是什么开多条件=1


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

客户服务部

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

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

 回到顶部
总数 17 上一页 1 2