INPUT: SETUPLEN(120,1,500,1),ATRPCNT(2.5,0.1,10,0.1),Fund(20000,1,200000,1),TRS(150,1,1000,1);
GLOBALVARIABLE:LSETUP:=0,SSETUP:=0,LEPRICE:=0,SEPRICE:=0;
Lots:=MAX(1,INTPART(Fund/(O*MULTIPLIER*0.1)));
bartoday:=date<>REF(date,1);
MA360:=MA(REF(C,1),360);//后台上用了这么大的均线周期,必须有充足的数据量,后台设置的数据量也必须满足这个。
MOMVALUE:=C-REF(C,SETUPLEN);
CD:=REF(C,1);
If bartoday Then Begin
AvGLENG:=1;
end;
If bartoday=False Then Begin
AvGLENG:=AvGLENG+1;
AvGLENG:=max(AvGLENG,SETUPLEN);
end;
VWM:=EMA(VOL*MOMVALUE,AvGLENG);
TRUERANGE1:=H-L;
AATR:=MA(TRUERANGE1,AvGLENG);
BULLSETUP:=CROSS(VWM,0) ;
BEARSETUP:=CROSS(0,VWM);
If REF(BULLSETUP,1) Then begin
LSETUP:=0;
end;
If NOT(REF(BULLSETUP,1)) Then begin
LSETUP:=LSETUP+1;
end;
If BULLSETUP Then begin
LEPRICE:=H;
end;
If REF(BEARSETUP,1) Then begin
SSETUP:=0;
end;
If NOT(REF(BEARSETUP,1)) Then begin
SSETUP:=SSETUP+1;
end;
If BEARSETUP then begin
SEPRICE:=L;
end;
If BARPOS>AvGLENG and REF(LEPRICE,1)>0 and REF(C,1)>=REF(LEPRICE,1)+(ATRPCNT*REF(AATR,1)) and REF(LSETUP,1)<=SETUPLEN and REF(LSETUP,1)>=1 and REF(C,1)>MA360 and tsellHOLDING(1) <=0 Then begin
平空:tSellSHORT(1,0,mkt);
开多:tBuy(1,Lots,mkt);
LowerAfterEntry:=tENTERPRICE;
end;
if BARPOS>AvGLENG and REF(SEPRICE,1)>0 and REF(C,1)<=REF(SEPRICE,1)-(ATRPCNT*REF(AATR,1)) and REF(SSETUP,1)<=SETUPLEN and REF(SSETUP,1)>=1 and REF(C,1)<MA360 and tbuyHOLDING(1) >=0 Then begin
平多:tSell(1,0,mkt);
开空:tBUYSHORT(1,Lots,mkt);
HigherAfterEntry:=tENTERPRICE;
end;
//------------------------------------------------------------------------------------------------
//记录入场后的最高价和最低价
//------------------------------------------------------------------------------------------------
LowerAfterEntryss:= REF(LowerAfterEntry,1);
HigherAfterEntryss:=REF(HigherAfterEntry,1);
Closelp:=REF(Close,1);
If tbuyHOLDING(1) >0 and tENTERBARS = 0 Then BEGIN
LowerAfterEntry:=Max(LowerAfterEntry,Low);
HigherAfterEntry:=HigherAfterEntryss;
end
if tsellHOLDING(1) <0 and tENTERBARS = 0 Then BEGIN
HigherAfterEntry:= Min(HigherAfterEntry,HIGH);
LowerAfterEntry:=LowerAfterEntryss;
end
if tHOLDING2 <> 0 and tENTERBARS >= 1 Then BEGIN
LowerAfterEntry:= Max(LowerAfterEntryss,Low);
HigherAfterEntry:= Min(HigherAfterEntryss,HIGH);
End
//------------------------------------------------------------------------------------------------
//跟踪止损
//------------------------------------------------------------------------------------------------
MyPrice2:=LowerAfterEntry - Open*TRS/1000;
If tbuyHOLDING(1)>0 And Low <= Myprice2 and tENTERBARS > 0 Then BEGIN
多损:tsell(1,TSELLHOLDINGEX('','',1),mkt);
End
Myprice3:=HigherAfterEntry + Open*TRS/1000;
If tsellHOLDING(1)<0 And High >= Myprice3 and tENTERBARS > 0 THEN BEGIN//空头跟踪止损
空损:tSellSHORT(1,TSELLHOLDINGEX('','',1),mkt);
End
仅供参考。后台和图表有很大区别的,主要是下单语句,持仓判断这块。我删除了部分源代码中在后台中无效的代码。然后下单和持仓语句我等效替换了。
[此贴子已经被作者于2019/1/4 9:55:25编辑过]