本帖最后由 技术009 于 2023-4-12 10:20 编辑
[PEL] 复制代码 INPUT:N1(0.1,0.01,100,0.01),N2(0.01,0.01,100,0.01),ss(1,1,500,1),dif(1,1,300,1);//dif是加仓的单位
GLOBALVARIABLE:base:=-1,maxp:=-1,minp:=-1,reals:=0;;
//首次运行 初始化基准价
if base=-1 then
begin
base:=DYNAINFO( 7);
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
reals:=ss;
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,0,mkt);
reals:=ss;
//平仓后重置最高最低价的记录,同时更新基准价为当时的信号触发价
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
//连续加仓情况下 手数增加
reals:=reals+dif;
tbuy(1,reals,mkt);
//开仓后重置基准价为当时的信号触发价
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,mkt);
//开仓后重置基准价为当时的信号触发价
maxp:=DYNAINFO( 7);
minp:=DYNAINFO( 7);
base:=DYNAINFO( 7);
end
N1,N2的 参数要合理设置. 上面思路是在基准价基础上,最高价涨幅大于N1,后再回落N2 ,但是这个N2是从高 计算的,比如N2是1,最高价是100,那么从100跌1% 才算满足。 如果参数设置不合理,可能盈利都亏没了 也触发不了平仓。
这是上午沪锡的一个下单,应该差不多。
后台设置建议,1秒或者分笔级别。这样才能准确捕捉信号。
|