以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 |