全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
向大神求教,我在程序中添加了如下止损代码,虽然没头没脑的貌似解决了,但是始终没明白原因。
2024-04-21 16:07

向大神求教,我在程序中添加了如下止损代码



Numeric zs(15);


Bool bool_zs_buy;

Bool bool_zs_sell;


bool_zs_buy = close <= EntryPrice *(1-zs/100) and MarketPosition<>-1;

bool_zs_sell = close >=  EntryPrice *(1+zs/100) and MarketPosition<>1;



       //平仓条件

If( MarketPosition<>-1 and bool_zs_buy )

       {

        Sell(0,close);

       }

   

  If( MarketPosition<>1  and bool_zs_sell )

       {

        BuyToCover(0,close);

       }


=================

结果是止损没问题,但在止损后,加下来出现的开多和开空,会出现当天开当天自动平的问题。知道我在平仓条件中加入了“barsince>1”

,问题得到排除。但问题是,我至今无法理解源代码哪里出问题了,解释不了。

改后如下:

       //平仓条件

If( barsince>1 and MarketPosition<>-1 and bool_zs_buy )

       {

        Sell(0,close);

       }

   

  If( barsince>1 and  MarketPosition<>1  and bool_zs_sell )

       {

        BuyToCover(0,close);

       }

tblaocai

您好,您认为问题已经解决了的代码,其实还是有问题的,我不知道您怎么判断这个代码是没有问题的。

首先,用Close做判断,用Close作为信号价格,都是会信号闪烁的,建议用上一根K线的Close做判断,用Open作为信号价格;第二,您的代码里只有Sell和Buytocover,这两个都是平仓指令,不是开仓指令,怎么开得了开仓且没有问题的;第三,您说加入了barsince就没有问题, 这个barsince是什么,系统没有提供这种函数,您的代码里也未看到有定义的地方,实在不懂,这段代码怎么会没有任何问题。

2024-04-21 19:16
tbm2724503213

应该是barssince

另外其他代码我没有贴出来,只贴了平仓部分,您提到的内容,源代码里都有的

2024-04-22 09:46
wangkaiming

程序出现当天开平的情况,如果平仓语句在后,因为当根K线同时满足了平仓条件,就会原地开平

需要在开仓后的平仓加点限制语句

系统函数是 barssinceentry 系统有,你是不是搞错了

然后建议提供完整可执行代码

2024-04-22 10:24
tbm2724503213

之前我贴错了,应该是BarsSinceEntry。也就是加上了,最开始的代码执行是正常的。后来为了控制浮亏,加了额外的止损代码部分,如下:

Numeric zs(10);//参数定义

Bool bool_zs_buy;//布尔定义

Bool bool_zs_sell;//布尔定义


bool_zs_buy = close <= EntryPrice *(1-zs/100) and MarketPosition<>-1;//止损条件定义

bool_zs_sell = close >=  EntryPrice *(1+zs/100) and MarketPosition<>1;//止损条件定义

//以下是最开始的止损条件

If( MarketPosition<>-1 and bool_zs_buy )

      {

       Sell(0,close);

      }

 If( MarketPosition<>1  and bool_zs_sell )

      {

       BuyToCover(0,close);

      }



在日k线周期下,上述止损代码加入后,原代码止损正常,但是紧跟着的下一次或多次开仓信号下,会出现当根k线(日线周期),当根开当根平(即开即日平)的情况。之后我在“止损条件定义”中加入了“BarsSinceEntry>1”,问题得到解决。但现在的问题是,我没想明白为什么日k线下,必须加入“BarsSinceEntry>1”,而有的公式不加入也没关系,也没影响正常的开仓平仓。

2024-04-23 07:11
您未登录,请先 登录注册 后发表评论
顶部