程序化策略使用中,存在以下3个问题:1、经常出现信号闪烁的警告提示。2、系统设置的是1手交易,但实际会多次重复开仓买入。3、回测数据和实盘中的开平仓不一致,
Params
Numeric FastLength(12); // MACD快线周期
Numeric SlowLength(26); // MACD慢线周期
Numeric MACDLength(9); // MACD信号线周期
Numeric BIASPeriod(12); // BIAS周期
Numeric Lots(1); // 每次交易的手数
Vars
Series<Numeric> FastEMA; // 快线EMA
Series<Numeric> SlowEMA; // 慢线EMA
Series<Numeric> MACDValue; // MACD值
Series<Numeric> MAValue; // 移动平均值
Series<Numeric> BIASValue; // BIAS值
Bool BuyCondition(False); // 买入条件
Bool SellCondition(False); // 卖出条件
Bool ExitBuyCondition(False); // 买入后平仓条件
Bool ExitSellCondition(False); // 卖出后平仓条件
Events
onBar(ArrayRef<Integer> indexs)
{
// 计算MACD
FastEMA = XAverage(Close, FastLength);
SlowEMA = XAverage(Close, SlowLength);
MACDValue = FastEMA - SlowEMA;
// 计算BIAS
MAValue = Average(Close, BIASPeriod);
BIASValue = (Close - MAValue) / MAValue * 100;
// 开仓买入条件:K线收盘时 MACD > 0 且 BIAS > 0
if (MACDValue > 0 && BIASValue > 0) {
BuyCondition = True;
}
// 开仓卖出条件:K线收盘时 MACD < 0 且 BIAS < 0
if (MACDValue < 0 && BIASValue < 0) {
SellCondition = True;
}
// 平仓买入条件:K线收盘时 MACD < 0 或 BIAS < 0
if (MarketPosition == 1 && (MACDValue < 0 || BIASValue < 0)) {
ExitBuyCondition = True;
}
// 平仓卖出条件:K线收盘时 MACD > 0 或 BIAS > 0
if (MarketPosition == -1 && (MACDValue > 0 || BIASValue > 0)) {
ExitSellCondition = True;
}
// 执行买入操作(仅在无持仓时执行)
if (BuyCondition && MarketPosition == 0) {
Buy(Lots, Open);
BuyCondition = False; // 重置买入条件
}
// 执行卖出操作(仅在无持仓时执行)
if (SellCondition && MarketPosition == 0) {
SellShort(Lots, Open);
SellCondition = False; // 重置卖出条件
}
// 执行买入后平仓操作
if (ExitBuyCondition && MarketPosition == 1) {
Sell(Lots, Open);
ExitBuyCondition = False; // 重置平仓条件
}
// 执行卖出后平仓操作
if (ExitSellCondition && MarketPosition == -1) {
BuyToCover(Lots, Open);
ExitSellCondition = False; // 重置平仓条件
}
}
弄反了,文本弄到代码块里,代码弄到文本格式了
这四个close后面加上[1]变成close[1]
谢谢管理员!