如此双均线系统,咋还出现信号消失呢? - TradeBlazer公式 [开拓者 TB]
- 咨询内容:
我在模拟交易中,测试陈总讲课的例子,但还是出现信号消失问题,很是不解。请各位高手能给予帮助。先谢了
程序代码如下:- Params
- Numeric Length1(8); // 短均线周期
- Numeric Length2(22); // 长均线周期
- Numeric InitialStop(6); // 初始止损比例*1000
- Numeric BreakEvenStop(10); // 保本止损比例*1000
- Numeric TrailingStop(14); // 追踪止损比例*1000
- Numeric Lots(1); // 头寸大小
-
- Vars
- NumericSeries MA1;
- NumericSeries MA2;
- BoolSeries condBuy(false); // 做多条件
- BoolSeries condSell(false); // 做空条件
- Numeric MyPrice;
- NumericSeries HigherAfterEntry; // 多头盈利峰值价
- NumericSeries LowerAfterEntry; // 空头盈利峰值价
- BoolSeries bLongStoped(false); // 当前均线多头趋势下是否有过一次进场
- BoolSeries bShortStoped(false); // 当前均线空头趋势下是否有过一次进场
- Numeric StopLine(0);
- Begin
- // 把上一根bar的出场状况传递过来
- if (BarStatus > 0)
- {
- bLongStoped = bLongStoped[1];
- bShortStoped = bShortStoped[1];
- }
- // 传递或比较盈利峰值价
- If(BarsSinceEntry >= 1)
- {
- HigherAfterEntry = Max(HigherAfterEntry[1],High[1]);
- LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]);
- }
- Else
- {
- HigherAfterEntry = HigherAfterEntry[1];
- LowerAfterEntry = LowerAfterEntry[1];
- }
- MA1 = AverageFC(Close,Length1);
- MA2 = AverageFC(Close,Length2);
- PlotNumeric("MA1",MA1);
- PlotNumeric("MA2",MA2);
- // 计算是否出现了金叉死叉
- condBuy = CrossOver(MA1,MA2);
- condSell = CrossUnder(MA1,MA2);
- // 如果当前bar没有发生交叉,则将前一个Bar的交叉状态传递下去
- if ( condBuy == false and condSell == false )
- {
- condBuy = condBuy[1];
- condSell = condSell[1];
- }
- // 过滤集合竞价
- If((BarType==1 or BarType==2) && BarStatus == 2 && date!=date[1] && high==low) return;
- If(BarType==0 && BarStatus == 2 && CurrentTime<=0.09 && high==low) return;
- // 多头初次入场
- If (MarketPosition!=1 and condBuy[1]==true and bLongStoped==false)
- {
- Buy(Lots,Open);
-
- HigherAfterEntry = Open;
- LowerAfterEntry = Open;
- bLongStoped = false;
- bShortStoped = false;
- }
- // 空头初次入场
- If (MarketPosition!=-1 and condSell[1]==true and bShortStoped==false)
- {
- HigherAfterEntry = Open;
- LowerAfterEntry = Open;
- bLongStoped = false;
- bShortStoped = false;
- }
- // 多头再次入场,必须突破前次出场前的高点
- If(bLongStoped and MarketPosition==0 and High > HigherAfterEntry)
- {
- MyPrice = HigherAfterEntry;
- If(Open > MyPrice) MyPrice = Open;
- Buy(Lots,MyPrice);
-
- bLongStoped = False;
- HigherAfterEntry = MyPrice;
- LowerAfterEntry = MyPrice;
- Return; // 再次入场,开仓bar不平仓
- }
- // 空头再次入场,必须跌破前次出场前的低点
- If(bShortStoped and MarketPosition==0 and Low < LowerAfterEntry)
- {
- MyPrice = LowerAfterEntry;
- If(Open < MyPrice) MyPrice = Open;
- SellShort(Lots,MyPrice);
-
- bShortStoped = False;
- HigherAfterEntry = MyPrice;
- LowerAfterEntry = MyPrice;
-
- Return; // 再次入场,开仓bar不平仓
- }
- // 止损部分
- If(MarketPosition==1) // 持多头
- {
- StopLine = EntryPrice * (1-InitialStop/1000); // 初始止损
- If (HigherAfterEntry >= EntryPrice * (1+BreakEvenStop/1000)) StopLine = EntryPrice; //保本止损
- If (StopLine < HigherAfterEntry*(1-TrailingStop/1000)) StopLine = HigherAfterEntry*(1-TrailingStop/1000); // 追踪止损
-
- // 止损触发
- If(Low <= StopLine)
- {
- MyPrice = StopLine;
- If(Open < MyPrice) MyPrice = Open;
- Sell(Lots,MyPrice);
- bLongStoped = True; // 止损后设置标志
- }
- }
- Else If(MarketPosition==-1) // 持空
- {
- StopLine = EntryPrice * (1+InitialStop/1000); // 初始止损
- If (LowerAfterEntry <= EntryPrice *(1-BreakEvenStop/1000)) StopLine = EntryPrice; //保本止损
- If (StopLine > LowerAfterEntry*(1+TrailingStop/1000)) StopLine = LowerAfterEntry*(1+TrailingStop/1000); // 追踪止损
-
- // 止损触发
- If(High >= StopLine)
- {
- MyPrice = StopLine;
- If(Open > MyPrice) MyPrice = Open;
- BuyToCover(Lots,MyPrice);
- bShortStoped = True; // 止损后设置标志
- }
- }
- End
- Params
- TB技术人员:
自己顶一个
- TB客服:
回复 1# kongwei1107
是哪个信号出现信号消失?
看了一下条件,是用历史条件判断的,应该不会出现信号消失的。 - 网友回复:
回复 3# lh948
是啊,我也觉得奇怪。
我是用30MIN周期的CF1201做测试的,昨天下午在平多和开空时都出现信号消失提示。
还有一个很奇怪的事情:在昨天实时过程中,在消息中心中显示的信号消失提示,在今天的消息中心里又没有了呢?我设的是保留20天的消息,也记录有昨天的信息,但惟独缺了信号消失的内容,我想拷屏也不行了。 - 网友回复:
回复 4# kongwei1107
将条件fileappend到文件里,如果出现信号消失,就到文件中找相应时间的日志内容看看是哪些条件不满足。
相关文章
-
没有相关内容