请教,我下面这段代码哪里出错了???引用1图层的日周期,在5分钟0图层中,DayDIF<DayDEA,对多头有用,但对空头不起作用。在DayDIF>DayDEA时,依然开空信号。
Params
//此处添加参数
Vars
//此处添加变量
Series<Numeric> ATR;
Series<Numeric> DIF;
Series<Numeric> DEA;
Series<Numeric> MACD;
Series<Numeric> DMa1;
Series<Numeric> DMa2;
Series<Numeric> Ma1;
Series<Numeric> Ma2;
Series<Numeric> Ma3;
Series<Numeric> Ma4;
//
Series<Numeric> DayDIF;
Series<Numeric> DayDEA;
//
Series<Bool> TimePingCang1;
Series<Bool> buy1;
Series<Bool> Sell1;
Series<Bool> Sell2;
Series<Bool> SellShort1;
Series<Bool> SellShort2;
Series<Bool> SellShort3;
Series<Bool> BuyToCover1;
Series<Bool> BuyToCover2;
Series<Bool> BuyToCover3;
//Series<Bool>
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
//0图层,计算及调用图层。
Range[0:DataCount-1]
{
//计算副图MACD和ATR数据。
ATR=AvgTrueRange(26); //真实波幅ATR
DIF = XAverage(Close,12) - XAverage(Close,26) ; //快线 DIFF
DEA = XAverage(DIF,9); //慢线 DEA
MA1 = AverageFC(Close,5);
MA2 = AverageFC(Close,10);
MA3 = AverageFC(Close,20);
DMA1 = AverageFC(Close,10);
DMA2 = AverageFC(Close,30);
//引用定义
DayDIF = data1.DIF;
DayDEA = data1.DEA;
PlotNumeric("DayDIF",DayDIF);
PlotNumeric("DayDEA",DayDEA);
}
//引用主体
Range[1:DataCount-1]
{
DayDIF = DIF;
DayDEA = DEA;
}
//交易部分
TimePingCang1 = (Time == 0.145000||Time == 0.225000);
buy1 = DIF[1]>DEA[1]&&DayDIF[1]>DayDEA[1];
If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
{
If(MarketPosition == 0 && (Buy1) && High[1] <> Low[1])
{
Buy(0,Open);
}
}
Sell1 = TimePingCang1[1];
Sell2 = CrossUnder(DayDIF[1],DayDEA[1]);
If(Ma
全文如下:
Params
//此处添加参数
Vars
//此处添加变量
Series<Numeric> ATR;
Series<Numeric> DIF;
Series<Numeric> DEA;
Series<Numeric> MACD;
Series<Numeric> DMa1;
Series<Numeric> DMa2;
Series<Numeric> Ma1;
Series<Numeric> Ma2;
Series<Numeric> Ma3;
Series<Numeric> Ma4;
//
Series<Numeric> DayDIF;
Series<Numeric> DayDEA;
//
Series<Bool> TimePingCang1;
Series<Bool> buy1;
Series<Bool> Sell1;
Series<Bool> Sell2;
Series<Bool> SellShort1;
Series<Bool> SellShort2;
Series<Bool> SellShort3;
Series<Bool> BuyToCover1;
Series<Bool> BuyToCover2;
Series<Bool> BuyToCover3;
//Series<Bool>
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
//0图层,计算及调用图层。
Range[0:DataCount-1]
{
//计算副图MACD和ATR数据。
ATR=AvgTrueRange(26); //真实波幅ATR
DIF = XAverage(Close,12) - XAverage(Close,26) ; //快线 DIFF
DEA = XAverage(DIF,9); //慢线 DEA
MA1 = AverageFC(Close,5);
MA2 = AverageFC(Close,10);
MA3 = AverageFC(Close,20);
DMA1 = AverageFC(Close,10);
DMA2 = AverageFC(Close,30);
//引用定义
DayDIF = data1.DIF;
DayDEA = data1.DEA;
}
//引用主体
Range[1:DataCount-1]
{
DayDIF = DIF;
DayDEA = DEA;
}
Commentary("DayDIF=" + Text(DayDIF));
Commentary("DayDEA=" + Text(DayDEA));
/*PlotNumeric("DayDIF",DayDIF);
PlotNumeric("DayDEA",DayDEA);
PlotNumeric("DIF",DIF);
PlotNumeric("DEA",DEA); */
//交易部分
TimePingCang1 = (Time == 0.145000||Time == 0.225000);
buy1 = DIF[1]>DEA[1]&& DayDIF[1]>DayDEA[1];
If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
{
If(MarketPosition == 0 && (Buy1) && High[1] <> Low[1])
{
Buy(0,Open);
}
}
Sell1 = TimePingCang1[1];
Sell2 = CrossUnder(DayDIF[1],DayDEA[1]);
If(MarketPosition != 0 And ( Sell1 || Sell1) || High[1] == Low[1])
{
Sell(0,Open);
}
//空头策略
SellShort1 = DIF[1]<DEA[1] && DayDIF[1]<DayDEA[1];
If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
{
If(MarketPosition == 0 && (SellShort1 || High[1] <> Low[1]))
{
SellShort(0,Open);
}
}
BuyToCover1 = TimePingCang1[1];
If(MarketPosition != 0 And (BuyToCover1 || High[1] == Low[1]))
{
BuyToCover(0,Open);
}
}
代码没贴全
建议单一变量一个个逐一输出观察