使用沪镍主连测试策略的时候 发现6个指标中有两个再一个时间节点之后突然失效。然后每个参数让他显示出来。一个一个看。没有看出任何错误。恳请各位大佬帮忙。
//X11
X_7 = Abs(CLOSE-Lowest(LOW,8))/Abs(Highest(HIGH,8)-Lowest(LOW,8))*100;
X_8 = SMA(X_7,3,1);
X_9 = SMA(X_8,3,1);
If(X_8>X_9)
{
X_11 = 2;
}
Else{
X_11 = 0;
}
PlotNumeric( X_11 ,X_11);
PlotNumeric( X_7 ,X_7);
PlotNumeric( X_8 ,X_8);
PlotNumeric( X_9 ,X_9);
以上是指标。
时间节点是21年 3月4 号的行情。
X_7 = Abs(CLOSE-Lowest(LOW,8))/Abs(Highest(HIGH,8)-Lowest(LOW,8))*100;
数学基础规则:0不能用作分母。
当出现涨跌停的时候,Abs(Highest(HIGH,8)-Lowest(LOW,8)) 是很容易就等于0的。
我看到你图上有交易信号
然后你贴的代码甚至开平语句都没有
把问题描述清楚
你好 老师 这是 两个有问题的指标的代码。
//------------------------------------------------------------------------
// 简称: SLY001
// 名称: 火炼金
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
//----------------------------------------------------------------------
// 开仓条件已更新
//----------------------------------------------------------------------
Params //此处添加参数
Numeric lots(0);
Numeric adxlen(9);
Numeric AfStep(0.01);
Numeric AfLimit(5);
Numeric level(35);
Numeric adxlevel(20);
//Numeric stopl(9);//止损点数
//Numeric proft(36);//止盈点数点数
//Numeric trailingpoint(29);//百分比
Numeric InitialStop(14); //初始止损(千分之N)
Numeric TrailingStop1(28); //追踪止损启动(千分之N)
Numeric TrailingStop2(41); //追踪止损回落(千分之N)
//Numeric TT(3);
Numeric Length1(36);
Numeric DUO (24);
Numeric KONG (1);
Numeric PDUO (19);
Numeric PKONG (5);
Numeric LIAN (3);
Vars //此处添加变量
Series<Numeric> Value1;
Numeric oParCl;
Numeric oParOp;
Numeric oPosition;
Numeric oTransition;
Series<Numeric> oPo;
Series<Numeric> highafterentry;
Series<Numeric> lowafterentry;
Numeric oDMIPlus;
Numeric oDMIMinus;
Numeric oDMI;
Numeric oADX;
Numeric oADXR;
Numeric oVolty;
Series<Numeric> ADX;
//-------止损参数---------
Series<Numeric> HighestAfterEntry;
Series<Numeric> LowestAfterEntry;
Numeric StopLine;
Numeric winLine;
//string FF;
Series<Numeric> X_7;
Series<Numeric> X_8;
Series<Numeric> X_9;
Bool X_10;
Series<Numeric> X_11;
Series<Numeric> X_17;
Series<Numeric> X_171;
Series<Numeric> X_18;
Series<Numeric> X_19;
Bool X_20;
Series<Numeric> X_21;
Defs //此处添加公式函数
Events //此处实现事件函数
OnInit() //初始化事件函数,策略运行期间,首先运行且只有一次
{
//AddDataFlag(Enum_Data_RolloverBackWard()); //后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //自动换月
//FF = text(tt) +\"m\";
// SubscribeBar(Symbol, FF, BeginDateTime, 0, Enum_Data_RolloverBackWard);
}
onBar(ArrayRef<Integer> indexs) //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
{
If( Open == Q_UpperLimit() Or Open == Q_LowerLimit() )
{
Return; //涨停跌停过滤
}
//X11
X_7 = Abs(CLOSE-Lowest(LOW,8))/Abs(Highest(HIGH,8)-Lowest(LOW,8))*100;
X_8 = SMA(X_7,3,1);
X_9 = SMA(X_8,3,1);
If(X_8>X_9)
{
X_11 = 2;
}
Else{
X_11 = 0;
}
PlotNumeric( \"X_11\" ,X_11);
//PlotNumeric( \"X_7\" ,X_7);
//PlotNumeric( \"X_8\" ,X_8);
//PlotNumeric( \"X_9\" ,X_9);
//X21
X_17 = (-(Highest(HIGH,13)-CLOSE))/(Highest(HIGH,13)-Lowest(LOW,13))*100;
//X_171 = Abs(-(Highest(HIGH,13)-CLOSE))/Abs(Highest(HIGH,13)-Lowest(LOW,13))*100;
X_18 = SMA(X_17,3,1);
X_19 = SMA(X_18,3,1);
If(X_18>X_19)
{
X_21 = 4 ;
}
Else{
X_21 = 0 ;
}
PlotNumeric( \"X_21\" ,X_21);
//PlotNumeric( \"X_17\" ,X_17);
//PlotNumeric( \"X_171\" ,X_171);
//PlotNumeric( \"X_18\" ,X_18);
//PlotNumeric( \"X_19\" ,X_19);
//开仓平仓
//If( CurrentContracts<3 and CurrentContracts>-3 )
If(( X_11 + X_21 ) < KONG)
{
If( shortEntries<LIAN )
{
sellshort(lots,Open);
}
}
If(MarketPosition == -1 And ( X_11 + X_21 ) > PKONG)
{
BuyToCover (0,Open);
Return;
}
Return;
}
//------------------------------------------------------------------------