公式编写
Params //此处添加参数 Numeric N(5); Numeric N1(10); Numeric ShortLengh(12); Numeric LongLength(26); Numeric M(9); Numeric Length1(10);Vars //此处添加变量 Numeric VOL1; Numeric JC2; Numeric SHORT1; Numeric SHORTMA; Numeric LC; Numeric VID; Numeric RC; Numeric LONG1; Numeric LONGMA1; Numeric LONGMA2; Numeric LONGMA; Numeric LON; Numeric DIFF; Numeric DEA;Defs //此处添加公式函数 Events //此处实现事件函数 //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { //SHORT短线 VOL1=Average((VOL-VOL[1])/VOL[1],5); JC2=(CLOSE-Average(CLOSE,24))/Average(CLOSE,24)*100; SHORT1=JC2*(1+VOL1); SHORTMA=Average(SHORT1,N); //PlotStick(SHORT1, Enum_ColorStick); PlotNumeric(\"SHORT1\",SHORT1); PlotNumeric(\"SHORTMA\",SHORTMA); //LON长线 LC = Average(Close,1); //取前一根K线的收盘 VID = Summation(Vol,2)/((MAX(High,2)-MIN(Low,2))*100); //2周期成交量相加,除以2周期最高价和最低价的差值乘以100 RC = (Close-LC) * VID; //收盘价与LC的差值,乘以VID LONG1 = Summation(RC,0); //将所有K线上RC的数值求和 LONGMA1 = Sma(LONG1,10,1); //LONG的10个周期内的扩展指数加权移动平均 LONGMA2 = Sma(LONG1,20,1); //LONG的20个周期内的扩展指数加权移动平均 LON = LONGMA1-LONGMA2; //LONGMA1与LONGMA2做差 LONGMA = Average(LON,N1); //PlotStick(LON, Enum_ColorStick); PlotNumeric(\"LON\",LON); PlotNumeric(\"LONGMA\",LONGMA);//MACD DIFF = Sma(Close, ShortLengh) - Sma(Close, LongLength);//短周期与长周期的收盘价的指数平滑移动平均值做差。 DEA = Sma(DIFF,M);//DIFF的M个周期指数平滑移动平均 PlotNumeric(\"DIFF\",DIFF); PlotNumeric(\"DEA\",DEA); //PlotStick(2 * (DIFF - DEA), Enum_ColorStick); } { // 当前持仓为空,且符合开多条件,开多1手 If(MarketPosition==0 And DIFF > DEA And SHORT> SHORTMA And LON > LONGMA ); Buy( 1 Contract At Market); // 当前持仓为多单,且符合平多条件,平多1手 If (position > 0 And LON < 0 And close < Length1 ); Sell 1 Contract At Market; // 当前持仓为空,且符合开空条件,开空1手 If (position = 0 And DIFF < DEA And SHORT < SHORT_MA And LON < LONGMA ); Sell Short 1 Contract At Market; // 当前持仓为空单,且符合平空条件,平空1手 If (position < 0 And LON > 0 And close > Length1 Then); Buy To Cover 1 Contract At Market; // 更新持仓手数 position = MarketPosition; }策略描述:当MACD快线大于MACD慢线,SHORT短线大于SHORT短线均线,LON长线大于LON长线均线时,开多1手;当LON长线下穿0线且收盘价小于10日均线时,平多1手;当MACD快线小于MACD慢线,SHORT短线小于SHORT短线均线,LON长线小于LON长线均线时,开空1手;当LON长线上穿0线且收盘价大于10日均线时,平空1手。问题:策略编译不过,请老师帮忙修改修改,谢谢。