开仓条件执行语句有问题
程序中唯一的SellShort语句,被包含在一个if判断中。判断有三个条件,按说都不复杂,但是看信号发现,第三个条件语句似乎经常不能正确执行,麻烦老师帮忙看看问题出在哪里。谢谢// 简称: slkd3// 名称:// 类别: 公式应用// 类型: 用户应用// 输出: Void//------------------------------------------------------------------------Params//此处添加参数Numeric millsecs(1000);Numeric Length(9); //slowkd原始参数 Numeric SlowLength(3); Numeric SmoothLength(3);Numeric DayShifts(23); //一小时5 半小时8 十五分钟15 夜盘半小时12 夜盘15分钟23Numeric slippery(0);VarsNumeric pos(1);Numeric Lots(1);Series<Numeric> xt;Series<Numeric> xt1;Series<Numeric> xt2;Global Integer timerId;Series<Numeric> HighestValue; //slowkd原始变量 Series<Numeric> LowestValue; Series<Numeric> KValue; Series<Numeric> DValue; Series<Numeric> RSV;Series<Numeric> FastK(50);Series<Numeric> crsupk1(50); //记录穿越时KValue 数值Series<Numeric> crsupk2(50);//cross up k value No.2 的简写Series<Numeric> crsupk3(50);Series<Numeric> crsupk4(50);Series<Numeric> crsdnk1(50);Series<Numeric> crsdnk2(50);//cross down k value No.2 的简写Series<Numeric> crsdnk3(50);Series<Numeric> crsdnk4(50);Series<Numeric> crsuplks1(0); //记录穿越时位置,当前K线为0Series<Numeric> crsuplks2(0);//cross up location No.2 的简写Series<Numeric> crsuplks3(0);Series<Numeric> crsuplks4(0);Series<Numeric> crsdnlks1(0);Series<Numeric> crsdnlks2(0);//cross down location No.2 的简写Series<Numeric> crsdnlks3(0);Series<Numeric> crsdnlks4(0);Numeric CrosCheck(-5); //附图底端折线记录标准一次穿越的位置,初始值-5,向上尖表示crossup,向下尖表示crossdownNumeric CrosDoubleCheck(1); //附图底端折线记录中间带一次纠结的穿越的位置Numeric CrosTripleCheck(7); //附图底端折线记录中间带两次纠结的穿越的位置Series<Numeric> DayHi1; //带day的都是日线相关参数 构建日slowkdSeries<Numeric> DayHi2;Series<Numeric> DayHi3;Series<Numeric> DayHi4;Series<Numeric> DayHi5;Series<Numeric> DayHi6;Series<Numeric> DayHi7;Series<Numeric> DayHi8;Series<Numeric> DayHi9;Series<Numeric> DayLo1;Series<Numeric> DayLo2;Series<Numeric> DayLo3;Series<Numeric> DayLo4;Series<Numeric> DayLo5;Series<Numeric> DayLo6;Series<Numeric> DayLo7;Series<Numeric> DayLo8;Series<Numeric> DayLo9;Series<Numeric> DayCrsupk1(50); //日线二次交叉 记录较为简单 可以改进Series<Numeric> DayCrsupk2(50);Series<Numeric> DayCrsdnk1(50);Series<Numeric> DayCrsdnk2(50);Series<Numeric> DayCrsuplks1(0);Series<Numeric> DayCrsuplks2(0);Series<Numeric> DayCrsdnlks1(0);Series<Numeric> DayCrsdnlks2(0);Numeric DayCrosCheck(-5); //记录日二次交叉Series<Numeric> DayRSV(0);Series<Numeric> DayFastK(0);Series<Numeric> DayKValue(0);Series<Numeric> DayDValue(0);Series<Numeric> DayLowest(9999999);Series<Numeric> DayHighest(0);Numeric i;Series<Numeric> DayDiffOrigin;Series<Bool>UpCondition1;//一次更高金叉Series<Bool>UpCondition2;//前两次金叉太近可以合二为一Series<Bool>UpCondition3;//前三次金叉太近可以合二为一Series<Bool>UpCondition4;//上次金叉低于20Series<Bool>UpCondition5;//连续三个向上Series<Bool>UpCondition6;//三个向上尖尖Series<Bool>DownCondition1;//一次更低死叉Series<Bool>DownCondition2;//前两次死叉太近可以合二为一Series<Bool>DownCondition3;//前三次死叉太近可以合二为一Series<Bool>DownCondition4;//上次死叉高于80Series<Bool>DownCondition5;//连续三个向下Series<Bool>DownCondition6;//三个向下尖尖Series<Numeric> HighestAfterEntry; //止盈止损用Series<Numeric> LowestAfterEntry; //止盈止损用Series<Numeric> DayCrsFlag(0); //日线是否处于二次穿越后状态 是持续性参数 0,±1Series<Numeric> DayMmtFlag(0); //日线momentum 持续性参数 0,1Series<Numeric> stops(0); //止盈止损后不要下一根同方向立即开仓 0,1Series<Numeric> MaShort;Defs//此处添加公式函数Numeric calcAvg(Numeric a,Numeric b){return (a+b)/2;}Events//此处实现事件函数//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作OnInit(){timerId=createTimer(millsecs);//与数据源有关Range[0:DataCount-1]{//=========数据源相关设置==============//AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权//AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格//AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓//AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算//AddDataFlag(Enum_Data_OnlyDay()); //设置仅日盘//AddDataFlag(Enum_Data_OnlyNight()); //设置仅夜盘//AddDataFlag(Enum_Data_NotGenReport()); //设置数据源不参与生成报告标志//=========交易相关设置============== //MarginRate rate; //rate.ratioType = Enum_Rate_ByFillAmount; //设置保证金费率方式为成交金额百分比 //rate.longMarginRatio = 0.1; //设置保证金率为10% //rate.shortMarginRatio = 0.2; //设置保证金率为20%//SetMarginRate(rate);//CommissionRate tCommissionRate;//tCommissionRate.ratioType = Enum_Rate_ByFillAmount;SetCommissionRate(BitOr(Enum_Rate_FreeOfExitToday,Enum_Rate_ByFillAmount),5); //设置开仓手续费为成交金额的5%%//tCommissionRate.closeRatio = 2; //设置平仓手续费为成交金额的2%%//tCommissionRate.closeTodayRatio = 0; //设置平今手续费为0//SetCommissionRate(tCommissionRate); //设置手续费率//SetSlippage(Enum_Rate_PointPerHand,2); //设置滑点为2跳/手//SetOrderPriceOffset(2); //设置委托价为叫买/卖价偏移2跳//SetOrderMap2MainSymbol(); //设置委托映射到主力//SetOrderMap2AppointedSymbol(symbols, multiples); //设置委托映射到指定合约,symbols是映射合约数组,multiples是映射倍数数组SetConsecEntries(1);}//与数据源无关//SetBeginBarMaxCount(10); //设置最大起始bar数为10//SetBackBarMaxCount(10); //设置最大回溯bar数为10//=========交易相关设置==============//SetInitCapital(1000000); //设置初始资金为100万//AddTradeFlag(Enum_Trade_Ignore_Buy()); //设置忽略多开//AddTradeFlag(Enum_Trade_Ignore_Sell()); //设置忽略多平//AddTradeFlag(Enum_Trade_Ignore_SellShort()); //设置忽略空开//AddTradeFlag(Enum_Trade_Ignore_Buy2Cover()); //设置忽略空平}//在所有的数据源准备完成后调用,应用在数据源的设置等操作OnReady(){}//基础数据更新事件函数OnDic(StringRef dicName,StringRef dicSymbol,DicDataRef dicValue){}//在新bar的第一次执行之前调用一次,参数为新bar的图层数组OnBarOpen(ArrayRef<Integer> indexs){}//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组OnBar(ArrayRef<Integer> indexs){//on bar~~Lots=IntPart(50*10000/(Open*contractunit*BigPointValue));MaShort=Average(close,3);if(BarsSinceEntry==1){HighestAfterEntry=max(high,high[1]);LowestAfterEntry=min(low,low[1]);}Else{HighestAfterEntry = Max(HighestAfterEntry,High);LowestAfterEntry = Min(LowestAfterEntry,Low);}//$132HighestValue=HighestFC(high,Length);LowestValue=LowestFC(low,Length);RSV=IIF(HighestValue==LowestValue,RSV[1],(Close-LowestValue)/(HighestValue-LowestValue)*100);FastK=(RSV*(2/3)^0+RSV[1]*(2/3)^1+RSV[2]*(2/3)^2+RSV[3]*(2/3)^3+RSV[4]*(2/3)^4+RSV[5]*(2/3)^5+RSV[6]*(2/3)^6+RSV[7]*(2/3)^7+RSV[8]*(2/3)^8)/3+FastK[9]*(2/3)^9;KValue=(FastK*(2/3)^0+FastK[1]*(2/3)^1+FastK[2]*(2/3)^2+FastK[3]*(2/3)^3+FastK[4]*(2/3)^4+FastK[5]*(2/3)^5+FastK[6]*(2/3)^6+FastK[7]*(2/3)^7+FastK[8]*(2/3)^8)/3+KValue[9]*(2/3)^9; DValue=(KValue*(2/3)^0+KValue[1]*(2/3)^1+KValue[2]*(2/3)^2+KValue[3]*(2/3)^3+KValue[4]*(2/3)^4+KValue[5]*(2/3)^5+KValue[6]*(2/3)^6+KValue[7]*(2/3)^7+KValue[8]*(2/3)^8)/3+DValue[9]*(2/3)^9;PlotNumeric(\".K\",KValue); //plots PlotNumeric(\".D\",DValue); //$$145If(KValue>DValue and KValue[1]<DValue[1])//金叉 //记录近期每一个金死叉位置和高度,各四个↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓{crsupk4=KValue[crsupk3+1];crsupk3=KValue[crsupk2+1];crsupk2=KValue[crsupk1+1];crsupk1=KValue[1];//金叉之前的那个kcrsuplks4=crsuplks3+1;crsuplks3=crsuplks2+1;crsuplks2=crsuplks1+1;crsuplks1=0;}Else If(KValue<DValue and KValue[1]>DValue[1])//死叉{crsdnk4=KValue[crsdnk3+1];crsdnk3=KValue[crsdnk2+1];crsdnk2=KValue[crsdnk1+1];crsdnk1=KValue[1];//死叉之前的那个kcrsdnlks4=crsdnlks3+1;crsdnlks3=crsdnlks2+1;crsdnlks2=crsdnlks1+1;crsdnlks1=0;}Else{crsuplks1=crsuplks1+1;crsuplks2=crsuplks2+1;crsuplks3=crsuplks3+1;crsuplks4=crsuplks4+1;crsdnlks1=crsdnlks1+1;crsdnlks2=crsdnlks2+1;crsdnlks3=crsdnlks3+1;crsdnlks4=crsdnlks4+1;} //$$183//三种穿越的定义↓UpCondition1=crsuplks1==0 and crsupk1-crsupk2>10; //目前金叉且距离上一次k值小于10 UpCondition2=crsuplks1==0 and crsupk1>crsupk3 and Max(crsdnk1,Max(crsdnk2,crsupk2))-Min(crsdnk1,Min(crsdnk2,crsupk2))<15;UpCondition3=crsuplks1==0 and crsupk1<crsupk4 and Max(Max(crsdnk1,crsupk2),Max(Max(crsupk3,crsdnk2),crsdnk3))-Min(Min(crsdnk1,crsupk2),Min(Max(crsupk3,crsdnk2),crsdnk3))<20;DownCondition1=crsdnlks1==0 and crsdnk1-crsdnk2<-10;DownCondition2=crsdnlks1==0 and crsdnk1<crsdnk3 and Max(crsupk1,Max(crsupk2,crsdnk2))-Min(crsupk1,Min(crsupk2,crsdnk2))<15;DownCondition3=crsdnlks1==0 and crsdnk1<crsdnk4 and Max(Max(crsupk1,crsupk2),Max(Max(crsupk3,crsdnk2),crsdnk3))-Min(Min(crsupk1,crsupk2),Min(Max(crsupk3,crsdnk2),crsdnk3))<20;If(DownCondition1) {CrosCheck=-8;}Else If(UpCondition1) {CrosCheck=-2;} Else{CrosCheck=-5;} //三种穿越的绘制If(DownCondition2) {CrosDoubleCheck=-2;}Else If(UpCondition2){CrosDoubleCheck=4;}Else{CrosDoubleCheck=1;}If(DownCondition3){CrosTripleCheck=4;}Else If(UpCondition3){CrosTripleCheck=10;}Else{CrosTripleCheck=7;}UpCondition4=crsuplks1==0 and crsupk1>crsupk2 and crsupk2<20;DownCondition4=crsdnlks1==0 and crsdnk1<crsdnk2 and crsdnk2>80;UpCondition5=crsuplks1==0 And crsupk1>crsupk2 and crsupk2>crsupk3 And crsuplks2>3 and crsuplks3>crsuplks2+4 and crsuplks2>crsuplks1+4;DownCondition5=crsdnlks1==0 And crsdnk1<crsdnk2 and crsdnk2<crsdnk3 And crsdnlks2>3 and crsdnlks3>crsdnlks2+4 and crsdnlks2>crsdnlks2+4;UpCondition6=(CrosTripleCheck==10 And CrosDoubleCheck==4) Or (CrosTripleCheck==10 and CrosCheck==-2);DownCondition6=(CrosTripleCheck==4 And CrosDoubleCheck==-2) Or (CrosTripleCheck==4 and CrosCheck==-8);PlotNumeric(\"tpgdcrs\",CrosTripleCheck,0,White);PlotNumeric(\"dbgdcrs\",CrosDoubleCheck,0,White);PlotNumeric(\"gdcrs\",CrosCheck,0,White);//$$214//==================================================================================================================================//处理日slowkd的画线以及数据记录↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓DayHi1=HighD(1);DayHi2=HighD(2);DayHi3=HighD(3);DayHi4=HighD(4);DayHi5=HighD(5);DayHi6=HighD(6);DayHi7=HighD(7);DayHi8=HighD(8);DayHi9=HighD(9);DayHighest=Max(DayHi1,Max(DayHi2,Max(DayHi3,Max(DayHi4,Max(DayHi5,Max(DayHi6,Max(DayHi7,Max(DayHi8,DayHi9))))))));DayLo1=LowD(1);DayLo2=LowD(2);DayLo3=LowD(3);DayLo4=LowD(4);DayLo5=LowD(5);DayLo6=LowD(6);DayLo7=LowD(7);DayLo8=LowD(8);DayLo9=LowD(9);DayLowest=Min(DayLo1,Min(DayLo2,Min(DayLo3,Min(DayLo4,Min(DayLo5,Min(DayLo6,Min(DayLo7,Min(DayLo8,DayLo9)))))))); //DayRSV=IIF(DayHighest==DayLowest,DayRSV[1],(CloseD(1)-DayLowest)/(DayHighest-DayLowest)*100);//DayFastK=IIF(,DayFastK[1],(DayRSV[1]+DayRSV[1*DayShifts+1]*(2/3)^1+DayRSV[2*DayShifts+1]*(2/3)^2+DayRSV[3*DayShifts+1]*(2/3)^3+DayRSV[4*DayShifts+1]*(2/3)^4+DayRSV[5*DayShifts+1]*(2/3)^5+DayRSV[6*DayShifts+1]*(2/3)^6+DayRSV[7*DayShifts+1]*(2/3)^7+DayRSV[8*DayShifts+1]*(2/3)^8)/3+DayFastK[9*DayShifts+1]*(2/3)^9);if(date!=date[1]){Numeric q1 = (DayRSV[1]+DayRSV[1*DayShifts+1]*(2/3)^1+DayRSV[2*DayShifts+1]*(2/3)^2+DayRSV[3*DayShifts+1]*(2/3)^3+DayRSV[4*DayShifts+1]*(2/3)^4+DayRSV[5*DayShifts+1]*(2/3)^5+DayRSV[6*DayShifts+1]*(2/3)^6+DayRSV[7*DayShifts+1]*(2/3)^7+DayRSV[8*DayShifts+1]*((2/3)^8))/3;xt = DayRSV[9*DayShifts+1]*(2/3)^9;DayFastK = q1+xt;/*DayFastK = (DayRSV[1]+DayRSV[1*DayShifts+1]*(2/3)^1+DayRSV[2*DayShifts+1]*(2/3)^2+DayRSV[3*DayShifts+1]*(2/3)^3+DayRSV[4*DayShifts+1]*(2/3)^4+DayRSV[5*DayShifts+1]*(2/3)^5+DayRSV[6*DayShifts+1]*(2/3)^6+DayRSV[7*DayShifts+1]*(2/3)^7+DayRSV[8*DayShifts+1]*(2/3)^8)/3;*/Commentary(\"q1:\"+text(q1));Commentary(\"xt:\"+text(xt));}//PlotNumeric(\"xxt\",xt);/*Commentary(\"DayFastK[1]\"+text(DayFastK[1]));Commentary(\"DayRSV[1]:\"+text(DayRSV[1]));Commentary(\"DayRSV[1*DayShifts+1]\"+text(DayRSV[1*DayShifts+1]));Commentary(\"DayRSV[2*DayShifts+1]\"+text(DayRSV[2*DayShifts+1]));Commentary(\"DayRSV[3*DayShifts+1]\"+text(DayRSV[3*DayShifts+1]));Commentary(\"DayRSV[4*DayShifts+1]\"+text(DayRSV[4*DayShifts+1]));Commentary(\"DayRSV[5*DayShifts+1]\"+text(DayRSV[5*DayShifts+1]));Commentary(\"DayRSV[6*DayShifts+1]\"+text(DayRSV[6*DayShifts+1]));Commentary(\"DayRSV[7*DayShifts+1]\"+text(DayRSV[7*DayShifts+1]));Commentary(\"DayRSV[8*DayShifts+1]\"+text(DayRSV[8*DayShifts+1]));Commentary(\"DayRSV[9*DayShifts+1]*(2/3)^9:\"+text(DayRSV[9*DayShifts+1]*(2/3)^9));Commentary(\"currentbar:\"+text(currentbar));Commentary(\"DayShifts*9:\"+text(DayShifts*9+1));*///DayKValue=IIF(date==date[1],DayKValue[1],(DayFastK[0]*(2/3)^0+DayFastK[1*DayShifts]*(2/3)^1+DayFastK[2*DayShifts]*(2/3)^2+DayFastK[3*DayShifts]*(2/3)^3+DayFastK[4*DayShifts]*(2/3)^4+DayFastK[5*DayShifts]*(2/3)^5+DayFastK[6*DayShifts]*(2/3)^6+DayFastK[7*DayShifts]*(2/3)^7+DayFastK[8*DayShifts]*(2/3)^8)/3+DayKValue[9*DayShifts]*(2/3)^9);DayKValue = (DayFastK[0]*1+DayFastK[1*DayShifts]*(2/3)^1+DayFastK[2*DayShifts]*(2/3)^2+DayFastK[3*DayShifts]*(2/3)^3+DayFastK[4*DayShifts]*(2/3)^4+DayFastK[5*DayShifts]*(2/3)^5+DayFastK[6*DayShifts]*(2/3)^6+DayFastK[7*DayShifts]*(2/3)^7+DayFastK[8*DayShifts]*((2/3)^8+0.078))/3;//DayKValue = DayKValue[9*DayShifts+1]*(2/3)^9;/*Commentary(\"DayFastK[0]\"+text(DayFastK[0]));Commentary(\"DayRSV[1]:\"+text(DayRSV[1]));Commentary(\"DayRSV[1*DayShifts+1]\"+text(DayFastK[1*DayShifts]));Commentary(\"DayRSV[2*DayShifts+1]\"+text(DayFastK[2*DayShifts]));Commentary(\"DayRSV[3*DayShifts+1]\"+text(DayFastK[3*DayShifts]));Commentary(\"DayRSV[4*DayShifts+1]\"+text(DayFastK[4*DayShifts]));Commentary(\"DayRSV[5*DayShifts+1]\"+text(DayFastK[5*DayShifts]));Commentary(\"DayRSV[6*DayShifts+1]\"+text(DayFastK[6*DayShifts]));Commentary(\"DayRSV[7*DayShifts+1]\"+text(DayFastK[7*DayShifts]));Commentary(\"DayRSV[8*DayShifts+1]\"+text(DayFastK[8*DayShifts]));*///DayDValue=IIF(date==date[1],DayDValue[1],(DayKValue[0]*(2/3)^0+DayKValue[1*DayShifts]*(2/3)^1+DayKValue[2*DayShifts]*(2/3)^2+DayKValue[3*DayShifts]*(2/3)^3+DayKValue[4*DayShifts]*(2/3)^4+DayKValue[5*DayShifts]*(2/3)^5+DayKValue[6*DayShifts]*(2/3)^6+DayKValue[7*DayShifts]*(2/3)^7+DayKValue[8*DayShifts]*(2/3)^8)/3+DayDValue[9*DayShifts]*(2/3)^9); //$$$243DayDValue= (DayKValue[0]*1+DayKValue[1*DayShifts]*(2/3)^1+DayKValue[2*DayShifts]*(2/3)^2+DayKValue[3*DayShifts]*(2/3)^3+DayKValue[4*DayShifts]*(2/3)^4+DayKValue[5*DayShifts]*(2/3)^5+DayKValue[6*DayShifts]*(2/3)^6+DayKValue[7*DayShifts]*(2/3)^7+DayKValue[8*DayShifts]*((2/3)^8+0.078))/3;If(DayKValue>DayDValue and DayKValue[1]<DayDValue[1])//日线二次金叉{DayCrsupk2=DayCrsupk1;DayCrsupk1=DayKValue[1];DayCrsuplks2=DayCrsuplks1+1;DayCrsuplks1=0;}Else If(DayKValue<DayDValue and DayKValue[1]>DayDValue[1])//日线二次死叉{DayCrsdnk2=DayCrsdnk1;DayCrsdnk1=DayKValue[1];DayCrsdnlks2=DayCrsdnlks1+1;DayCrsdnlks1=0;}Else{DayCrsuplks2=DayCrsuplks2+1;DayCrsuplks1=DayCrsuplks1+1;DayCrsdnlks2=DayCrsdnlks2+1;DayCrsdnlks1=DayCrsdnlks1+1;}//$264If(DayCrsdnlks1==0 and DayCrsdnk1<DayCrsdnk2){DayCrosCheck=-6.5;}Else If(DayCrsuplks1==0 and DayCrsupk1>DayCrsupk2){DayCrosCheck=8.5;}Else{DayCrosCheck=1;}//在底部画绿线并记录二次穿越点PlotNumeric(\"daycrs\",DayCrosCheck,0,Green);DayDiffOrigin=(DayKValue-DayDValue)*1+100; //日k日d差距 “健壮性”PlotNumeric(\"DK\",DayFastK,0,Red);//啊啊啊发发个 DayKValuePlotNumeric(\"DD\",DayDValue,0,Green);//问题问题========PlotNumeric(\"DyDiff\",DayDiffOrigin,0,white);//PlotNumeric(\"DayDif\",DayDiffOrigin);PlotNumeric(\"Ref1\",20,0,Red);//-------------------------------------------------- PlotNumeric(\"Ref2\",80,0,Red);//--------------------------------------------------PlotNumeric(\"Ref3\",100,0,Red);PlotNumeric(\"k-d\",KValue-DValue+50,0,Red);//$$281//处理日slowkd的画线以及数据记录↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//*ssssssssssssssssssssssssssssssssssif(CrossUnder(KValue,DValue) and KValue[1]>50 and Highest(KValue,4)<Highest(KValue[5],30)){ SellShort(Lots,Close);}if(CrossOver(KValue,DValue)){ BuyToCover(Lots,Close);}Commentary(\"hs\"+text(Highest(KValue,4)));Commentary(\"hl\"+text(Highest(KValue[5],30)));//Commentary(\"KVacrsnk2]\"+ KValue[1]>50);//sssssssssssssssssssssssssssssssssss}//on bar~~//下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组OnBarClose(ArrayRef<Integer> indexs){}//Tick更新事件函数,需要SubscribeTick函数订阅后触发,参数evtTick表示更新的tick结构体OnTick(TickRef evtTick){}//持仓更新事件函数,参数pos表示更新的持仓结构体OnPosition(PositionRef pos){}//策略账户仓更新事件函数,参数pos表示更新的账户仓结构体OnStrategyPosition(PositionRef pos){}//委托更新事件函数,参数ord表示更新的委托结构体OnOrder(OrderRef ord){}//成交更新事件函数,参数ordFill表示更新的成交结构体OnFill(FillRef ordFill){}//定时器更新事件函数,参数id表示定时器的编号,millsecs表示定时间的间隔毫秒值OnTimer(Integer id,Integer intervalMillsecs){}//通用事件触发函数,参数evtName为事件名称,参数evtValue为事件内容OnEvent(StringRef evtName,MapRef<String,String> evtValue){}//当前策略退出时触发OnExit(){}//------------------------------------------------------------------------// 编译版本 2024/01/04 223356// 版权所有 yanniwj_wj// 更改声明 TradeBlazer Software保留对TradeBlazer平台// 每一版本的TradeBlazer公式修改和重写的权利//-----------------------------------------