设为首页收藏本站

 找回密码
 注册
查看: 6949|回复: 11
打印 上一主题 下一主题

如此双均线系统,咋还出现信号消失呢? [复制链接]

Rank: 4

精华
0
UID
35247
积分
410
帖子
79
主题
36
阅读权限
50
注册时间
2011-4-24
最后登录
2013-1-10
跳转到指定楼层
1#
发表于 2011-9-6 08:44:24 |只看该作者 |倒序浏览
我在模拟交易中,测试陈总讲课的例子,但还是出现信号消失问题,很是不解。请各位高手能给予帮助。先谢了

程序代码如下:
  1. Params                                                
  2.         Numeric Length1(8);                // 短均线周期
  3.         Numeric Length2(22);                 // 长均线周期
  4.         Numeric InitialStop(6);                                // 初始止损比例*1000
  5.         Numeric BreakEvenStop(10);                // 保本止损比例*1000
  6.         Numeric TrailingStop(14);                // 追踪止损比例*1000
  7.         Numeric Lots(1);                            // 头寸大小   
  8.        
  9. Vars                                                   
  10.         NumericSeries MA1;                           
  11.         NumericSeries MA2;
  12.         BoolSeries condBuy(false);                // 做多条件
  13.         BoolSeries condSell(false);                // 做空条件
  14.            Numeric MyPrice;
  15.         NumericSeries HigherAfterEntry;        // 多头盈利峰值价
  16.         NumericSeries LowerAfterEntry;        // 空头盈利峰值价
  17.         BoolSeries bLongStoped(false);        // 当前均线多头趋势下是否有过一次进场
  18.         BoolSeries bShortStoped(false);        // 当前均线空头趋势下是否有过一次进场
  19.         Numeric StopLine(0);

  20. Begin

  21.         // 把上一根bar的出场状况传递过来
  22.         if (BarStatus > 0)
  23.         {
  24.                 bLongStoped = bLongStoped[1];
  25.                 bShortStoped = bShortStoped[1];
  26.         }

  27.         // 传递或比较盈利峰值价
  28.         If(BarsSinceEntry >= 1)
  29.         {
  30.                 HigherAfterEntry = Max(HigherAfterEntry[1],High[1]);
  31.                 LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]);
  32.         }
  33.         Else
  34.         {
  35.                 HigherAfterEntry = HigherAfterEntry[1];
  36.                 LowerAfterEntry = LowerAfterEntry[1];
  37.         }

  38.         MA1 = AverageFC(Close,Length1);              
  39.         MA2 = AverageFC(Close,Length2);
  40.         PlotNumeric("MA1",MA1);
  41.         PlotNumeric("MA2",MA2);

  42.         // 计算是否出现了金叉死叉
  43.         condBuy = CrossOver(MA1,MA2);
  44.         condSell = CrossUnder(MA1,MA2);

  45.         // 如果当前bar没有发生交叉,则将前一个Bar的交叉状态传递下去
  46.         if ( condBuy == false and condSell == false )
  47.         {
  48.                 condBuy = condBuy[1];
  49.                 condSell = condSell[1];
  50.         }

  51.         // 过滤集合竞价
  52.         If((BarType==1 or BarType==2) && BarStatus == 2 && date!=date[1] && high==low)         return;
  53.         If(BarType==0 && BarStatus == 2 && CurrentTime<=0.09 && high==low)                                 return;

  54.         // 多头初次入场
  55.         If (MarketPosition!=1 and condBuy[1]==true and bLongStoped==false)
  56.         {
  57.                 Buy(Lots,Open);
  58.                
  59.                 HigherAfterEntry = Open;
  60.                 LowerAfterEntry = Open;
  61.                 bLongStoped = false;
  62.                 bShortStoped = false;                       
  63.         }

  64.         // 空头初次入场
  65.         If (MarketPosition!=-1 and condSell[1]==true and bShortStoped==false)
  66.         {
  67.                 HigherAfterEntry = Open;
  68.                 LowerAfterEntry = Open;
  69.                 bLongStoped = false;
  70.                 bShortStoped = false;
  71.         }

  72.         // 多头再次入场,必须突破前次出场前的高点
  73.         If(bLongStoped and MarketPosition==0 and High > HigherAfterEntry)
  74.         {
  75.                 MyPrice = HigherAfterEntry;
  76.                 If(Open > MyPrice) MyPrice = Open;
  77.                 Buy(Lots,MyPrice);
  78.                
  79.                 bLongStoped = False;
  80.                 HigherAfterEntry = MyPrice;
  81.                 LowerAfterEntry = MyPrice;

  82.                 Return;                // 再次入场,开仓bar不平仓
  83.         }

  84.         // 空头再次入场,必须跌破前次出场前的低点
  85.         If(bShortStoped and MarketPosition==0 and Low < LowerAfterEntry)
  86.         {
  87.                 MyPrice = LowerAfterEntry;
  88.                 If(Open < MyPrice) MyPrice = Open;
  89.                 SellShort(Lots,MyPrice);
  90.                        
  91.                 bShortStoped = False;
  92.                 HigherAfterEntry = MyPrice;
  93.                 LowerAfterEntry = MyPrice;
  94.                        
  95.                 Return;                // 再次入场,开仓bar不平仓
  96.         }

  97.         // 止损部分
  98.         If(MarketPosition==1)        // 持多头
  99.         {
  100.                 StopLine = EntryPrice * (1-InitialStop/1000);                        // 初始止损
  101.                 If (HigherAfterEntry >= EntryPrice * (1+BreakEvenStop/1000))        StopLine = EntryPrice;                //保本止损
  102.                 If (StopLine < HigherAfterEntry*(1-TrailingStop/1000))                StopLine = HigherAfterEntry*(1-TrailingStop/1000);                // 追踪止损
  103.                
  104.                 // 止损触发
  105.                 If(Low <= StopLine)
  106.                 {
  107.                         MyPrice = StopLine;
  108.                         If(Open < MyPrice) MyPrice = Open;
  109.                         Sell(Lots,MyPrice);
  110.                         bLongStoped = True;                // 止损后设置标志
  111.                 }
  112.         }
  113.         Else If(MarketPosition==-1)        // 持空
  114.         {
  115.                                 StopLine = EntryPrice * (1+InitialStop/1000);                                  // 初始止损
  116.                 If (LowerAfterEntry <= EntryPrice *(1-BreakEvenStop/1000))                            StopLine = EntryPrice;                //保本止损
  117.                 If (StopLine > LowerAfterEntry*(1+TrailingStop/1000))                            StopLine = LowerAfterEntry*(1+TrailingStop/1000);        // 追踪止损
  118.                
  119.                 // 止损触发
  120.                 If(High >= StopLine)
  121.                 {
  122.                         MyPrice = StopLine;
  123.                         If(Open > MyPrice) MyPrice = Open;
  124.                         BuyToCover(Lots,MyPrice);
  125.                         bShortStoped = True;        // 止损后设置标志
  126.                 }
  127.         }
  128. End
