求教老师帮忙看看策略编写出现严重错误
2023-09-03 17:22

检查程序好几天,换了多种方式,也找不到问题所在,很是迷惑,恳请老师指导指导。

我的程序代码策略逻辑:

1、当macd五分钟周期水下空头排列;

2、五分钟周期cci、rsi、w&r三个指标组合满足触发条件;

3、一分钟周期cci、rsi、w&r三个指标组合满足触发条件;

4、当一分钟cci数值上穿-105时触发买入开仓。

condmacd5=data1.MACDDiff<data1.AvgMACD and data1.AvgMACD<0;

//macd五分钟周期水下空头排列

cond5=data1.CCIAvg<-100 and data1.RSIValue<20 and data1.WRValue<20;

//五分钟周期三个指标组合触发条件

cond1=data0.CCIAvg[1]<-100 and data0.RSIValue[1]<20 and data0.WRValue[1]<20;

//一分钟周期三个指标组合触发条件

cond=cond1 and cond5 and condmacd5;

       

a1==-105;

bool shangchuan=CrossOver(data0.CCIAvg,a1);

       

 {

  If(MarketPosition ==0 and shangchuan and cond);

   Buy(1,Open);

 }

If(MarketPosition <>0 And BarsSinceEntry > 2 And high >= EntryPrice + 50*MinMove*PriceScale );

{

 Sell(0,Open);  

}

程序运行时出现严重问题如下:

l 信号闪烁,一分钟和五分钟每个bar都产生了开平仓;

l condmacd5、cond5、cond1三个逻辑条件均没有限制住开平仓,相当于失效;

l CrossOver(data0.CCIAvg,a1);也应该失效了。

换下面这种语句也是同样问题。

If(data1.MACDDiff<data1.AvgMACD and data1.AvgMACD<0);

{

 If(data1.CCIAvg<-100 and data1.RSIValue<20 and data1.WRValue<20);//五分钟周期(触发条件)

{

 If(data0.CCIAvg[1]<-100 and data0.RSIValue[1]<20 and data0.WRValue[1]<20);//一分钟周期(触发条件)

  SellSetup=True;

}

        a1==-105;

bool  shangchuan=CrossOver(data0.CCIAvg,a1);

{

 If(MarketPosition ==0 and shangchuan and SellSetup);

 Buy(1,Open);

}


评论区
HNCC927

谢谢王老师:去掉一个“=”后,解决了上穿显示不准确的问题。还有一个问题,就是信号闪烁。我用cci内建公式的语句填加买入、卖出条件后,每个bar都会发生一次买卖,非常困扰,语句如下,请王老师帮助查看一下,非常感谢!

                        a1=-100;

bool shangchuan=CrossOver(CCIValue,a1);

If(MarketPosition ==0 and CCIValue>-100 and CCIValue[1]<-100);

{

PlotBool(\"sc\",shangchuan,High);

Buy(1,Close);

}

If(MarketPosition <>0 And BarsSinceEntry > 10 And close[1] >= EntryPrice + 10);

Sell(0,Open);

2023-09-04 15:44
HNCC927

ninhao

2023-09-04 15:33
顶部