以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  一开仓,它就自动平仓了,写错了吗  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=88872)

--  作者:viponedream
--  发布时间:2015/12/26 20:47:40
--  一开仓,它就自动平仓了,写错了吗
写出来的,一开仓,就平仓。

很简单的策略啊

意思是
开仓后设置一个固定止损值
赢利1.5倍ATR时,把止损移上去。
回调3倍ATR时,平仓出来。

但是我写出来的,一开它,它就平了。


INPUT:LOTS(1,1,100,1);  //手数
VARIABLE:DUOSTOPRICE=0,KONGSTOPRICE=0;  //多头止损价,空头止损价。
VARIABLE:DUOKAIPRICE=0,KONGKAIPRICE=0;  //多开价格,空开价格。
VARIABLE:HH=0,LL=0; {保存开仓后的最高价、最低价}


RUNMODE:0; 

MYATR:=MA(TR,36);   //真实波幅的26周期值;为止损止盈用。。
IF MYATR<=0 THEN MYATR=1;

HIGHN := REF(HHV(HIGH,10),1);  //做多要大于前3。
LOWN  := REF(LLV(LOW,10),1);    //做空要小于前3。

DUOPEN := C > HIGHN;

//开单条件
KONGOPEN :=  c < LOWN;
DUOPEN := C > HIGHN;


//开多单
if  HOLDING=0 AND DUOPEN then
begin
BUY(1,LOTS,THISCLOSE);
DUOSTOPRICE:= MIN(  ENTERPRICE-1.5*MYATR, ENTERPRICE-3*MINDIFF  );
DUOKAIPRICE:=ENTERPRICE;  //开了多单就把价格传给多开价格

ENd


HH := REF(HHV(HIGH,ENTERBARS),1);  //开仓以前来最高价。
LL := REF(LLV(L,ENTERBARS),1);     //开仓以前来最低价。

////多单管理

IF HOLDING>0 THEN
BEGIN

IF (H-ENTERPRICE)>1.5*MYATR THEN             //盈利1.5*ATR时上移止损
BEGIN
  DUOSTOPRICE = ENTERPRICE-0.3*MYATR;
END
IF   (HH-CLOSE)>   3*MYATR    THEN            //从高位下跌3*ATR时平仓
BEGIN
SELL(1,0,MARKET),ORDERQUEUE;
END

IF C<DUOSTOPRICE THEN                       //止损
BEGIN
  SELL(1,0,MARKET),ORDERQUEUE;
END
END

[此贴子已经被作者于2015/12/26 20:48:07编辑过]

--  作者:yukizzc
--  发布时间:2015/12/27 18:49:36
--  

HH := HHV(HIGH,ENTERBARS+1);  //开仓以前来最高价。
LL := LLV(L,ENTERBARS+1);     //开仓以前来最低价。

当跟k线的enterbars是0


--  作者:viponedream
--  发布时间:2015/12/28 4:19:08
--  
谢谢