复制代码
期货新手

Rank: 4

精华
0
UID
35247
积分
410
帖子
79
主题
36
阅读权限
50
注册时间
2011-4-24
最后登录
2013-1-10
2#
发表于 2011-9-6 10:00:35 |只看该作者
自己顶一个
期货新手

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
3#
发表于 2011-9-6 10:44:30 |只看该作者
回复 1# kongwei1107


是哪个信号出现信号消失?
看了一下条件,是用历史条件判断的,应该不会出现信号消失的。

使用道具 举报

Rank: 4

精华
0
UID
35247
积分
410
帖子
79
主题
36
阅读权限
50
注册时间
2011-4-24
最后登录
2013-1-10
4#
发表于 2011-9-6 10:55:01 |只看该作者
回复 3# lh948

是啊,我也觉得奇怪。

我是用30MIN周期的CF1201做测试的,昨天下午在平多和开空时都出现信号消失提示。

还有一个很奇怪的事情:在昨天实时过程中,在消息中心中显示的信号消失提示,在今天的消息中心里又没有了呢?我设的是保留20天的消息,也记录有昨天的信息,但惟独缺了信号消失的内容,我想拷屏也不行了。
期货新手

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
5#
发表于 2011-9-6 13:28:05 |只看该作者
回复 4# kongwei1107


将条件fileappend到文件里,如果出现信号消失,就到文件中找相应时间的日志内容看看是哪些条件不满足。

使用道具 举报

Rank: 4

精华
0
UID
6842
积分
450
帖子
66
主题
10
阅读权限
50
注册时间
2010-2-2
最后登录
2019-3-30
6#
发表于 2011-9-9 10:07:53 |只看该作者
是初次入场消失还是加仓时消失?

使用道具 举报

Rank: 4

精华
0
UID
35247
积分
410
帖子
79
主题
36
阅读权限
50
注册时间
2011-4-24
最后登录
2013-1-10
7#
发表于 2011-9-13 11:20:23 |只看该作者
是在平仓时
期货新手

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
61147
积分
171
帖子
35
主题
6
阅读权限
40
注册时间
2011-8-23
最后登录
2012-8-23
8#
发表于 2012-2-9 11:16:54 |只看该作者
把这个抬起来。我也测试了这个系统。主要是想学习下止损及第二次入场。遇到了不同问题。

在空头行情中,没有开空信号发出?何因?我是全部代码直接拿过去的,没有改动。

截了个图过来,大家可具体看看。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
有是有,无是无

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
61147
积分
171
帖子
35
主题
6
阅读权限
40
注册时间
2011-8-23
最后登录
2012-8-23
9#
发表于 2012-2-10 11:08:19 |只看该作者
抬起来,没有理?
有是有,无是无

使用道具 举报

Rank: 4

精华
0
UID
64485
积分
395
帖子
119
主题
19
阅读权限
50
注册时间
2011-9-9
最后登录
2014-12-24
10#
发表于 2012-2-10 15:22:12 |只看该作者
回复 8# 北门吹风


     If (MarketPosition!=-1 and condSell[1]==true and bShortStoped==false)

        {

                HigherAfterEntry = Open;

                LowerAfterEntry = Open;

                bLongStoped = false;

                bShortStoped = false;

空头的首次开仓里,没有交易的命令

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 02:42

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部