计数器问题

公式大概是这样的。我的思路,1·满足(bool_1)并且不是空仓的时候开仓。2·(bool_2)并且不是多仓的时候开仓。这是两个基础指令。现在可以实现。代码是下面的3·增加计数器分别在多仓的时候i+1并且计数器清零,空仓的时候j+1并且计数器清零。这里看起来是对的,但可能逻辑上有点问题。4·拿多仓的状态举例,多仓的状态下,求出hiduo-(0.1*chaduo)和hiduo-(0.2*chaduo)。然后当开盘价小于hiduo-(0.1*chaduo)或hiduo-(0.2*chaduo)的时候平仓,大于hiduo-(0.1*chaduo或hiduo-(0.2*chaduo的时候开仓,直到出现空头信号反手。然后hikong,lowkong,chakonng等参数完成和多仓时候一样的功能。但是我现在代码有点问题。请高手帮忙看一下。我没有把这两条的逻辑写出来因为是错的。 OnBar(ArrayRef<Integer> indexs) { ma=AverageFC(O, M); IF(ma<ma[1]) PlotNumeric(\"mared\",Ma,Close,Green); IF(ma>ma[1]) PlotNumeric(\"mared\",Ma,Close,red); ma1=AverageFC(O, M/20); ma2=ma1[1]; if(ma1>ma2) PlotNumeric(\"ma1\",Ma1,Close,White); if(ma1<ma2) PlotNumeric(\"ma1\",Ma1,Close,blue); bool_1=O>Ma and Ma1>Ma2 and ma>ma[1]; bool_2=o<Ma and Ma1<Ma2 and ma<ma[1]; Numeric n; If(bool_1){ if (MarketPosition <>1) { // 如果当前不是多头状态,则买入并重置计数器j Buy(1, Open); //j = 0; } } If(bool_2) { if( MarketPosition<>-1){SellShort(1,Open);} } if (MarketPosition <>- 1) { i = i + 1; j=0; } else if (MarketPosition <> 1) { j = j + 1; i=0; } hiduo = HighestFC(Open, i); loduo = LowestFC(Open, i); hikong = HighestFC(Open, j); lokong = LowestFC(Open, j); chaduo = hiduo - loduo; chakong = hikong - lokong; }