Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请教老师:止损止盈不执行,写法错在哪?

1楼
我心飞翔 发表于: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
2楼
qq代人发帖 发表于:2017/12/26 9:41:01

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

3楼
FireScript 发表于:2017/12/26 9:42:16
把止盈止损的条件输出下看下?  这段代码看不出问题的。
4楼
我心飞翔 发表于: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,第二天就不再开仓了。

5楼
FireScript 发表于:2017/12/26 10:32:13

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

 


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

 

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

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

6楼
wenarm 发表于:2017/12/26 10:33:24

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

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

 

 


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/12/26 10:36:01编辑过]
共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04688 s, 3 queries.