我想把每根K线上的止损价接收,请教指导一下代码错误

 
止损价[0]=当前止损价;                      //把当前K线的止损价接收到数组0号上
     
       if(bars!=iBars(Symbol(),0))        //然后每出现1根新K线,把前一根的止损价数组+1    达到序列化调取止损价的作用  获取最多10根就行
        {
            for(int i=10;i>0;i--)
            {
                止损价 [i]= 止损价 [i-1];
            }
             bars=iBars(Symbol(),0);

         }


现在遇到问题:第一根0号数组获取到止损价后,进入循环立马1号数组也跟着赋值了0号止损价   麻烦指导一下 我想序列化调取止损价 怎样写这个循环 一直保持0号是当前 1号是前一根 想开盘收盘价一样调取  谢谢指导

 

新的止损价来了后先放一个临时变量, 不能直接将放数组0位。

用临时变量去与数组进行元素移动操作即可。

以下是自定义函数,供参考:





if(bars!=iBars(Symbol(),0))        //然后每出现1根新K线,把前一根的止损价数组+1    达到序列化调取止损价的作用  获取最多10根就行
{
double temp_sl=newstoploss;//新的止损值 ArrayShift(arr_sl,temp_sl,0);//将新的止损值放止损值数组0位
bars=iBars(Symbol(),0);

}

bool ArrayShift(double &arr[],double newVar,int star=0) {    int size=ArraySize(arr);    double temp=arr[size-2];    for(int i=size-2;i>=star;i--)    {       arr[i+1]=arr[i];       if(i==star)       {          arr[star]=newVar;       }    }    //    size=ArraySize(arr);    if(arr[star]==newVar && arr[size-1]==temp) return(true);       return(false); }
 
Lin Luo:

新的止损价来了后先放一个临时变量, 不能直接将放数组0位。

用临时变量去与数组进行元素移动操作即可。

以下是自定义函数,供参考:

非常感谢 厉害

原因: