帮忙看看代码

Params

//此处添加参数

Numeric lost(1);


Vars

//此处添加变量

Series<Numeric> PVIValue;

   Series<Numeric> PVI250;

   Series<Numeric> MAPVI;

Series<Bool> upband(False);    

Series<Bool> downband(False);

Series<Numeric> MedianPrice;

Series<Numeric> MA1;

Series<Numeric> rang;

Series<Numeric> UpAvg(0);  

Series<Numeric> LowAvg(0);

Series<Numeric> Barct(0);

Series<Numeric> A(0);

Series<Numeric> B(0);

Numeric lenth(90); //默认区间周期参数

Numeric STbar(40); //加速的BAR数范围

Numeric Longma(120);  // 长周期均线

Events


OnInit()

{

//与数据源有关

Range[0:DataCount-1]

{

//=========数据源相关设置==============

AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权


AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格


AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓



AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算

}

}



//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

OnBar(ArrayRef<Integer> indexs)

{

If(CurrentBar == 0)

{

PVIValue = 100;

}Else

{

If(Vol > Vol[1])

{

PVIValue = PVIValue[1]+(Close-Close[1])/Close[1]*PVIValue[1];

}Else

{

PVIValue = PVIValue[1];

}

PVI250 = AverageFC(PVIValue,250);

MAPVI = PVIValue - PVI250;

}

// 指标计算

MA1 = AverageFC(C,Longma);//均线  

rang = High - Low;//最新价差

UpAvg = Highest(((High[1]+Close[1])-(2*Close[1]))+OpenD(0), lenth);      //取LENTH周期内的日开盘价+波动幅度的最高值

LowAvg = Lowest(((Close[1]+low[1])-(2*Close[1]))+OpenD(0), lenth);      //取LENTH周期内的日开盘价+波动幅度的最低值;

MedianPrice = (High + Low)*0.5;         //最新中间价      

 

upband = MedianPrice > High[1] and rang > rang[1];//中间价大于 上一个BAR的最高价且最新价差大于上一个BAR的价差

downband = MedianPrice < Low[1] and rang > rang[1];//中间价小于 上一个BAR的最低价且最新价差大于上一个BAR的价差


// 多头入场

If(MarketPosition == 0 and C[1]>MA1[1] && MAPVI[1] > 0) //没有多头持仓的情况下,价格大于均线

{

If(upband[1] and Close[1] > UpAvg[1]) // 上一个BAR线的upband条件满足且价格>区间上沿;

{

Buy(Lost,Open);

A = A + 1;

}

}

// 空头入场

If(MarketPosition == 0 and C[1]<MA1[1]  && MAPVI[1] < 0)  //没有空头持仓的情况下,价格小于均线

{

If(downband[1] and Close[1] < LowAvg[1])  // 上一个BAR线的downband条件满足且价格<区间下沿;    

{

Sellshort(Lost,Open);//开空

B = B + 1;

}

}

Commentary("A = " + Text(A));

Commentary("B = " + Text(B));

}

老师你好,帮我看看这段代码,我计算A跟B的累加是在开仓条件里面的。但是,我发现还没出现开仓信号,A跟B的值也在累加,帮忙看看什么原因

帮忙看看代码
请老师帮忙看看代码的错误
策略代码检查不出问题,是否有专门的人帮忙看源码问题?
老师麻烦帮忙看下该怎样修改
请老师看看为何排序总是出错
PlayWavSound函数触发单一条件开仓时,单根K线多次重复语音播报问题
模拟账户执行止损问题
请老师帮忙看看这个代码
求助贴 麻烦老师帮忙看看
帮忙看看这个代码是不是有问题?

PVI250 = AverageFC(PVIValue,250); 这里使用了250的均值,在bar数量不够的时候,系统应该有不发单的机制。

但是值是会计算的

你可以尝试把你的开仓条件用bool打印,应该可以看到,在没有买卖信号的地方也有已经满足开仓的bar


嗯不错不错