//把A初始化为0;
//这里先假设用手工开多1手来做实验
//如果有持仓了并且a=0则把a赋值为1,表示现在有持仓了
if TBUYHOLDINGEX( '','' ,0 )>0 and EXTGBDATA('a' )=0 then begin
EXTGBDATASET( 'a',1 );
end
//如果最新价大于a当前值并且A=1了已经在持仓状态了,则把最新的高值赋给a
if DYNAINFO( 7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 then begin
EXTGBDATASET( 'a',DYNAINFO( 7));
end
//如果a-最新价大于5个最小价位,也就是从高点回落了5个点位则平仓,并且吧A重置为0
if EXTGBDATA('a' )-DYNAINFO( 7)>5*mindiff and EXTGBDATA('a' )>0 then begin
TSELL(1,1,mkt );
EXTGBDATASET( 'a',0);
end
但是现在问题是,A仿佛一只被赋值为最新价,仿佛if DYNAINFO( 7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 then begin
这个语句木有起到IF的效果~
不能执行吗?
代码本身没有错误呀
知道了,你是运行逐K模式,所以无法执行。
你的代码要运行序列模式
if EXTGBDATA('a' )-DYNAINFO( 7)>5*mindiff and EXTGBDATA('a' )>0 then begin
TSELL(1,1,mkt );//在逐K模式,非最后一根K线不下单
EXTGBDATASET( 'a',0);//但是平仓条件成立时,在第一根bar,这语句会执行赋值为0,导致后面的K线执行时,a又被赋值为最新价
end
啊哈哈 群众的力量是无穷的 啊火的智慧是社会先进生产力的三个代表
variable:zs=drawnull,hl=drawnull;
if holding>0 and l<zs then begin
sell(1,1,limitr,c);
tsell(1,1,mkt);
end
if holding=0 and ref(ma5>ma10,1) then begin
buy(1,1,limitr,c);
hl:=h;
tbuy(1,1,mkt);
end
if holding>0 and h>=hl then begin
hl:=h;
zs:=hl-20;
end
谢谢阿火老师这样快回复
再请教 后台止损平仓是不是用市价mkt效果比较好,为什么不用限价
用mkt成交容易,损失滑点
用lmt成交慢,或者成交不了,不损失滑点
哪个好,哪个差 自行斟酌选择