以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  高手看看,这样写止损代码对不对,图表上没做多做空信号出来  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=11583)

--  作者:wphxl
--  发布时间:2012/5/9 11:13:40
--  高手看看,这样写止损代码对不对,图表上没做多做空信号出来

VARIABLE:止损值=0,aa=0;
交易数量:=1;
做多条件:=VBuy;
做空条件:=VSell;

IF 做多条件 AND aa=0 and time >= 092700 and time <= 150000 THEN
   BEGIN
   SELLSHORT(HOLDING<0,HOLDING, limitr, open),ORDERQUEUE; //平空
   BUY(HOLDING=0,交易数量, limitr, open),ORDERQUEUE;//开多
   Price:=AVGENTERPRICE;//持仓价位
   止损值:=Price*0.9977;
   aa:=1; 
END

//画出多头的止损线
partline(holding>0,Price*0.9977,colorred);


IF 做空条件 AND aa=0 and time >= 092700 and time <= 150000 THEN
   BEGIN
   SELL(HOLDING>0,HOLDING,limitr, open),ORDERQUEUE;//平多
   BUYSHORT(HOLDING=0 ,交易数量,limitr, open),ORDERQUEUE;//开空
   Price:=AVGENTERPRICE;//持仓价位
   止损值:=Price*1.0027;
   aa:=2;
END

//画出空头的止损线
partline(holding<0, Price*1.0027, colorgreen);

输出:止损值,linethick0;

 

IF aa=1 AND CLOSE<=止损值 THEN //多头止损
BEGIN
   多止损:SELL(HOLDING>0,HOLDING,MARKET),ORDERQUEUE;
   BUYSHORT(HOLDING=0 ,交易数量,MARKET),ORDERQUEUE;
   止损值:=0;
   aa:=0;
END  
IF aa=2 AND CLOSE>=止损值 THEN //空头止损
BEGIN
   空止损:SELLSHORT(HOLDING<0,HOLDING,MARKET),ORDERQUEUE; //平空
   BUY(HOLDING=0 ,交易数量,MARKET),ORDERQUEUE;//开多
   止损值:=0;
   aa:=0;
END

//收盘前5分钟平仓
if time >= 151200 then
 begin
 sell(holding > 0, 0, limitr, open);
 sellshort(holding < 0, 0, limitr, open);
 end


--  作者:jinzhe
--  发布时间:2012/5/9 13:18:00
--  
把止损值也定义成全局变量,最好是两个变量,一个记录多,一个记录空
--  作者:saintlucifer
--  发布时间:2012/5/9 15:27:26
--  
BUY(HOLDING=0,交易数量, limitr, open),ORDERQUEUE;//开多 这句已经有问题了, 不知你是用k线走完模式还是固定轮询模式,这里用当前k线的open价格作为开仓价格,如果是k线走完的话,就是走完这根k线的时候,在下一根k线的时候用这根k线的开盘价格开仓,很大机会下一根k线是不会有这个价格,因此在图表上就不出现开多开空的信号,即使用固定轮询也会出现这个问题,如果你想是在走完这根k线,用下一根k线的开盘价格开仓的话,把open改成close,价格不会相差很大,这样才有出到信号