开仓后N周期 ,涨幅 或者跌幅没有超过m% 则平仓 。 应如何表述呢?
zd:100*abs((ref(c,ENTERBARS+1)-c)/ref(c,ENTERBARS+1));//以开仓K的收盘价 和现在的收盘价来做涨跌幅的计算。
if zd<m and holding<>0 then
begin
SELL(1,holding,MARKET);
SELLSHORT(1 ,holding,MARKET);
end
如果是在固定N周期时候判断的话,那这样改下:
zd:=100*abs((ref(c,N)-c)/ref(c,N));//以开仓K的收盘价 和现在的收盘价来做涨跌幅的计算。
if zd<m and holding<>0 and ENTERBARS+1=N then //在开仓N周期时候进行是否平仓的判断
begin
SELL(1,holding,MARKET);
SELLSHORT(1 ,holding,MARKET);
end
嗯 理解了。
限制在1. 白天时间段交易 或者 2. 夜盘时间段交易 或者 3.只做日内交易,临收盘前5分钟不开仓怎么描述?
限制时间段的话 就用time函数处理就行了。
abb:timetot0(CLOSETIME(0))-timetot0(time),NODRAW;//当前时间距离收盘K时间 ,这里写的是白盘收盘时间。替换 CLOSETIME的参数就可以换成其他收盘时间。
cd1:time>=13000 and time<=19000 and abb>300;//300对应五分钟;time>=13000 and time<=19000表示上午九点到下午收盘
把cd加入到开仓条件就行了。
如果是其他时间段也是类似的。
开仓后有盈利了,从最大盈利回撤 N%比例平仓 怎么描述?
这样:
DTYDZS:=(HHV(H,ENTERBARS+1)-CLOSE)/AVGENTERPRICE>=(N/100) AND C>AVGENTERPRICE;//多头
KTYDZS:=(CLOSE-LLV(L,ENTERBARS+1))/AVGENTERPRICE>(N/100) AND C<AVGENTERPRICE;//空头
多头最高盈利用最高价H来算的,空头最高盈利用最低价L来算的。你也可以改成用C收盘价来统计。上面2个变量分别作为平多平空条件就行了。