以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 请教老师如何在本根K线平仓后下根K开仓 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=166050) |
-- 作者:strongcheng -- 发布时间:2018/10/24 8:19:37 -- 请教老师如何在本根K线平仓后下根K开仓 我想实现: 固定轮询模式下,在当根K线出现条件一cond1后先平仓,从第二根K线开始后面几条K线,在cond1前提下,只要出现 条件二cond2,就下单,否则不下单,语句要如何编写。因为在当根K线情况下,有可能出现cond2情况,但我不想在当根K线就下单。
|
-- 作者:banzhuan -- 发布时间:2018/10/24 8:42:47 -- 可以在cond2的条件中加上EXITBARS作为条件,可以避免在当根K线不下单 |
-- 作者:wenarm -- 发布时间:2018/10/24 8:45:00 -- 使用BARSLAST函数进行处理。 例如,判断cond1成立以后到第五根之间的范围。 if BARSLAST(cond1)>0 and BARSLAST(cond1)<5 and cond2 then begin 下单语句; end
|
-- 作者:strongcheng -- 发布时间:2018/10/24 9:02:30 -- BARSLAST不能用在IF语句,另外用EXITBARS>0,交易信号在图表全消失不显示了 |
-- 作者:wenarm -- 发布时间:2018/10/24 9:11:29 -- BARSLAST放在if之外使用。赋值给一个变量,把变量放到if里用。 aa:BARSLAST(); if xxxxx then begin AA参与计算 end
EXITBARS受本周期和次周期指令的影响。并且还要考虑到第一次开仓之前的返回值为-1的情况, 具体看该函数说明中的链接 [此贴子已经被作者于2018/10/24 9:13:11编辑过]
|
-- 作者:strongcheng -- 发布时间:2018/10/24 9:19:07 -- //多头进仓条件 long:=M1>M2; if long then begin sellshort(HOLDING<0,holding,THISCLOSE); buy(holding=0 and LOW<M1,1,THISCLOSE); end //空头进仓条件 long2:=M2>M1; if long2 then begin sell(HOLDING>0,holding,thisclose); buyshort(holding=0 and HIGH>M1,1,THISCLOSE); end 具体语句,是这样,老师帮忙看下能如何改,多谢!多谢!
|
-- 作者:banzhuan -- 发布时间:2018/10/24 9:27:40 -- 确认下您的需求,是平仓(平多、平空)后,本根K线不立马开仓是吗? |
-- 作者:wenarm -- 发布时间:2018/10/24 9:32:05 -- 麻烦吧你这段代码需要处理的关系说清楚些。 |
-- 作者:strongcheng -- 发布时间:2018/10/24 9:48:55 -- 就是在出现条件一:M1>M2后,马上做平仓(平空)后,但当根K线不立马开仓,而是待接下几根K线,条件一仍然成立,出现条件二LOW<M1,即时开多仓(对应之前平空); 另外情况是道理一样,出现M2>M1,马上做平仓(平多)后,但当根K线不立马开仓,而是待接下几根K线,M2>M1仍然成立,出现条件HIGH>M1,即时开空仓(对应之前平多);都在固定轮询情况下。 表达不是很清楚,不好意思,让老师费神了。
|
-- 作者:wenarm -- 发布时间:2018/10/24 10:13:17 -- long:=M1>M2;
空头部分自行实现。 [此贴子已经被作者于2018/10/24 10:13:35编辑过]
|