以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请教老师:止损止盈不执行,写法错在哪?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=160661)

--  作者:我心飞翔
--  发布时间:2017/12/26 9:03:40
--  请教老师:止损止盈不执行,写法错在哪?
我的程序里有如下止损止盈语句,回测时不执行止损和止盈,请问错在哪?

//亏9点止损
IF (CLOSE-ENTERPRICE)<-9 THEN
    BEGIN
    SELL(HOLDING>0,1,MARKET);
    bj:=bj+1;
END

//赢15点止盈
IF (close-ENTERPRICE)>15 THEN 
    BEGIN
    SELL(HOLDING>0,1,MARKET);
    bj:=bj+1;
END

--  作者:qq代人发帖
--  发布时间:2017/12/26 9:41:01
--  

代码写的没有问题,图上有止盈止损吗?


--  作者:FireScript
--  发布时间:2017/12/26 9:42:16
--  
把止盈止损的条件输出下看下?  这段代码看不出问题的。
--  作者:我心飞翔
--  发布时间:2017/12/26 9:50:01
--  
全部代码如下:

//参数设定
variable:bj=0;                  // 全局变量赋值,限定每天只交易一次
B1:=stkindi(\'\',\'BBI\',0,6,-1);   // 调用昨天的BBI值
ZK:=callstock(\'\',vtopen,6,-1);  // 调用昨天的开盘价
ZS:=callstock(\'\',vtclose,6,-1); // 调用昨天的收盘价
JK:=callstock(\'\',vtopen,6,0);   // 调用今天的开盘价

//开空
if  ZS<ZK and  ZS<B1 and bj<1 then   // 如果昨天的BBI大于昨天的收盘价,且昨天收阴线,则今天开空
begin
buyshort(holding=0,1,limit,JK);
    bj:=bj+1;
end

//开多
if  ZS>ZK and  ZS>B1 and bj<1 then    // 如果昨天的BBI小于昨天的收盘价,且昨天收阳线,则今天开多
    begin
    buy(holding=0,1,limit,JK);
    bj:=bj+1;
    end
   
//亏9点止损
IF (CLOSE-ENTERPRICE)<-9 THEN
    BEGIN
    SELL(HOLDING>0,1,MARKET);
    bj:=bj+1;
END

//赢15点止盈
IF (close-ENTERPRICE)>15 THEN 
    BEGIN
    SELL(HOLDING>0,1,MARKET);
    bj:=bj+1;
END


//收盘前平仓
SELL(time=185800,1,MARKET);
SELLSHORT(time=185800,1,MARKET);
if time=closetime(0) then bj:=0;// 商品期货,收盘的同时,bj赋值为0。收盘bj不赋值为0,第二天就不再开仓了。


--  作者:FireScript
--  发布时间:2017/12/26 10:32:13
--  

我这边是看到触发了止盈和止损的。

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

止盈和止损地方的代码标记下,做法如下:

  止盈:sELL(HOLDING>0,1,MARKET);


--  作者:wenarm
--  发布时间:2017/12/26 10:33:24
--  

代码放到放到图表上,锁定k线位置,让它和回测时段一致。(注意是否使用除权数据)然后看有没有止盈止损信号。

你的测试代码没有问题。本地测试有正常触发止盈止损。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/12/26 10:36:01编辑过]