欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 策略问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3044人关注过本帖树形打印复制链接

主题:策略问题

帅哥哟,离线,有人找我吗?
qq代人发帖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
策略问题  发帖心情 Post By:2014/8/12 9:53:51 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:17 积分:0 威望:0 精华:0 注册:2014/7/23 16:44:27
回复:(yukizzc)variable:num=0;   //定义...  发帖心情 Post By:2014/8/12 10:47:49 [只看该作者]

这个是在测试中测试不出来的,对吧,因为过去数据是没有办法知道先达到止损还是先达到开仓条件,只能通过模拟实盘才能看到这么修改是否有效,是这样的吗?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2014/8/12 10:56:12 [只看该作者]

是的,历史只有高低价只有数据,并不知道谁先谁后的。你模拟运行试下
[此贴子已经被作者于2014/8/12 10:56:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
andrew361x
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:17 积分:0 威望:0 精华:0 注册:2014/7/23 16:44:27
回复:(yukizzc)  发帖心情 Post By:2014/8/12 11:11:01 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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


 回到顶部