设为首页 收藏本站 切换语言

关于重复下单的,请大神看一下。

| 发表于 2023-3-17 19:37:34 | 显示全部楼层 |复制链接
我用了以下代码,一根K线上只下一次单,但回测时发现,这个单如果损掉,还是会继续在这K线上下单,有什么解决办法吗?谢谢

int 一根K线只交易一次=0;
if(一根K线只交易一次!=Time[0] && 信号条件  )
  {
    下单;     
   一根K线只发送一次=Time[0];   
   }
举报

评论 使用道具

精彩评论15

My05613828
CCC
| 发表于 2023-3-17 19:54:57 | 显示全部楼层
static long 一根K线只交易一次=0;
long v = Time[0] ;
if(v>0&&v>一根K线只交易一次 && 信号条件  )
  {
    下单;     
   一根K线只发送一次=v;   
   }
举报

点赞 评论 使用道具

tylzqiqi
C
 楼主 | 发表于 2023-3-17 19:59:18 | 显示全部楼层
myxdsl 发表于 2023-3-17 19:54
static long 一根K线只交易一次=0;
long v = Time[0] ;
if(v>0&&v>一根K线只交易一次 && 信号条件  )

谢谢大神,我慢慢琢磨下啥意思,刚学习,思路有点跟不上。
举报

点赞 评论 使用道具

cq2031
D
| 发表于 2023-3-17 22:00:28 | 显示全部楼层
刚学习,新人多多学习
举报

点赞 1 评论 使用道具

大智若愚
D
| 发表于 2023-3-18 08:16:06 | 显示全部楼层
我是来学习的
举报

点赞 1 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-18 10:45:34 | 显示全部楼层
搞明白为什么会“损掉”呢?如果止损是正常的,那么你的入场是不是太随便了呢?你的入场怎么会在同时满足止损条件时而入场呢?

如果都是正确的(!),入场之后由于行情变化而正常止损,那么就应该坚持。“止损了之后又立刻进场”这本身并没有什么问题,问题是在人心,在于一个人自己承担力不足。

要解决问题要从业务逻辑根源上去设计,不要用什么编程伎俩来对付。
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-18 10:54:36 | 显示全部楼层
例如你使用“向上突破某个固定价格则多单入场,向下突破此固定价格则多单止损”这种规则,显然这就是需要淘汰的规则形式。因为行情会“上下扫”,那么你选择所谓的“入场线、止损线”应该是配合具有自然的延时的指标,例如短周期均线指标,而不应该是配合裸价,仅当均线突破某价格时开多单、均线跌破某价格时止损。
举报

点赞 1 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-18 10:56:56 | 显示全部楼层
学习 EA 设计时要记住一点,纠结编程伎俩、某些代码形式,是最 low 的做法。

真正的编程大师都是业务逻辑专家。
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-18 11:24:53 | 显示全部楼层
再比如,整个交易市场的报价也会有点差的,平台会在市场的点差的基础上再增加相应的滑点,那么你的“开仓、平仓”规则就应该考虑这些问题。许多时候你开仓,然后即使是市场报价没变化,此时你后悔所以又立刻平仓了,那么的损失很可能相当于K线平均高度的2、3根“叠起来”那么高的差价。你以市场价开一个Buy单,那么你的接下来需要参与策略的持仓成本价可能远远高于这个市场价,这个是起码的知识。可能许多入门教程,为了忽悠初学者学习编程,而刻意忽略了许多业务知识。
举报

点赞 评论 使用道具

tylzqiqi
C
 楼主 | 发表于 2023-3-18 11:46:24 | 显示全部楼层
westwuwei 发表于 2023-3-18 11:24
再比如,整个交易市场的报价也会有点差的,平台会在市场的点差的基础上再增加相应的滑点,那么你的“开仓、 ...

谢谢大神的解答,学习了
举报

点赞 评论 使用道具

BeyondCy
DD
| 发表于 2023-3-19 00:20:25 | 显示全部楼层
看不懂代码!!厉害了
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2023-3-19 09:29:14 | 显示全部楼层
"回测时发现"的问题其实还算少的,我一般都是在实盘时仔细盯盘,研究每一个买卖动作,用“业务逻辑”来理解实盘时发现的问题,这样才能习惯于进行业务逻辑设计。回测工具往往忽略了许多真实细节。

补充说明一下上面的“点差+滑点”的例子。比如实盘时我们开 Buy 单,我们认为当前价格是 x,但是实际成交价就会在 x 上方很远的地方,对于许多品种、许多时刻这个成交价(成本价)会高出2、3根K线,那么我们一旦开 Buy 单就已经亏了,此时市场报价在我们的开仓成本价“下边”一段距离在徘徊。然后接下来,行情报价未必会上涨并且穿透成本价,而是可能一路下跌。当我们平仓时,我们以为会在价格 y 平仓,但是实际平仓价可能会在 y 下方一点儿,那么你设计“止盈止损”策略时就要对于这种理论与成交的误差预先留出一定富余。

如果我们忽略滑点,设计出来的业务逻辑可能就会让止损距离大大超过实际预想的距离(因为没有按照真实的成交价止损),或者如果按照真实成本价设置止损又(太容易碰上K线指标)不停地“开仓、止损、开仓、止损.......”了。

最粗暴的处理办法,是每次开仓/加仓之前都要检测一下当前品种、当前时刻的参考点差值,限制开仓/加仓。丧失了进场功能,但是减少了滑点造成的影响。当然一个好的程序设计会有更聪明的处理滑点的业务处理办法。
举报

点赞 1 评论 使用道具

holdnorth
D
| 发表于 2023-3-19 09:51:44 | 显示全部楼层
要搞清楚执行逻辑,是否每次有数据过来都会重新初始化或执行所有代码一次,用静态变量可以解决
举报

点赞 评论 使用道具

tylzqiqi
C
 楼主 | 发表于 2023-3-19 09:55:12 | 显示全部楼层
holdnorth 发表于 2023-3-19 09:51
要搞清楚执行逻辑,是否每次有数据过来都会重新初始化或执行所有代码一次,用静态变量可以解决 ...

是把上面代码换成静态就行了吗?
举报

点赞 评论 使用道具

holdnorth
D
| 发表于 2023-3-19 10:12:34 | 显示全部楼层
这个静态变量要在K线第一个数据进来时重新赋值的,看到楼上大神myxdsl的回复似乎已是最好的答案
举报

点赞 评论 使用道具

tylzqiqi
C
 楼主 | 发表于 2023-3-19 10:14:50 | 显示全部楼层
holdnorth 发表于 2023-3-19 10:12
这个静态变量要在K线第一个数据进来时重新赋值的,看到楼上大神myxdsl的回复似乎已是最好的答案 ...

好,谢谢啦
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)