 
等级: 超级版主
- 注册:
- 2021-5-18
- 曾用名:
|
老师,我使用图标程序化在策略代码中写了在收盘前30秒,根据K线和均线位置关系进行仓位纠正。但是这部分即使满足了条件,却一直没有工作。除了在轮询中设置持仓同步,直接用代码方式不能达到同样的效果吗?
请帮我看哈代码有没有问题,或则有其他什么方式可以准确的在K线结束前进行仓位方向纠正。
// 四、持仓校正系统
// (一)时间计算
剩余秒数 := REMAININGTIME(TIME); // 计算距离当前K线结束的剩余秒数
收盘前30秒 := (REMAININGTIME(CLOSETIME(0)) <= 30 OR 剩余秒数 <= 30)
AND CorrectFlag = 0 AND HOLDING != 0; // 双保险时间判断机制
// (二)校正执行逻辑
IF 收盘前30秒 AND TradeCount < 4 THEN BEGIN
// 1. 多头校正(持多且收盘价低于MA60且DIFF<0)
IF HOLDING > 0 AND CLOSE < MA60 AND MACD_DIFF < 0 THEN BEGIN
SELL(1, HOLDING, MARKETR), ORDERQUEUE; // 市价平多
TradeCount := TradeCount + 1; // 增加交易计数(平仓)
IF TradeCount < 4 AND ShortLots > 0 THEN BEGIN
BUYSHORT(1, ShortLots, MARKETR), ORDERQUEUE; // 市价开空
TradeCount := TradeCount + 1; // 增加交易计数(开仓)
END;
CorrectFlag := 1; // 设置校正标记
LastPosition := -1; // 更新持仓方向记录
END
// 2. 空头校正(持空且收盘价高于MA60且DIFF>0)
ELSE IF HOLDING < 0 AND CLOSE > MA60 AND MACD_DIFF > 0 THEN BEGIN
SELLSHORT(1, -HOLDING, MARKETR), ORDERQUEUE; // 市价平空
TradeCount := TradeCount + 1; // 增加交易计数(平仓)
IF TradeCount < 4 AND LongLots > 0 THEN BEGIN
BUY(1, LongLots, MARKETR), ORDERQUEUE; // 市价开多
TradeCount := TradeCount + 1; // 增加交易计数(开仓)
END;
CorrectFlag := 1; // 设置校正标记
LastPosition := 1; // 更新持仓方向记录
END;
END;
|
|