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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]关于止盈止损单的开仓手数问题。

   

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


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

主题:[求助]关于止盈止损单的开仓手数问题。

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
[求助]关于止盈止损单的开仓手数问题。  发帖心情 Post By:2014/3/18 10:04:59    Post IP:14.208.199.95[显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140318094929.jpg
图片点击可在新窗口打开查看
如图,
两线交叉成型做单,平空与开多条件同,平多与开空条件同。根据软件例子编的止盈止损策略,加上了限制开仓手数。VARIABLE:kdss=0,kkss=0;发现貌似开多(平多),与开空(平空)各只开一次,然后没交易了,跟设想的每个波段交易一次想法不同。错误在哪里?及如何改呢?


A1:stkindi('','ND',0,22,45);
A2:=stkindi('','XD',0,17,0);


BUY1:=A1>A2;
SELL1:=A1<A2;

ZSDS:=3;     {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=3,KHCDS=3;   {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1;     {赚3保1开关}
VARIABLE:kdss=0,kkss=0;{开多开空次数}

//持有空单
IF HOLDING<0 THEN BEGIN
 IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
 END
 
 //止损
 IF C-ENTERPRICE>=ZSDS THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END 
  
  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢: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 AND TIME<143000 AND kdss=0 THEN BEGIN
  IF BUY1 THEN BEGIN
   多开:BUY(1,1,MARKET);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
    kdss:=1;
  END
 END
 
//持有多单
IF HOLDING>0 THEN BEGIN
 IF SELL1 THEN BEGIN  {平多单}
  多平:SELL(1,0,MARKET),ORDERQUEUE;
 END
 
 //多单管理
 //止损
 IF ENTERPRICE-C>=ZSDS THEN BEGIN
  多损:SELL(1,0,MARKET),ORDERQUEUE;
 END
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
  END 
 
  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
   IF HIGHPRICE-H>=DHCDS THEN BEGIN  //回撤超过3点
    多赢: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 AND TIME<143000 AND kkss=0 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1,1,MARKET);
   LOWPRICE:=ENTERPRICE;
     kkss:=1;
  END 
 END


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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 11:11:08    Post IP:14.208.199.95[显示全部帖子]

各段开平止损止盈仓语句都加上了赋值,现在有新一段波段,但没任何信号了。


此主题相关图片如下:qq图片20140318110944.jpg
按此在新窗口浏览图片


A1:stkindi('','ND',0,22,45);
A2:=stkindi('','XD',0,17,0);

BUY1:=ND>XD and kdss=0;
SELL1:=ND<XD and kkss=0;


//空单管理

//持有空单
IF HOLDING<0 AND kkss=0 THEN BEGIN
 IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=1;
 END
 
 //止损
 IF C-ENTERPRICE>=ZSDS AND kkss=0 THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=1;
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END 
  
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=3 AND kkss=0 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
    kkss:=1;
   END
  END
 END
END

  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS AND kkss=0 THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢1:SELLSHORT(1,0,MARKET);
    kkss:=1;
   END 
  END 
 END
 

[此贴子已经被作者于2014/3/18 11:11:27编辑过]

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 12:02:17    Post IP:14.208.199.95[显示全部帖子]

赋值为1,有信号了,但也太多了吧。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140318113452.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140318113805.jpg
图片点击可在新窗口打开查看

而且,有些本身处于开空条件运行中了,但为什么在不确定的位置中又有新开空仓呢?按理在之前刚达成空条件时已经空一手了的。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140318113531.jpg
图片点击可在新窗口打开查看


如何解决?
[此贴子已经被作者于2014/3/18 12:02:38编辑过]

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 12:53:57    Post IP:14.208.199.95[显示全部帖子]

我将变量
VARIABLE:kdss=0,kkss=0;
语句上的
持仓赋值为1 --kkss=1,执行为0--kkss:=0;
开仓赋值为0--kkss:=0; 执行为1--kkss:=1;

显示止损止盈好像正确了, 但还盈损后面接着还有 开仓信号显示。

//空单管理

 //持有空单
 IF HOLDING<0 AND kkss=1 THEN BEGIN
 IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=0;
 END
 
 //止损
 IF C-ENTERPRICE>=ZSDS AND kkss=1 THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=0;
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
 END 

  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS AND kkss=1 THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢1:SELLSHORT(1,0,MARKET);
    kkss:=0;
   END 
  END 
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=9 AND kkss=1 THEN BEGIN
   IF ENTERPRICE-L<=2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
    kkss:=0;
   END
  END
 END
END

//开多单
~~
~~

//开空单
IF HOLDING>=0 AND TIME<143000 AND kkss=0 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1,1,MARKET);
   LOWPRICE:=ENTERPRICE;
     kkss:=1;
  END 
 END


这样还要改哪里?
[此贴子已经被作者于2014/3/18 12:55:26编辑过]

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 12:59:23    Post IP:14.208.199.95[显示全部帖子]

是否是,图形上显示,交易上不执行呢?

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 15:46:04    Post IP:14.208.199.95[显示全部帖子]

本身就加上有holding=0的啊。图形上示有开仓,图表上就会有交易吗?
解决方法上,是否可以在策略语句上加上一个判断。例如做空,如在每一个空止损或空止盈的语句中加上,如果执行了这个止盈策略后,同时符合空开仓条件的那么不执行这个开仓。只执行下一个反向开仓(当符合开多条件时的,平空开多)。

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 16:56:04    Post IP:14.208.199.95[显示全部帖子]

改了,一样的。因为开仓条件是holding=0,平仓后holding自然=0了,而又同时符合指标的开仓条件,所以就再开仓。用了VARIABLE声明变量,有个疑问,图形上显示与实际交易是否一致,如果仅仅在图形上显示,交易上不执行是无所谓的。
我这里再次定义了开仓的开关,是否可行?这样写,所有信号都没有了,逻辑上前后有什么错误?如果止损止盈后再开仓,那止盈没有任何意义的啊。

ZSDS:=3;     {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:Z3B1:=1;     {赚3保1开关}
VARIABLE:kdss=0,kkss=0;{开多开空次数}
VARIABLE:kc=1;     {开仓总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=2,KHCDS=2;   {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}

BUY1:=ND>XD and kdss=0;
SELL1:=ND<XD and kkss=0;

//开空单
IF kc=1 THEN BEGIN
IF HOLDING=0 AND TIME<151300 AND kkss=0 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1,1,MARKET);
   LOWPRICE:=ENTERPRICE;
     kkss:=1;
  END 
 END
END

//持有空单
IF kc=0 THEN BEGIN
IF holding<0 and enterbars>0 and kkss=1 THEN BEGIN
 IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=0;
 END
END
 
 //空单止损
IF kc=0 THEN BEGIN 
 IF holding<0 and enterbars>0 and C-ENTERPRICE>=ZSDS and kkss=1 THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
  kkss:=0;
 END
END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
   kwin:=ENTERPRICE-LOWPRICE;
  END 
  
  //赚3保1
IF kc=0 THEN BEGIN  
IF holding<0 and enterbars>0 and kwin>=3 and kkss=1 THEN BEGIN
 IF Z3B1=1 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET);
    kkss:=0;
   END
  END
 END
END  
END

  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF kc=0 THEN BEGIN   
  IF holding<0 and enterbars>0 and kwin>=KYLDS and kkss=1 THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢:SELLSHORT(1,0,MARKET);
    kkss:=0;
   END 
  END 
 END
END

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


加好友 发短信
等级:新手上路 帖子:57 积分:10 威望:0 精华:0 注册:2012/7/5 22:43:11
  发帖心情 Post By:2014/3/18 17:52:42    Post IP:14.208.199.95[显示全部帖子]

VARIABLE:kc=1;     {开仓总开关,1为开,0为关}

意思是,止损止盈平仓后,将开仓总开关-关闭,不再执行当下条件的开仓(此时指标上还是符合原条件上的开空的,止盈后指标才逐渐才向下一条件发展)。
即是然后等到下一个条件成立(平空开多)后,再开多,开关打开, 为1.

这样方法怎样处理?

 回到顶部