老师,麻烦帮忙看看这个策略,有时候正常,有时候距离收盘还有好长时间就发出平仓委托
Params
Numeric FastLength(20); // 短期指数平均线参数
Numeric SlowLength(60); // 长期指数平均线参数
Vars
Series<Numeric> AvgValue1; // 短期指数平均线
Series<Numeric> AvgValue2; // 长期指数平均线
Events
OnReady()
{
SetBackBarMaxCount(1 + Max(FastLength, SlowLength));
}
OnBar(ArrayRef<Integer> indexs)
{
// 计算短期和长期指数平均线
AvgValue1 = AverageFC(Close, FastLength);
AvgValue2 = AverageFC(Close, SlowLength);
PlotNumeric(\"MA1\", AvgValue1);
PlotNumeric(\"MA2\", AvgValue2);
// 只做空头的开仓条件
if (MarketPosition == 0 && AvgValue1[1] < AvgValue2[1] && Open < AvgValue2[1])
{
SellShort(0, Open); // 在新的Bar的开盘价卖出做空
}
// 平仓条件
if (MarketPosition == -1 && Close > AvgValue2[1])
{
BuyToCover(0, Close); // 在Bar结束时如果收盘价高于长期均线,则平掉空头仓位
}
}
为什么回溯参数是barcount
一头雾水
这是想干嘛?
自己搞复杂了,直接Close[1]模拟测试了一下好像问题解决,谢谢老师
老师,这样改可以吗?
close在盘中代表最新价
你好像对运行机制有一点误解
建议看看这个
// 平仓条件
if (MarketPosition == -1 && Close[BarCount] > AvgValue2[BarCount])
{
BuyToCover(0, Close[BarCount]); // 在Bar结束时如果收盘价高于长期均线,则平掉空头仓位
这样改可以吗?
在bar结束时 那你得写到onbarclose域里
或者在onbar里判断 如果上一根bar收盘价高于指标,当前bar开盘价平仓
老师,这样改可以吗
交易的是60分钟周期,然后在22.32分的时候价格突破长期均线没等60分钟收盘就被平仓了,策略是不是写错了?