帮我分析下问题处在哪?原指标是cirlcecross,我修改后价格下跌没到转折点时也换列排序,这是不对的,cir1是对的,cir2,不对,错误代码如下:Params
Numeric turnpointN(5);//转折点:minMove 的整数倍,可手工调整(1、2…)
Numeric minpointN(2); //最小区间:minMove 的整数倍,可手工调整(1、2…)
Vars
plot plt;
Array<Numeric> xdata;
Array<Numeric> ydata;
Global Array<Array<Numeric>> qx(0);
Global Numeric k;
Tick tickdata;
Series<Numeric> flag;
global Numeric baseprice;
Global Numeric lastdatetime;
Numeric i;
Numeric j;
Numeric n;
Numeric tempprice;
Numeric tempdatetime;
Numeric turnpoint;//【新增】实际转折价差 = turnpointN*MinMove*PriceScale
Numeric minpoint; //【新增】实际波动价差 = minpointN *MinMove*PriceScale
Events
OnInit()
{
plt.figure();//独立画板
plt.setOption("stretch-height",1); //相对主图比例为1
data[0].HideChart;
}
OnBar(ArrayRef<Integer> indexs)
{
//【新增】把"倍数设置"换算成实际价格幅度(minMove 的整数倍)
turnpoint = turnpointN*MinMove*PriceScale;
minpoint = minpointN *MinMove*PriceScale;
GetTick(tickdata,0);
tempprice=IIF(Frequency=="tick",tickdata.last,Close);
tempdatetime=IIF(Frequency=="tick",tickdata.datetime,date+time);
if(BarStatus==0)
{
baseprice=tempprice;
k=-1;
flag=0;
qx[0][0]=baseprice;
}
Else
{
if(lastdatetime<>tempdatetime)
{
if(flag<>-1 and tempprice<=baseprice-turnpoint)
{
flag=-1;
k=k+1;
qx[0][k]=baseprice;
qx[1][k]=0;
}
if(flag<>1 and tempprice>=baseprice+turnpoint)
{
flag=1;
k=k+1;
qx[0][k]=baseprice;
qx[1][k]=0;
}
if(flag==1)
{
while(tempprice>=baseprice+minpoint)
{
qx[1][k]=qx[1][k]+1;
baseprice=baseprice+minpoint;
Commentary("baseprice="+text(baseprice));
}
}
Else if(flag==-1)
{
while(tempprice<=baseprice-minpoint)
{
qx[1][k]=qx[1][k]-1;
baseprice=baseprice-minpoint;
}
}
lastdatetime=tempdatetime;
}
}
PlotNumeric("baseprice",baseprice);
if(BarStatus==2)
{
Commentary(TextArray(qx));
for i=0 to GetArraySize(qx[0])-1
{
n=qx[1][i];
for j=1 to abs(n)
{
xdata[0]=(i+1)*10;
ydata[0]=qx[0][i]+j*n/abs(n)*minpoint;
if(n>0)
plt.icon(Text(j),xData[0],yData[0],"ICO14");
Else
plt.icon(Text(j),xData[0],yData[0],"lvyuan");
}
}
}
}