各位大侠你好,我简单的一个思路,当前收盘价突破上一个开仓至当前周期的最高价的一个价格H1做多,同理当前收盘价跌破上一个开仓至当前的周期的最低价的一个价格H2做空。我实现了,但是出现了有些一根K线上出现多次开仓的情况。代码如下,图如下,我做铜连续测试的,两张图时间分别是五分钟周期的3月7日9点40分和3月15日14点40分,之前还有很多根K线出现这个问题。请各位帮我解决这个问题。
h1:=300;
myhigh:=hhv(high,enterbars);
mylow:=llv(low,enterbars);
if close>mylow+h1 then
begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end
if close<myhigh-h1 then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end
估计是myhigh:=hhv(high,enterbars);
mylow:=llv(low,enterbars);这两句出问题了,我先研究下
开仓时刻enterbars=0,hhv(high,0)为已有K线序列中的最高价而非当前K线high,
改为 hhv(high,if(enterbars=0,1,enterbars));
这问题我遇到过
h1:=300;
myhigh:=hhv(high,enterbars);
mylow:=llv(low,enterbars);
if close>mylow+h1 then
begin
sellshort(holding<0,0,thisclose);
if holding=0 then begin
buy(1,1,thisclose);
goto skip@;
end
end
if close<myhigh-h1 then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end
skip@;
另外 ,首次开仓语句的顺序要注意,要放在 myhigh:=hhv(high,enterbars);mylow:=llv(low,enterbars);这2句的后面
感谢您的解答,我按照您所说的改了一下代码,但还是出现一根K线出现多次开仓的情况,你看看
h1:=300;
myhigh:=hhv(high,if(enterbars=0,1,enterbars));
mylow:=llv(low,if(enterbars=0,1,enterbars));
if close>mylow+h1 then
begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end
if close<myhigh-h1 then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end
您看看什么情况
阿火你好,goto skip;是什么意思?加上这句的效果是什么呢?