variable:a=0,hh=0;
if cond=1 then
begin
a:=1;
end
if a=1 and high>hh then
hh:=high;
这样写,通过调节成立后去记录
你不要想当然的处理,之前已经说过了,for循环值在纵向方向上的,它计算你的过程对于历史k线来说,就只有开搞低收可以使用,而对于横向的k线时间上,策略本身就是在k线时间方向上不断的循环,你这种记录方式压根就记录不到某根k线的其中一个中间过程,唯一能体现的就只有k线的最高价。
你不把机制理解清楚,写这些东西其实都是白费功夫。
你参考后台移动止损的代码的处理方式。
ZH1:'1000';
PZ1:'IF00';
VARIABLE:A=0;
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( '','' ,0 )>0 AND EXTGBDATA('a' )=0 THEN BEGIN
EXTGBDATASET( 'a',1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO( 7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 THEN BEGIN
EXTGBDATASET( 'a',DYNAINFO( 7));
END
//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA('a' )-DYNAINFO( 7)>5*MINDIFF and EXTGBDATA('a' )>0 THEN BEGIN
TSELL(1,1,MKT );
EXTGBDATASET( 'a',0);
END
//*******************************