我定义了一个普通的变量15windot,不是全局变量。变量的第一次使用是在time=093000,可是我在图表上时间093000之前(具体是091544)shift+Q,显示15windot的值是-12.000。
15windot作为一个临时定义的变量,为什么会在没定义的时间也出现呢?
//01 取消FirstGrid,用GridInterval代替
//02 不能单纯的逐K线,必须1秒轮询。以轮询方式定kcj/pcj
//03 信号输出
//04 尝试解决白箭头,显示格子线.
//05 白箭头未改好。先做一个改动:每逢15分钟全部平仓
//06 恢复FirstGrid
//07 恢复多次下单 TmpGridIndex MyRealMp
//08 对07进行编译上的修改
//09 修复趋势单很快平仓的问题 drawtext(1,pcj,'这里',colorgreen,5);
//10 几处订正。补充单边震荡单趋势单的转换(没补充。原意的大部分已经在止盈止损里做了平仓,对于StyleChangeGrid与StyleChangeGrid+1 这个价格区间则不做处理。)
//12 添加czbz,修正midline的赋值时刻,令第一次赋值后,同秒内不再赋值。分笔交易需要这个限制,1分钟K线则不用。
//13 把c改为o,添加drawtext用于分析
//14 取消FirstGrid,用GridInterval代替
//15 修改时间点。113000平仓后早上不再开仓.
//16 113000的平仓要提前发出指令,令在112900平仓,并早上不再开仓。(之前的版本漏了113000的平仓)
//18 130000不需要清仓
//19 价位微调
//20 15windot daywindot
//22 修补。1,删除不必要的else。2,删除4部曲的时间的重复限制。
runmode:0;
variable:MyRealMp=0,qcbz=0,RealMidLine=0,ccfl=0,czbz=0,kcjd=0,pcjd=0,kcjk=0,pcjk=0,daywindot=0;//ccfl,持仓分类,0,无持仓,1,震荡单,2,趋势单
time1:= time=091500 or time=093000 or time=094500 or time=100000 or
time=101500 or time=103000 or time=104500 or time=110000 or time=111500
or time=130000 or time=131500 or time=133000 or time=134500 or time=140000 or time=141500 or time=143000 or time=144500 or time=150000;
if time1 then begin
if czbz=0 then begin
MidLine:=open;
RealMidLine:=MidLine;
czbz:=1;
end
end else czbz:=0;
MinPoint:=0.2;//最小变动值,比如上海A股最小变动值为0.01元
MidLine1:RealMidLine,COLORMAGENTA,LINETHICK3;
//定时清仓
If time=093000 or time=094500 or time=100000 or
time=101500 or time=103000 or time=104500 or time=110000 or time=111500 or time=112900
or time=131500 or time=133000 or time=134500 or time=140000 or time=141500 or time=143000 or time=144500 or time=150000 or time=150800 then begin
if qcbz=0 then begin
If holding<0 then begin
pcj:=o+OffSet*MinPoint;
15windot:=kcjk-(pcjk+pcj*(-1)*holding)+(pcjd-kcjd);//系统会连续开仓连续平仓,所以分别累加多头空头的开仓价、平仓价,最后相减得盈利点数。以15分钟为一个周期,周期结束就全部平仓。
sellshort(1,0,limitr,pcj);
end
If holding>0 then begin
pcj:=o-OffSet*MinPoint;
15windot:=(pcjd+pcj*holding)-kcjd+(kcjk-pcjk);
sell(1,0,limitr,pcj);
end
//drawtext(1,pcj,'1',COLORBLUE,4);
daywindot:=daywindot+15windot;
MyRealMp:=0;ccfl:=0;qcbz:=1;kcjd:=0;pcjd:=0;kcjk:=0;pcjk:=0;
if 15windot>=0 then DRAWTEXT(1,o,NUMTOSTR(15windot,1),COLORRED,4);
if 15windot<0 then DRAWTEXT(1,o,NUMTOSTR(15windot,1),COLORGREEN,4);
15windot:=0;
end
If time=150800 then begin
if daywindot>=0 then DRAWTEXT(1,o,NUMTOSTR(daywindot,1),COLORRED,5);
if daywindot<0 then DRAWTEXT(1,o,NUMTOSTR(daywindot,1),COLORGREEN,5);
daywindot:=0;15windot:=0;//下面的代码不再出现15windot。其实15windot作为临时变量,并不需特别赋值为0.
end
end else qcbz:=0;
tradetime:=(Time>=091500 and Time<112900) or (Time>=130000 And Time<150800);//112900 150800必须平仓后就不开仓,所以是=不是<=
if tradetime then begin
。。。各种平仓。分开记录多单空单的平仓价。。。
。。。各种开仓。分开记录多单空单的平仓价。。。
end