经典场景:双均线策略,收盘提前N秒执行交易信号。
特别注意:
1、未经严格验证,未知风险概不负责。
2、只需要在源代码中添加onbaropen的那段代码,其余交易代码注意使用收盘价做判断和交易。
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Events
//每根BAR开始的时候设置触发时间点
OnBarOpen(ArrayRef<Integer> indexes)
{
Numeric advancesec(5); //提前多少秒
Array<Numeric> timePoint;
Numeric ret = DateTimeAdd(RealEndDateTime, -1*advancesec);
ret = StringToTime(TimeToString(ret));
Print(\"endtime=\"+text(RealEndDateTime)+\" SetTriggerBarClose:\" + Text(ret));
ArrayPushBack(timePoint, ret);
SetTriggerBarClose(timePoint);
}
OnBarClose(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric(\"MA1\",AvgValue1);
PlotNumeric(\"MA2\",AvgValue2);
If(MarketPosition <>1 && AvgValue1 > AvgValue2)
{
Buy(0,Close);
}
If(MarketPosition <>-1 && AvgValue1 < AvgValue2)
{
SellShort(0,Close);
}
}你好,根据你的双均线策略,我用的是5分钟的周期,上一根K线双均线还处在多头排列,账户显示持有1手多,在下午14:59:55的时候,出现了死叉,系统反手做空1手,但是在15:00:00收盘的时候价格往上走了点导致死叉没了。到晚上的时候价格下来出现死叉,因为我账户已经持有一手空仓了所以系统显示可平仓位不足这里没问题,但怎么又多开了一手空仓了呢?还有一个问题:如果在14:59:55系统反手做空之后,死叉消失,价格一路暴涨,那么我这手空不就会一直亏,这个得怎么解?
// 金叉做多
If(MarketPosition != 1 And AvgValue1[1] <= AvgValue2[1] And AvgValue1 > AvgValue2)
{
Buy(Lots, Close);
}
// 死叉做空
If(MarketPosition != -1 And AvgValue1[1] >= AvgValue2[1] And AvgValue1 < AvgValue2)
{
SellShort(Lots, Close);
}
你这个就是信号闪烁了,你想收盘前报单就要承受这种风险。
如果不想承受这种风险,要么监控器等第二天开盘立即同步平仓,要么换成收盘确认下一根bar再出信号报单
好的谢谢
非常赞,顶到前面
实盘可行吗 ?
当Buy(0,Close);SellShort(0,Close); sell(0,Close);buytocover(0,Close); 时。
顶顶顶