那就是不支持市价导致得报错。
改成对手价吧。
[PEL] 复制代码 //客户原始思路:
//以启动程序时候的价格作为基准价:上涨1%以上并回落0.1%则卖出100股;下跌1%以下并反弹0.1%则买入100股;如果连续触发下跌买入,则每次买入比上一次买入的数量加一个单位
INPUT:N1(0.1,0.01,100,0.01),N2(0.01,0.01,100,0.01),ss(1,1,500,1);
GLOBALVARIABLE:base:=-1,maxp:=-1,minp:=-1;
//首次运行 初始化基准价,以程序启动时候的价格作为初始基准价
if base=-1 then
begin
base:=DYNAINFO( 7);
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
end
if DYNAINFO( 7)>maxp and base<>0 then maxp:=DYNAINFO( 7);
if DYNAINFO( 7)<minp and base<>0 then minp:=DYNAINFO( 7);
//P1,P2:最高点的涨幅,最低点的跌幅
P1:100*(maxp-base)/(base);
P2:100*(base-minp)/minp;
//P3,P4:高点回落幅度,低点上涨的幅度
P3:100*(maxp-DYNAINFO( 7))/(maxp);
P4:100*(DYNAINFO( 7)-minp)/minp;
//有可用持仓时候才能平仓
if P1>N1 and P3>N2 and minp<>0 and maxp <>0 and TBUYHOLDINGEX('','',0)>0 then
begin
//固定手数平仓
tsell(1,ss,lmt,DYNAINFO( 28));
//平仓后重置最高最低价的记录,同时更新基准价为当时的信号触发价
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
base:=DYNAINFO( 7);
end
//加仓逻辑
if P2>N1 AND P4>N2 and minp<>0 and maxp<>0 and TBUYHOLDINGEX('','',1)>0 then
begin
//固定手数加仓
tbuy(1,ss,lmt,DYNAINFO( 34));
//开仓后重置基准价为当时的信号触发价
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
base:=DYNAINFO( 7);
end
//完全没有持仓时候才能进行初始开仓;初始开仓时候始终按照ss开仓
if P2>N1 AND P4>N2 and minp<>0 and maxp <>0 and TBUYHOLDINGEX('','',2)=0 then
begin
tbuy(1,ss,lmt,DYNAINFO( 34));
//开仓后重置基准价为当时的信号触发价
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
base:=DYNAINFO( 7);
end
然后你说得那个买入幅度问题,我再看下。之前测试时候是OK。现在时间久了,我要再整理看下。 |