Params
Vars
Series<Numeric> MA;
Series<Numeric> MK;
Series<Numeric> DT;
Series<Numeric> KT;
Series<Bool> SC;
Series<Bool> XC;
Numeric K1(5);
Numeric K2(20);
Events
OnBar(ArrayRef<Integer> indexs)
{
MA = AverageFC(Close,K1);
MK = AverageFC(Close,K2);
SC = CrossOver(MA[1],MK[1]);
XC = CrossUnder(MA[1],MK[1]);
DT = Close[1] - longAvgEntryPrice;
KT = Close[1] - shortAvgEntryPrice;
Commentary("DT" + Text(DT));
PlotNumeric("MA",MA);
PlotNumeric("MK",MK);
Commentary("longPositionProfit=" + Text(longPositionProfit));
If(MarketPosition == 0 && SC == True)
Buy(1,Open);
If(MarketPosition == 1 && DT*200 >= 10000)
Sell(1,Open);
}
老师你好,我最近在测试一个逻辑,发现一个问题,就是比如我做股指ic,DT = Close[1] - longAvgEntryPrice;我用上一个收盘价减去多头建仓价格,得到的就是多头的盈亏点差,ic一个点两百块,我用算出来的点差DT乘于两百,这样算出来的不应该是ic多头的持仓盈亏吗?我用这个作为平仓条件,结果发现都是在同一根k线上开仓又平仓了,我知道又函数可以直接计算多头持仓盈亏,提问只是想知道,这样算多头持仓盈亏哪里错了,谢谢!!!
你在开仓之前就去计算DT,这时候longAvgEntryPrice;永远是0,那么你计算出来的DT永远大于10000,所以刚开仓立刻就平了。
你把 DT = Close[1] - longAvgEntryPrice; 这句移动到开仓语句之后,平仓语句之前试试看。
正解。可以试试在开仓语句前commentary一下DT
好的,感谢指点!
平仓后,DT的值不要做处理吗?您看看没持仓的时候算出来的DT是多少
好的,感谢指点
程序写错了吧
Numeric K1(5);
Numeric K2(20);
应该写在 Params 里,不是在 Vars 里。