VARIABLE:DD=0; VARIABLE:KK=0;
//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( '','' ,1)>0 AND EXTGBDATA('DD' )=0 THEN BEGIN
EXTGBDATASET( 'DD',1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO( 7)>EXTGBDATA('DD' ) and EXTGBDATA('DD' )>0 THEN BEGIN
EXTGBDATASET( 'DD',DYNAINFO(7));
END
//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA('DD' )-DYNAINFO( 7)>5*MINDIFF and EXTGBDATA('DD' )>0 THEN BEGIN
TSELL(1t=-1 AND 多头持仓>0,1,MKT );
EXTGBDATASET( 'DD',0);
END
//******************************
VARIABLE:DD=0; VARIABLE:KK=0;
IF
TSELLHOLDINGEX( '','' ,1)>0 AND EXTGBDATA('DD' )=0 THEN BEGIN
EXTGBDATASET( 'DD',1 );
END
//使A始终表示监控开始后的最低价
IF
DYNAINFO( 7)<EXTGBDATA('DD' ) and EXTGBDATA('DD' )>0 THEN BEGIN
EXTGBDATASET( 'DD',DYNAINFO(7));
END
//发现价格回落上涨,并将A赋值为0表示移动止损动作完成
IF
DYNAINFO( 7)-EXTGBDATA('DD' )>5*MINDIFF and EXTGBDATA('DD' )>0 THEN BEGIN
TSELLshort(1t=-1 AND 空头持仓>0,1,MKT );
EXTGBDATASET( 'DD',0);
END
[此贴子已经被作者于2018/10/31 14:33:03编辑过]
你说的的空单指的是没有持仓还空头持仓。
持仓为0的情况下,不会记录最高价的。它记录的原则是,持仓以后的最高价。
如果是空头的处理,你这段代码是多头的处理逻辑,吧空头的贴出看
[此贴子已经被作者于2018/10/31 14:35:34编辑过]
好像不对。第一个IF后,DD的值应该是1啊,第二个IF的条件不会触发
第一个IF之后 DD已经赋值成1了啊。EXTGBDATA('DD' )>0 肯定满足的。
看你代码中的注释,DD代码3中情况,其中两种是状态以及最高价,你可以先理解下代码的处理逻辑、dd在不同情况下,其作用不同。
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕
F TSELLHOLDINGEX( '','' ,1)>0 AND EXTGBDATA('DD' )=0 THEN BEGINEXTGBDATASET( 'DD',1 );END//使A始终表示监控开始后的最低价IF DYNAINFO( 7)<EXTGBDATA('DD' ) and EXTGBDATA('DD' )>0 THEN BEGINEXTGBDATASET( 'DD',DYNAINFO(7));END
第一个if DD肤质了1,怎么可能出现最新价小于1的情况????
VARIABLE:DD=0; VARIABLE:KK=0;
IF TSELLHOLDINGEX( '','' ,1)>0 AND EXTGBDATA('DD' )=0 THEN BEGIN
EXTGBDATASET( 'DD',DYNAINFO( 7) );//或者你把这个值赋值为一个比较大的值,例如999999
END
//使A始终表示监控开始后的最低价
IF DYNAINFO( 7)<EXTGBDATA('DD' ) and EXTGBDATA('DD' )>0 THEN BEGIN
EXTGBDATASET( 'DD',DYNAINFO(7));
END
//发现价格回落上涨,并将A赋值为0表示移动止损动作完成
IF DYNAINFO( 7)-EXTGBDATA('DD' )>5*MINDIFF and EXTGBDATA('DD' )>0 THEN BEGIN
TSELLshort(1t=-1 AND 空头持仓>0,1,MKT );
EXTGBDATASET( 'DD',0);
END
这样就行了。