以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=68623)

--  作者:qq代人发帖
--  发布时间:2014/8/12 9:53:51
--  策略问题
咨询一个问题,我写了一个策略,在逐K线模式下,多头是这样的,low满足小于开盘价-ATR就止损,high大于开盘价+ATR/2进场,逻辑上感觉好着呢,但是现在出现了一个问题,如果开盘后一路下跌,先达到止损位,现在还没有开仓自然不会止损,但是价格又一路走高,达到开仓条件,这样就会出现刚开完仓,系统判断已经达到止损条件了,然后在开仓的一瞬间,以很低的价格平掉开仓。有没有办法判断最低点先达到止损条件,还是最高点先达到开仓条件呢?

--  作者:yukizzc
--  发布时间:2014/8/12 10:38:30
--  

variable:num=0;   //定义个全局变量控制

if high>open+atr/2 and num=0 then

num:=1;

 

if low<open-atr and num=0 then

num:=2;

 

判断下num的值,如果是1表示先达到开仓条件,为2表示先达到了止损条件。平仓后把num重新赋值成0即可

 


--  作者:andrew361x
--  发布时间:2014/8/12 10:47:49
--  回复:(yukizzc)variable:num=0;   //定义...
这个是在测试中测试不出来的,对吧,因为过去数据是没有办法知道先达到止损还是先达到开仓条件,只能通过模拟实盘才能看到这么修改是否有效,是这样的吗?
--  作者:yukizzc
--  发布时间:2014/8/12 10:56:12
--  
是的,历史只有高低价只有数据,并不知道谁先谁后的。你模拟运行试下
[此贴子已经被作者于2014/8/12 10:56:42编辑过]

--  作者:andrew361x
--  发布时间:2014/8/12 11:11:01
--  回复:(yukizzc)
你好,那如果判断条件num等于2的时候,就不进场做多了,那怎么去把num置为0,毕竟如果num=2 后一直就为2,后面永远进不了场了,怎么让策略到下一根新的K线把num变成0,variable 是全局的,还有个变量前面不加任何修饰字,比如a:=1,这个变量是公式扫描完就失效呢,还是在整个K线周期完成后失效,毕竟一个K线周期会扫描好多次呢。。。
--  作者:yukizzc
--  发布时间:2014/8/12 11:34:42
--  

if low<open-atr and num=0 then

begin

num:=2;

bar:=barpos;

end

 

if barpos>bar then       //新一根k的时候重置num

num:=0;

 

a:=1就是普通的变量赋值,每次扫描都将a赋值1