开仓条件执行语句有问题

程序中唯一的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分钟23


Numeric slippery(0);

Vars

Numeric 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线为0

Series<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,向下尖表示crossdown

Numeric CrosDoubleCheck(1);     //附图底端折线记录中间带一次纠结的穿越的位置

Numeric CrosTripleCheck(7);     //附图底端折线记录中间带两次纠结的穿越的位置


Series<Numeric> DayHi1;            //带day的都是日线相关参数 构建日slowkd

Series<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;//上次金叉低于20

Series<Bool>UpCondition5;//连续三个向上

Series<Bool>UpCondition6;//三个向上尖尖

Series<Bool>DownCondition1;//一次更低死叉

Series<Bool>DownCondition2;//前两次死叉太近可以合二为一

Series<Bool>DownCondition3;//前三次死叉太近可以合二为一

Series<Bool>DownCondition4;//上次死叉高于80

Series<Bool>DownCondition5;//连续三个向下

Series<Bool>DownCondition6;//三个向下尖尖

Series<Numeric> HighestAfterEntry;       //止盈止损用

Series<Numeric> LowestAfterEntry;        //止盈止损用

Series<Numeric> DayCrsFlag(0);           //日线是否处于二次穿越后状态 是持续性参数  0,±1

Series<Numeric> DayMmtFlag(0);           //日线momentum 持续性参数 0,1

Series<Numeric> stops(0);                //止盈止损后不要下一根同方向立即开仓 0,1

Series<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);

}//$132

HighestValue=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); //$$145

If(KValue>DValue and KValue[1]<DValue[1])//金叉 //记录近期每一个金死叉位置和高度,各四个↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

{

crsupk4=KValue[crsupk3+1];

crsupk3=KValue[crsupk2+1];

crsupk2=KValue[crsupk1+1];

crsupk1=KValue[1];//金叉之前的那个k

crsuplks4=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];//死叉之前的那个k

crsdnlks4=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);            

//$$$243

DayDValue= (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;

}//$264

If(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);//啊啊啊发发个  DayKValue

PlotNumeric(\"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的画线以及数据记录↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

//*ssssssssssssssssssssssssssssssssss


if(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公式修改和重写的权利

//-----------------------------------------


for语句执行问题
请教版主关于判断语句异常执行的问题
满足条件不开仓是什么问题
if条件不满足,但进入了执行语句
请教!关于RANGE 和 IF()条件语句
TB是否有switch语句
关于条件语句判断与实际交易不符的问题
关于分支条件判断语句结构与执行效率的问题
结构条件控制问题
止损语句不能执行

好的 谢谢老师 那我试试

data-href=

不要这么使用序列类型的对象

用变量先把表达式的判断结果计算出来,再放到if分支结构

比如 a = highest<highest

if(a)

更多说明在官网搜索序列类型