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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 麻烦管理员帮忙看下,谢谢解答啊

   

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


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

主题:麻烦管理员帮忙看下,谢谢解答啊

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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
麻烦管理员帮忙看下,谢谢解答啊  发帖心情 Post By:2011/7/26 10:19:24    Post IP:120.6.199.137[显示全部帖子]

我想实现的功能是,当前一次的平仓操作是止损操作,这次开仓如果先满足短开仓的条件就开短,如果满足长开仓的条件就开长的;如果前一次的平仓操作是正常条件的平仓,那这次开仓即使满足短开仓条件也不开,只有满足长开仓的条件才开;

  我的思路是用一个全局变量来控制,初始该变量为假,然后在止损平仓后让该变量值为真, 在短开的条件上加上 该变量为真的条件,  按道理说是能实现的,可是不知道为什么 在图表上出现止损指令后,下一次的开仓仍然是长开仓,在长开仓之前有满足短开仓的条件 却没有开,难道是我的指标编写有错吗? 管理员帮忙看看,我把代码贴出来,求指正,谢谢

 

VARIABLE:dayCount=1,PositionCount=1,SellSign=0,ZS=0,dK=0;//加多空标志,1:多,-1:空 0:空仓
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0;
VARIABLE:N=0;

M:=MA(TR,20);
N:=REF(M,1);


DHi: HHV(REF(HIGH,1),20);//短周期

DLo: LLV(REF(Low,1),20);

 

fsHi: HHV(REF(HIGH,1),55);//长周期

fsLo: LLV(REF(LOW,1),55);

EHPrice:HHV(REF(HIGH,1),10);//离市周期
ELPrice:LLV(REF(LOW,1),10);

DayCount:=DayCount+1;
EntPoint:=ENTERBARS+1;

IF EntPoint=EntAndExitSign THEN
   BEGIN{说明STOP指令买进头寸成功}
PositionCount:=PositionCount+1;{头寸计数}
SellSign:=True;{可以平仓信号,如果达到指定的价格}
//ZS:=FALSE;
   END
IF PositionCount=1   THEN BEGIN{第一头寸}
 if ZS=TRUE THEN BEGIN
 HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
   if high>=DHi then
      BEGIN
      dk:=1;
      短多开1:BUY(high>=DHi,HOW,MARKET);{在20日新高STOP指令买进}
      END
  
   if low<=DLo then
      begin
      dk:=-1;
      短空开1:buyshort(low<=DLo,HOW,MARKET);{在20日新低STOP指令空开}
      end
     END
END
IF PositionCount=1 AND ZS=FALSE THEN BEGIN{第一头寸}
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
 if high>=fsHi then
  BEGIN
  dk:=1;
  长多开1:BUY(high>=fsHi,HOW,MARKET);{在20日新高STOP指令买进}
  END
  
 if low<=fsLo then
  begin
  dk:=-1;
  长空开1:buyshort(low<=fsLo,HOW,MARKET);{在20日新低STOP指令空开}
  end
END

IF SellSign=True THEN
BEGIN
      ExitPoint:=EXITBARS+1;
     if dk=1 then
       begin
        IF ExitPoint=EntAndExitSign THEN
        BEGIN {说明卖出成功}
           PositionCount:=1;{头寸计算复原}
           SellSign:=false;
           dk:=0;
        END
    
        IF L<ELPrice then
         SELL(L<ELPrice,0,MARKET);{退出离盈利头寸}
       end
      
      if dk=1 then
       begin
        IF ExitPoint=EntAndExitSign THEN
        BEGIN {说明卖出成功}
           PositionCount:=1;{头寸计算复原}
           SellSign:=False;
           dk:=0;
           ZS:=TRUE;
        END
        IF LOW<=ENTERPRICE-2*N THEN
        止多: SELL(LOW<=ENTERPRICE-2*N,0,MARKET);{退出亏损头寸}
       end
      
      if dk=-1 then
      begin
       IF ExitPoint=EntAndExitSign THEN
        BEGIN
           PositionCount:=1;
           SellSign:=False;
           dk:=0;
        END
    
       IF H>EHPrice then
        sellSHORT(H>EHPrice,0,MARKET);
      end
      if dk=-1 then
       begin
        IF ExitPoint=EntAndExitSign THEN
        BEGIN {说明卖出成功}
           PositionCount:=1;{头寸计算复原}
           SellSign:=False;
           dk:=0;
           ZS:=TRUE;
        END
        IF high>=ENTERPRICE+2*N THEN
        止空:sellSHORT( high>=ENTERPRICE+2*N,0,MARKET);
       end
