简单写了一个自动平仓策略,计划手动开仓后打开自动交易平仓。所以策略里面没有开仓信号,只有平仓信号。但实践后发现平仓信号无法触发,想问下哪个地方出现了问题。
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
Numeric fast;
Numeric slow;
Numeric MACDValue;
Bool con1;
Bool con2;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[DataSourceSize() - 1]
{
fast = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
slow = XAverage(fast,MACDLength);
MACDValue = fast - slow;
con1 = CrossOver(fast[1], slow[1])
con2 = CrossUnder(fast[1], slow[1])
If(con1 and marketposition==-1)
{
buytoCover(0, max(open, close)); //金叉平空
}
If(con2 and marketposition== 1)
{
sell(0, min(open, close)); //死叉平多
}
}
}
{
PlotString();//图表做平仓标记
}
大概这个意思
这个简单啊
你本来就是手工开仓 涉及到账户
自动平仓策略当然用账户函数
con1 = CrossOver(fast[1], slow[1])
con2 = CrossUnder(fast[1], slow[1])
只是触发条件而已
第一 图上如果没有开仓信号,就不可能出现平仓信号。永远是现有开仓,再有平仓。
你手动开的仓如果不在图上同步用buy命令标记出一个信号,那就出现不了平仓信号
可以自动识别开仓价吗?
可以识别账户持仓里的持仓均价。但是你如果仔细思考过就会发现没什么意义