数组应用的问题
//------------------------------------------------------------------------ // 简称: ZS_12_2 // 名称: 数组测试_交易统计 // 类别: 公式应用 // 类型: 用户应用 // 输出: 学习理解数组应用,建立交易统计表格 //------------------------------------------------------------------------ Params Integer Lots(1);//交易手数 Vars Global Numeric ReadDateTime;//准备就绪的日期时间 Global Array<Numeric> TradeRecord;//分次交易记录 Global Array<Array<Numeric>> TradeStats;//交易统计 Defs//此处添加公式函数 Integer Df_LogFile(StringRef str)//日志函数 /将字符串str附加到日志文件 { IF (StrategyMode==1) FileAppend("D:\\11策略测试\\"+FormulaName()+"\\"+Symbol()+"\\"+TEXT(ReadDateTime)+".txt","["+Text(SystemDateTime())+"] "+ str+"/"+StrategyModeName); Return 0; } Events//此处实现事件函数 OnReady() { ReadDateTime=SystemDateTime; } OnBar(ArrayRef<Integer> indexs) { Range[0:0] { IF (CurrentBar()==0) { SetArraySize(TradeRecord,4,0);//设置一维数组(每次交易记录) //建仓时间/建仓成本/平仓时间/平仓价格 SetArraySize(TradeStats,1,10,0);//设置二维数组(交易统计) //0建仓时间/1建仓成本/2平仓时间/3平仓价格/4平仓利润/5盈利总额/6亏损总额/7盈利次数/8亏损次数/9累计盈亏总额 } IF (CurrentBar()<10) Return; If (MarketPosition<1 AND O>C[1]) { Buy(Lots, OPEN,Enum_Signal_NotSend); TradeRecord[0]=DATE+TIME;//建仓时间 TradeRecord[1]=Round( EntryPrice,2);//建仓成本 } IF (MarketPosition==1 And BarsSinceEntry>0 AND O<C[1]) { Sell(Lots, Open,Enum_Signal_NotSend); TradeRecord[2]=DATE+TIME;//平仓时间 TradeRecord[3]=ROUND(EXITPrice,2);//平仓价格 ArrayPushBack(TradeStats,TradeRecord);//将交易记录追加至交易统计表格0-3列 } IF (BarStatus()==2)//最后1根BAR { Integer Size = GetArraySize(TradeStats);//数组行数=累计交易次数 Df_LogFile("累计交易次数"+Text(Size)); Integer I=0;//行 For I=0 To Size-1//计算追加统计表格的4-9列 { Numeric RealizedProfit=(TradeStats[I][3]-TradeStats[I][1])*Lots *contractUnit;//平仓利润=点数*倍数 ArrayInsert(TradeStats, I, 4, RealizedProfit);//平仓利润 IF (RealizedProfit>0) { ArrayInsert(TradeStats, I, 5, TradeStats[I-1][5]+RealizedProfit);//盈利总额 ArrayInsert(TradeStats, I, 7, TradeStats[I-1][7]+1);//盈利次数 ArrayInsert(TradeStats, I, 6, TradeStats[I-1][6]);//亏损总额 ArrayInsert(TradeStats, I, 8, TradeStats[I-1][8]);//亏损次数 } //4平仓利润/5盈利总额/6亏损总额/7盈利次数/8亏损次数/9累计盈亏总额 Else IF (RealizedProfit<0) { ArrayInsert(TradeStats, I, 6, TradeStats[I-1][6]+RealizedProfit);//亏损总额 ArrayInsert(TradeStats, I, 8, TradeStats[I-1][8]+1);//亏损次数 ArrayInsert(TradeStats, I, 5, TradeStats[I-1][5]);//盈利总额 ArrayInsert(TradeStats, I, 7, TradeStats[I-1][7]);//盈利次数 } ArrayInsert(TradeStats, I, 9, TradeStats[I-1][9]+RealizedProfit);//累计盈亏总额 //0建仓时间/1建仓成本/2平仓时间/3平仓价格/4平仓利润/5盈利总额/6亏损总额/7盈利次数/8亏损次数/9累计盈亏总额 Df_LogFile("序号"+TEXT(I)+"/建仓时间"+TEXT(TradeStats[I][0],6)+"/建仓成本"+TEXT(TradeStats[I][1],2)+"/平仓时间"+TEXT(TradeStats[I][2],6)+"/平仓价格"+TEXT(TradeStats[I][3],2)+"/平仓利润"+TEXT(TradeStats[I][4],2)+"/盈利总额"+TEXT(TradeStats[I][5],2)+"/亏损总额"+TEXT(TradeStats[I][6],2)+"/盈利次数"+TEXT(TradeStats[I][7],0)+"/亏损次数"+TEXT(TradeStats[I][8],0)+"/累计盈亏总额"+TEXT(TradeStats[I][9],2)); } }//最后1根BAR }//Range[0] }//ONBAR上述代码,学习理解数组应用,建立交易统计表格。应用在AU888后,日志表格如下, 问题是“/6亏损总额/7盈利次数/8亏损次数”三列数据错误,我不知错误原因,请大神指导