END 


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/26 13:45:30    Post IP:120.6.199.137[显示全部帖子]

谢谢啊, 对了 我忘记说了 我想第一次开仓是长开仓,按照你所说的方法去改的话变成短先开了,我的意思是 第一次开仓是长开仓,还有哦 同时满足长开仓和短开仓,如果前一次平仓是止损的话只考虑短开仓,麻烦再帮忙看看哈


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/26 14:11:58    Post IP:120.6.199.137[显示全部帖子]

大哥,我把你给的代码直接复制 测试后,仍然不行哦,在图表上止损了,后面有短开的条件,但是却没有开,到后面又长开仓了,您再看下吧,拜托,,

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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/26 14:22:15    Post IP:120.6.199.137[显示全部帖子]

先说1楼的吧,您改的也没有实现1楼的要求啊,我复制到软件上运行后,在图上就只有第一次开仓是短周期开仓,后面即使前一次平仓是止损平仓,也没有看到有短开仓的信号(满足短开仓条件的点)  我的要求是  只要前一次的平仓操作是止损操作,满足短开仓条件才开仓,前一次平仓不是止损平仓的  即使满足短开仓的条件也不开仓;

 我看懂您的意思了,同时我也是那样去弄,用全局变量来控制,可出来的信号不是按原理走的


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/26 14:54:20    Post IP:120.6.199.137[显示全部帖子]

谢谢啦,我想 我知道问题出在哪里了,我的思路没有错,关键是在用ZS这个全局变量的时候没有给归纳到止损平仓操作中去,使得程序在用全局变量的时候,一般平仓操作后把ZS这个全局变量也赋值成1了,所以在之前的测试中 会碰到没有短开的信号,因为整个过程ZS的值都是一个值,将平仓和 止损平仓独立出来的话 问题就解决了,呵呵 谢谢哈

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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/27 11:33:06    Post IP:120.6.199.137[显示全部帖子]

大哥,还是老问题哦, 我刚才在测试信号的时候,发现 全局变量ZS的值的变化不是根据平仓与止损平仓来变化的, 而是根据平仓条件的满足来变化的,  于是 就会有这种情况发生, 平仓后还没有满足开仓的条件下又有满足平仓的条件,那么此时ZS的值就会发生变化,从而影响到下一次开仓的判断了,   举个例子来说  这个K线上满足开仓条件后平仓了,那么ZS=1;然后下一根K线的满足止损平仓条件,那么ZS=2;可是并没有止损平仓的操作(因为没有持仓) 那么在下一次满足开仓条件的地方就会实行短开的操作了,这样就违背了原来的意思了  我想了想,要ZS的值跟着平仓指令的执行成功与否来变化才行, 但是不知道怎么来表示平仓成功, 大哥 您再帮忙改下吧, 就再以多头的坐例子吧,劳驾啦,


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/28 10:47:38    Post IP:120.6.199.137[显示全部帖子]

哦,,,用持仓量来表示,,,,老大 能用多头的举个例子吗,小弟有点转不过脑筋了,是 当HOLDING=0的时候(没有持仓),让ZS=1吗?可是这样一来,当止损平仓了  holding的值也是0啊,那不就短开仓一直也开不了啊,劳驾大哥辛苦下,举个例子 说明下,小弟愚笨,谢谢啊


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/28 13:30:43    Post IP:120.6.199.137[显示全部帖子]

不是啊,您写的是平仓条件 对ZS这个值没有起什么作用啊,即使加了这个条件的话,ZS的值在满足止损平仓的条件后仍然会变成2啊,仍然没有达到要求哦


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


加好友 发短信
等级:新手上路 帖子:20 积分:115 威望:0 精华:0 注册:2011/6/23 9:52:59
  发帖心情 Post By:2011/7/28 15:36:19    Post IP:120.6.199.137[显示全部帖子]

嗯嗯 我明白您的意思了,搞定了 呵呵  谢谢  谢谢。。


 回到顶部