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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请教止盈止损后排斥同方向开仓的问题

   

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


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

主题:请教止盈止损后排斥同方向开仓的问题

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:04:58    Post IP:220.248.43.235[显示全部帖子]

请教如何修改可以达到 当日多单止盈止损后同方向不开仓 的目的呢?

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:10:34    Post IP:220.248.43.235[显示全部帖子]

噢,我再仔细拜读下

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:17:59    Post IP:220.248.43.235[显示全部帖子]

现在改成如下这样了,还是无法避免同方向开仓(如图)。实在是想不出办法了,求老师解惑。

 

 

input:ss(1,1,100,1),nmin1(41,1,100,1),nmin2(1,1,100,1),n1(0,0,100,1),,n2(22,1,60,1),n3(13,10,20,1),n4(59,1,80,1);
N:=barslast(date<>ref(date,1))+1;
开盘30分钟最高价:=valuewhen(time<=090000+nmin1*100,hhv(h,n));
开盘30分钟最低价:=valuewhen(time<=090000+nmin1*100,llv(l,n));
上轨:开盘30分钟最高价+n1*mindiff;
下轨:开盘30分钟最低价-N1*mindiff;

//条件
开多条件:=cross(c,上轨);
开空条件:=cross(下轨,c);
t1:=time>091500+nmin2*100 and time<151000;
t2:=time=151300;

//交易系统

VARIABLE:DUOKONG=0;
variable:kaiguan_duo=0;//多头开关
variable:kaiguan_kong=0;//空头开关

TSFS:=0;     {停损反手,1-反手 0-不反手}
开仓手数:=ss;     {开仓手数}
ZSDS:=n4/100;     {止损百分比}
//以下变量用于移动止盈
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=n2/100,KHCDS=n2/100;   {多、空单回撤百分比}
VARIABLE:DYLDS=n3,KYLDS=n3;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值百分比就平仓}
VARIABLE:Z3B1:=0;     {赚3保1开关}
DUOKONG:=1;

//持有空单
IF HOLDING<0 and kaiguan_kong=0 THEN BEGIN
 IF t2 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,market),ORDERQUEUE;
  kaiguan_kong:=1;
 END
 
 //止损59%
 IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS and kaiguan_kong=0 THEN BEGIN
  空损:SELLSHORT(1,0,market),ORDERQUEUE;
  kaiguan_kong:=1;
 END
 
 //空单移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END
 
  //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
   IF (L-LOWPRICE)/LOWPRICE*100>=KHCDS and kaiguan_kong=0 THEN BEGIN  //回撤超过的百分比
    空赢:SELLSHORT(1,0,MARKET);
    kaiguan_kong:=1;
   END
  END
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
   END
  END
 END
END

//开多单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF 开多条件 and t1 THEN BEGIN
   多开:BUY(1=1,ss,market);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  END
 END
END

//持有多单
IF HOLDING>0 and kaiguan_duo=0 THEN BEGIN
 IF t2 THEN BEGIN  {平多单}
  多平:SELL(1,0,market),ORDERQUEUE;
  kaiguan_duo:=1;
 END
 
 //多单管理
 //多单止损
 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS and kaiguan_duo=0 THEN BEGIN
  多损:SELL(1,0,market),ORDERQUEUE;
  kaiguan_duo:=1;
 END
 
 //多单移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
  END
 
  //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利
  IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
   IF (HIGHPRICE-H)/HIGHPRICE*100>=DHCDS and kaiguan_duo=0 THEN BEGIN  //回撤超过22%
    多赢:SELL(1,0,MARKET);
     kaiguan_duo:=1;
   END
  END
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN
   IF H-ENTERPRICE<=1.2 THEN BEGIN
    多保:SELL(1,0,MARKET);
   END
  END
 END
END

//开空单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
  IF 开空条件 and t1 THEN BEGIN
   空开:BUYSHORT(1=1,ss,market);
   LOWPRICE:=ENTERPRICE;
  END
 END
END

 if time=closetime(0) then begin
    kaiguan_duo:=0;
    kaiguan_kong:=0;

  end


图片点击可在新窗口打开查看此主题相关图片如下:tm截图未命名.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:19:31    Post IP:220.248.43.235[显示全部帖子]

好的我试试看,多谢指点!

 

那下面应该改成怎么样呢?


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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:25:09    Post IP:220.248.43.235[显示全部帖子]

多谢热心教诲,我试试。

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:26:45    Post IP:220.248.43.235[显示全部帖子]

以下是引用QQ56048933在2013/10/24 14:14:05的发言:

上面是引用你的  这样 你直接把改一个地方就可以了  开仓条件那里

开多条件:=cross(c,上轨) and kaiguan_duo=0;
开空条件:=cross(下轨,c) and kaiguan_kong=0;

 

这样改,显示 kaiguan_duo=0 没有定义


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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:39:14    Post IP:220.248.43.235[显示全部帖子]

以下是引用lxihua5201在2013/10/24 14:18:45的发言:

//开多单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF 开多条件 AND T1 THEN BEGIN
   多开:BUY(1=1,SS,MARKET);
   HIGHPRICE:=ENTERPRICE;
    DUOKONG=0;  //将开仓价保存到最高价
  END 
 END
END
iF HOLDING=0 THEN BEGIN
 IF DUOKONG=0 OR DUOKONG=3 THEN BEGIN
  IF 开空条件 AND T1 THEN BEGIN
   空开:BUYSHORT(1=1,SS,MARKET);
   LOWPRICE:=ENTERPRICE;
   DUOKONG=1;
  END 
 END
END
在开多空单的时候加上DUOKONG=1;和DUOKONG=0;

还是不行啊,变成下图这个样子了。(修改后代码如下)

 

input:ss(1,1,100,1),nmin1(41,1,100,1),nmin2(1,1,100,1),n1(0,0,100,1),,n2(22,1,60,1),n3(13,10,20,1),n4(59,1,80,1);
N:=barslast(date<>ref(date,1))+1;
开盘30分钟最高价:=valuewhen(time<=090000+nmin1*100,hhv(h,n));
开盘30分钟最低价:=valuewhen(time<=090000+nmin1*100,llv(l,n));
上轨:开盘30分钟最高价+n1*mindiff;
下轨:开盘30分钟最低价-N1*mindiff;

//条件
开多条件:=cross(c,上轨);
开空条件:=cross(下轨,c);

t1:=time>091500+nmin2*100 and time<151000;
t2:=time=151300;

//交易系统

VARIABLE:DUOKONG=0;


TSFS:=0;     {停损反手,1-反手 0-不反手}
开仓手数:=ss;     {开仓手数}
ZSDS:=n4/100;     {止损百分比}
//以下变量用于移动止盈
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=n2/100,KHCDS=n2/100;   {多、空单回撤百分比}
VARIABLE:DYLDS=n3,KYLDS=n3;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值百分比就平仓}
VARIABLE:Z3B1:=0;     {赚3保1开关}
DUOKONG:=1;

//持有空单
IF HOLDING<0 and kaiguan_kong=0 THEN BEGIN
 IF t2 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,market),ORDERQUEUE;
  kaiguan_kong:=1;
 END
 
 //止损59%
 IF (C-ENTERPRICE)/ENTERPRICE*100>=ZSDS THEN BEGIN
  空损:SELLSHORT(1,0,market),ORDERQUEUE;
 END
 
 //空单移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END
 
  //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
   IF (L-LOWPRICE)/LOWPRICE*100>=KHCDS  THEN BEGIN  //回撤超过的百分比
    空赢:SELLSHORT(1,0,MARKET);
   END
  END
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
   END
  END
 END
END

//开多单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF 开多条件 and t1 THEN BEGIN
   多开:BUY(1=1,ss,market);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
   DUOKONG=0;
  END
 END
END

//持有多单
IF HOLDING>0 THEN BEGIN
 IF t2 THEN BEGIN  {平多单}
  多平:SELL(1,0,market),ORDERQUEUE;
 END
 
 //多单管理
 //多单止损
 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS  THEN BEGIN
  多损:SELL(1,0,market),ORDERQUEUE;
 END
 
 //多单移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
  END
 
  //如果盈利超过10点之后回撤达到22%,就平仓,保住盈利
  IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
   IF (HIGHPRICE-H)/HIGHPRICE*100>=DHCDS  THEN BEGIN  //回撤超过22%
    多赢:SELL(1,0,MARKET);
   END
  END
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN
   IF H-ENTERPRICE<=1.2 THEN BEGIN
    多保:SELL(1,0,MARKET);
   END
  END
 END
END

//开空单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
  IF 开空条件 and t1 THEN BEGIN
   空开:BUYSHORT(1=1,ss,market);
   LOWPRICE:=ENTERPRICE;
   DUOKONG=1;
  END
 END
END

 if time=closetime(0) then begin
    kaiguan_duo:=0;
    kaiguan_kong:=0;
  end


 

 


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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:39:44    Post IP:220.248.43.235[显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:tm截图未命名.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:47:20    Post IP:220.248.43.235[显示全部帖子]

以下是引用QQ56048933在2013/10/24 14:44:08的发言:
图片点击可在新窗口打开查看

 

真厉害!实现了啊。我再试试,谢谢指导!


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


加好友 发短信
等级:论坛游侠 帖子:143 积分:0 威望:0 精华:0 注册:2012/6/15 23:21:45
  发帖心情 Post By:2013/10/24 14:50:22    Post IP:220.248.43.235[显示全部帖子]

以下是引用QQ56048933在2013/10/24 14:44:58的发言:

把这几句放到 开关定义后面去就可以了

 

请教老师,其他地方(比如止盈止损)就不用写开关这两行了吗?

比如

 

//多单止损
 IF (ENTERPRICE-C)/ENTERPRICE*100>=ZSDS and kaiguan_duo=0 THEN BEGIN
  多损:SELL(1,0,market),ORDERQUEUE;
  kaiguan_duo=1;
 END


 回到顶部
总数 27 上一页 1 2 3 下一页