以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp)
-- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4)
---- 如何避免在开仓那根k线被止损 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159894)
|
-- 作者:daviwang
-- 发布时间:2017/11/27 14:39:29
-- 如何避免在开仓那根k线被止损
我采用小时线进行图表交易,下单按k线结束前20秒下单,使用marketr函数开仓。止损为开仓价格反向波动n1止损,代码如下:
止损条件:=l<=ENTERPRICE-n1;//多头止损标准(以多头为例)
if holding>0 and 止损条件=1 THEN sell(1,0,MARKETr);
如果开仓的那根k线的最低价l,满足l<=ENTERPRICE-n1,是否会在开仓后立即被止损?如何避免这种情况?
之前用market函数开仓,止损代码为:
if holding>0 and 止损条件=1 and enterbars>0 THEN sell(1,0,MARKETr);
这样写不能在开仓后的第一根k线止损,也不避免开仓后立即被止损
|
-- 作者:FireScript
-- 发布时间:2017/11/27 14:58:41
--
设置的是软件自带的提前下单吗?
|
-- 作者:daviwang
-- 发布时间:2017/11/27 20:53:20
--
不是的。
用代码完成的:
abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);
if abb then begin;//k线结束前提前20秒下单
开多
开空
end;
|
-- 作者:wenarm
-- 发布时间:2017/11/28 8:30:05
--
你是希望止损在下根k上生效?
if holding>0 and 止损条件=1 and enterbars>0 THEN sell(1,0,MARKETr);
这个写法没有问题,你把开空和开多指令中的MARKET==》MARKETR、这样enterbars函数就能满足你的要求。(本周期和次周期的指令对enterbars函数的计算是有影响的,你可以自己在图表中看一下)
abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);
if abb then begin;//k线结束前提前20秒下单
开多
开空
|
-- 作者:daviwang
-- 发布时间:2017/11/28 15:07:21
--
以下是引用wenarm在2017/11/28 8:30:05的发言:
你是希望止损在下根k上生效?
if holding>0 and 止损条件=1 and enterbars>0 THEN sell(1,0,MARKETr);
这个写法没有问题,你把开空和开多指令中的MARKET==》MARKETR、这样enterbars函数就能满足你的要求。(本周期和次周期的指令对enterbars函数的计算是有影响的,你可以自己在图表中看一下)
abb:=(time0-timetot0(dynainfo(207))<=20) or not(islastbar);
if abb then begin;//k线结束前提前20秒下单
开多
开空
我开空和开多指令就是用的MARKETR,但是不能让止损在下根k上生效。
我在图表上试过了,在本次开仓的当根K线时,enterbars显示的数值是上次开仓到现在的bar数,而不是0.
|
-- 作者:wenarm
-- 发布时间:2017/11/28 15:30:07
--
贴出你完成的测试代码。你止损条件中使用的是建议你排查下其他条件。
if holding>0 and 止损条件=1 and enterbars>0 THEN sell(1,0,MARKETr);
enterbars的记录结果如下图
此主题相关图片如下:18.jpg

|
-- 作者:FireScript
-- 发布时间:2017/11/28 15:35:15
--
以下是引用daviwang在2017/11/28 15:07:21的发言:
我开空和开多指令就是用的MARKETR,但是不能让止损在下根k上生效。
我在图表上试过了,在本次开仓的当根K线时,enterbars显示的数值是上次开仓到现在的bar数,而不是0.
enterbars的返回值在开仓的K上不是0就是-1.你可以再次确认下。
|
-- 作者:daviwang
-- 发布时间:2017/11/30 9:45:24
--
是的,你是对的。我查看enterbars 的变量赋值时放错位置了,放在开仓前,导致出错。
|