Params
//此处添加参数
Vars
//此处添加变量
Series<Numeric> MID;
Series<Numeric> DKX;
Series<Numeric> MADKX;
Series<Numeric> DKXII;
Bool longCondition;
Bool shortCondition;
Numeric lot(1);
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
// 实时计算指标
MID = (Open+High+Low+Close*3)/6;
DKX = XAverage(MID,20);
MADKX = XAverage(DKX,10);
DKXII = XAverage(MID,55);
PlotNumeric("fast",DKX,DKX,iif(DKX>MADKX,red,iif(DKX<MADKX,green,white)));
PlotNumeric("slow",MADKX,MADKX,iif(DKX>MADKX,red,iif(DKX<MADKX,green,white)));
PlotNumeric("long",DKXII,DKXII,iif(DKXII>DKXII[1],Magenta,white));
}
OnBarClose(ArrayRef<Integer> indexs)
{
//实时计算指标
longCondition = DKX>MADKX AND DKX[1]<=MADKX[1];
shortCondition = DKX<MADKX AND DKX[1]>=MADKX[1];
}
OnBarOpen(ArrayRef<Integer> indexs)
{
if(MarketPosition==0)
{
//开仓做多
if(longCondition==True){
Buy(lot,Open);
Commentary("初始多:"+Text(Open));
}
//开仓做空
if(shortCondition==True){
SellShort(lot,Open);
Commentary("初始空:"+Text(Open));
}
}
//平仓做多
if(MarketPosition==1 And shortCondition==True)
{
Sell(lot,Open);
SellShort(lot,Open);
Commentary("多头平仓@"+Text(Open));
}
//平仓做空
if(MarketPosition==-1 And longCondition==True){
BuyToCover(lot,Open);
Buy(lot,Open);
Commentary("空头平仓@"+Text(Open));
}
}
Vars
//此处添加变量
Bool longCondition; ---> Global Bool longCondition;
Bool shortCondition; -----> Global Bool shortCondition;
能否如上增加Global前缀修饰
照当前的算法来说是可以的,如果有改动就不一定了
你的两个condition类型 都是局部类型 在onbarclose里计算完成以后,在onbaropen里不能读到,所以无效
可以改成natural,或者series ,具体根据实际情况决定