EA邦程序化交易论坛

标题: 对于当前对冲马丁功能的补充和增加 [打印本页]

作者: mchal    时间: 2022-9-5 09:03
标题: 对于当前对冲马丁功能的补充和增加
周末的时候唐老师和高老师让我对那个反向对冲里补单的功能提一版需求,顺便把之前单独版本希望合到公版里的需求也一并提出。

整理的时候翻看了一下以前提的需求,发现自己也提了不少大家到现在也用得挺多的需求。
譬如末单盈利对冲&多选同时满足开仓:https://www.eabang.com/bbs/forum.php?mod=viewthread&tid=1273
根据条件自动切换配置:https://www.eabang.com/bbs/forum ... =2042&extra=&page=1
天地锁时仅计算单向订单:https://www.eabang.com/bbs/forum ... =1667&extra=&page=1
按比例反向锁仓:https://www.eabang.com/bbs/forum.php?mod=viewthread&tid=1595

至于为什么希望我的单独版本的部分功能合到公版里去,因为我觉得我提出的功能,都不会影响现有公版的用法,而合并之后,我也不需要每次有我看上的新功能都单独希望唐老师合到我的版本里去,这样会增加了唐老师的开发难度,但如何不合,我需要测试新功能结合我自己版本的配置的时候也很麻烦。

言归正传,现在开始提需求:
1、恢复3.2版本中计算订单按价格的功能:
这个需求也是我提的,在3.2版本中加了进去,但后续不知道为什么移除了,希望可以恢复:
https://www.eabang.com/bbs/forum ... e=1&extra=#pid40599

2、加仓间隔&手数增加按仓位分档:
这个其实是我自己版本里的需求(第二点):https://www.eabang.com/bbs/forum ... =1667&extra=&page=1
这个功能好处是在于这样可以依据不同的仓位,采取不同的加仓间距&手数。
下载.png
如果不想分档的用户,可以直接在第一行手数那里输入0.01~999即可。
我希望在加仓手数的末单累加、末单倍数;加仓间距的平均波动和固定点数都把这个功能合进公版(如果开发难度不大,在首单倍数这些方式中也加进去就更好了)

3、增加一个计算加仓手数的方式:
现在的末单累加前期固然相对平缓,但如果突然手动(或由于反向锁单)加了一笔手数较重的单,那么后续整个加仓都会因为这一笔加仓导致手数剧增。如果加入一个平均手数累加的方式,则可以让加仓的手数增加曲线更为平滑。
计算方式: 下一笔加仓的手数=当前该方向总仓位/该方向总单量 + X(输入框输入的累加单量)//手数保留两位小数,向上取整:计算结果为0.245,则下一笔加仓为0.25.
也可以增加一个计算双向订单的按钮提供用户选择。
例子:当前多单总手数3,总单量6,最大一笔手数为1,X为0.1。
那么用末单累加,下一笔加仓手数为1+0.1=1.1,用平均手数累加则为3/6+0.1=0.6
若双向订单总手数为4,总单量为10,在用户勾选了计算双向订单的情况下,则下一笔加仓为4/10+0.1=0.5。
下表对比了两种方式下总仓位的对比:
微信截图_20220905145229.png

4、反向锁仓计算方式的优化:
这是近期论坛热点话题之一。我给出的实现方案是:
在按比例锁仓之外,增加两个输入框:锁仓时净敞口需大于X;额外锁仓手数:Y
则在当前某方向净敞口大于X时(假设为K),开反向单K-X+Y。
举例:X设为0.5,Y为0.03,当前多单净敞口(多减空)为0.53,则开空单0.06(0.53-0.5+0.03),使净敞口回落至0.47.

5、反向对冲增加仅计算盈利单按钮。
当前的反向对冲,是需要把一个方向的全部订单的总盈利一起去对冲另一方向的手数或者订单。
例如当前三个多单盈亏分别为+20 +15 -10,则目前功能是用总盈利25去对冲空单的亏损单。
如果勾选了近计算盈利单按钮,则是用总盈利35去对冲,保留+10的多单亏损单。

6、增加反向末单对冲方式。
目前的末单对冲,只能对冲同方向,希望可以增加一个反向的末单对冲,例如空单末单盈利了800点,则用于对冲多单的亏损单。其余按钮和输入框和当前末单对冲一致即可。
注意这里的仓位需大于0指的是被对冲的方向的仓位:也就是上面例子中多单的仓位,而末单盈利点数指的则是空单的盈利点数。

功能5和6是作为4的一个配套功能。
如果唐老师有不明白或者觉得需求不够明确的地方,可以和我QQ沟通。
如需加急我也愿意付费(希望考虑我的历史消费记录给予尽可能多的折扣!)
祝大家都交易顺利。



作者: 唐老师    时间: 2022-9-5 18:19
微信图片_20220905171845.png
这个按位置加仓今天能搞定。

作者: 唐老师    时间: 2022-9-5 23:00
第二条太麻烦了,是不是可以不做,因为我觉得用的人确实不多。

作者: mchal    时间: 2022-9-6 10:01
唐老师 发表于 2022-9-5 23:00
第二条太麻烦了,是不是可以不做,因为我觉得用的人确实不多。

昨晚QQ上已沟通,第二条仅先开发加仓间隔中固定点数和平均波动这两种方式即可。加仓手数中的末单倍数&末单累加暂不开发。

作者: mchal    时间: 2022-9-6 11:38
微信截图_20220906133043.png
分享一个我们团队内部的风控操作手册。
这肯定不会是一个没用的功能。有了这个净仓位管理,我们风控的工作量可以大大的减轻。
再次恳求唐老师加急开发~谢谢。


作者: kkwang2005    时间: 2022-9-7 07:50
第五条非常好。现在的反向对冲方式更加加剧了对冲后的多空不平衡问题。


第4条是我提的需求吗? 这个不能是锁仓吧,如果是锁仓,那锁上的部分不能对冲啊?能不能不上锁?

作者: mchal    时间: 2022-9-7 10:25
kkwang2005 发表于 2022-9-7 07:50
第五条非常好。现在的反向对冲方式更加加剧了对冲后的多空不平衡问题。



他这个锁只是个动词,你简单理解为达到触发条件后开反向单就可以了。开了反向单之后,对于ea来说这一单反向单和其余该方向的单性质是一样的,在是否对冲的时候并不会因为开仓原因是条件开仓,顺势加仓,逆势加仓,锁仓,补单而区别对待。也就是说,这个“锁单”并不会锁着。
作者: 家住南城    时间: 2022-9-7 22:58
本帖最后由 家住南城 于 2022-9-7 23:00 编辑

我最近再看大家对反向对冲功能研究的很火热。
反向对冲是个好功能,但是要解决一个很重要的问题,就是反向开仓的那笔大单最后如何处理,有几个论坛的朋友看到了这一点。
解决这个问题,只要参数设置的不太差,反向对冲可以说是无往不利。
这个净仓位的功能应该加上,因为现在按百分比锁仓不科学。
可以在订单数量大于一定值时不再反向对冲。
也可以用末单盈利反向对冲,这些都是很好的方案。
作者: wjwj999    时间: 2022-9-7 23:25
家住南城 发表于 2022-9-7 22:58
我最近再看大家对反向对冲功能研究的很火热。
反向对冲是个好功能,但是要解决一个很重要的问题,就是反向 ...

论坛两位重量级的大佬mchal和家住南城都出来了,看来这个“净仓位控制”功能真的有研究的价值,期待唐老师能设计出完美的方案来,加油

作者: mchal    时间: 2022-9-8 08:30
家住南城 发表于 2022-9-7 22:58
我最近再看大家对反向对冲功能研究的很火热。
反向对冲是个好功能,但是要解决一个很重要的问题,就是反向 ...

谢谢家住南城老师的鼓励和肯定!每次看您的帖子都获益良多。

希望版本开发出来老师能再给大家提供一下模型参数的思路。

作者: mailqq    时间: 2022-9-8 11:21
又看到大佬们的精彩分享了,EA邦有这些大佬,受益不浅!

作者: 唐老师    时间: 2022-9-13 19:38
锁仓的净敞口这个还要再考虑,因为这个功能,感觉还是没有解决根本问题。
反向对冲只用盈利单对冲,这个目前正在做。
反向的末单对冲这个,也会安排上。

作者: mchal    时间: 2022-9-13 20:41
唐老师 发表于 2022-9-13 19:38
锁仓的净敞口这个还要再考虑,因为这个功能,感觉还是没有解决根本问题。
反向对冲只用盈利单对冲,这个目 ...

净敞口这个只需要考虑两点:
1、大单边的时候锁仓有无必要性?
2、基于净敞口而锁仓是否会比百分比更合理?
单纯一个净敞口功能肯定无法解决根本问题,但若配套其他对冲方式的优化应该可以有较好的效果。
(当然话说回来,也许根本问题注定无法解决,只能减轻和缓解)

作者: kkwang2005    时间: 2022-9-13 20:53
唐老师 发表于 2022-9-13 19:38
锁仓的净敞口这个还要再考虑,因为这个功能,感觉还是没有解决根本问题。
反向对冲只用盈利单对冲,这个目 ...

锁仓的净敞口这个从逻辑上来说可能是无法完美解决问题的,真可以了,那就变圣杯了。

我觉得加一个全自动的方向控制是一个比较好的退而求其次的方法了。
之前我和唐老师说了根据均线排列来判断哪边补单,哪边不补。还有一个更直接的思路就是根据哪个方向的单有更大的亏损来决定补哪边。


总体方案如下:
第一,和现在的锁仓控制一样,要加一个单边(或者双边)亏损多大后开始启动的开关。在多空方向亏损不太大的时候,这样的补单锁仓没有意义。
第二,是方向控制,如果是单边下跌,那基本是多单亏损的多,只补亏损多的方向的反向单。多单亏损多这时候就是只补空单,不补多单。
第三,补单操作启动后,自动关闭亏损方向的一切开仓加仓操作。这样可以保证亏损方向的单不会一直膨胀下去。这样的操作也避免补单方向的最后一单留下一个巨大的末单的情况。
第四,一旦单边(或者双边)亏损小于一个临界值后(这个值可以是第一点规定的值,也可以是另外的值),补单操作停用。第三点关闭的开仓加仓方向恢复加仓开仓。


加上这三个控制,可以有效避免天地锁,避免旋螺膨胀,避免末单大单,虽然可能不能完全解决问题。
请唐老师点评一下这个思路会是否有效。



作者: wjwj999    时间: 2022-9-13 22:02
本帖最后由 wjwj999 于 2022-9-13 22:20 编辑
唐老师 发表于 2022-9-13 19:38
锁仓的净敞口这个还要再考虑,因为这个功能,感觉还是没有解决根本问题。
反向对冲只用盈利单对冲,这个目 ...

唐老师多虑了,这个净仓位控制的功能不是一招就能解决所有问题的,只是一个系统中的一个辅助罢了,就像持仓只有顺势单的大单边时顺势加仓到最后既有大量盈利又有很大的净仓位时,这时也不能让净仓位控制功能生效了,所以要根据每个人的策略来使用这个功能罢了,但是这个功能绝对是个好功能,只不过需要合理搭配才行。
作者: 唐老师    时间: 2022-9-18 21:29
kkwang2005 发表于 2022-9-13 20:53
锁仓的净敞口这个从逻辑上来说可能是无法完美解决问题的,真可以了,那就变圣杯了。

我觉得加一个全自动 ...

再看看吧,感觉越来越不是那么回事了。


作者: 唐老师    时间: 2022-9-18 21:33
wjwj999 发表于 2022-9-13 22:02
唐老师多虑了,这个净仓位控制的功能不是一招就能解决所有问题的,只是一个系统中的一个辅助罢了,就像持 ...

像只用盈利单反向对冲、末单反向对冲,亏损单不能总体出掉的问题。

作者: 唐老师    时间: 2022-9-18 21:44
kkwang2005 发表于 2022-9-13 20:53
锁仓的净敞口这个从逻辑上来说可能是无法完美解决问题的,真可以了,那就变圣杯了。

我觉得加一个全自动 ...

1、现在本身就是单边亏损大于锁仓。

2、价格下跌的时候有没有均线条件都不会锁多单。
3、现在锁仓后可以关闭加仓,但是这样就要手动处理,这也是很多人比较常用的。
4、锁仓后亏损不太可能小于一个值,如果小于一个值,就不会再触发亏损大于锁仓的条件了。

我觉得可能对这些现有功能还不太理解,或者经常提出一些即要又要的想法,即要又要的功能在程序上是无法实现的。

作者: 唐老师    时间: 2022-9-19 19:59
仅用盈利单对冲 的功能已经开发出来了,测试结果跟你的想法不一样啊。

这还是逻辑上的问题。
完全不是那么回事,白花了几天的时间。
当然,也不是怪谁,新功能大家都在尝试。
这个仅用盈利单对冲的功能,和那个净仓位的功能,其实都不能解决反向对冲不断增加锁单的单量的问题。
经测试,如果开启了仅用盈利单功能,亏损较多的那些订单,更难一次性出掉,反而更加危险。

作者: wjwj999    时间: 2022-9-19 22:27
本帖最后由 wjwj999 于 2022-9-20 01:28 编辑
唐老师 发表于 2022-9-19 19:59
仅用盈利单对冲 的功能已经开发出来了,测试结果跟你的想法不一样啊。

这还是逻辑上的问题。

估计提出建议的mchal老师应该是有自己特殊的用法没有公开罢了,可以单独和唐老师沟通一下,但是那个净仓位控制的功能(也就是mchal老师说的敞口设置)感觉还是可以通用的,和现有的浮亏起动百分比锁仓功能相比较,假如设置50%亏损锁仓的话,逆势仓位1手启动50%反向锁仓后净仓位就是0.5手,如果逆势加仓到总仓位10手时,那么同样设置50%锁仓就是反向5手,净仓位就变成了5手,净仓位从0.5手变成了5手这就差了10倍,浮亏可就是天壤之别了。而只用净仓位控制的话,假如设置净仓位0.5手时启动控制功能,那么在净仓位达到1手时,反向开0.5手,保持净仓位是0.5手,如果净仓位达到10手时,反向就要开9.5手,仍然保持净仓位是0.5手,只有这样才能把浮亏牢牢控制住,通过净仓位控制功能控制住浮亏的净仓位不会产生剧烈浮亏的同时,利用反向对冲,双向单子同时削减,逐渐就能把总仓位降下来,不用管涨跌,两方向的盈利单都可以把反向的单子逐渐对冲干净,我手动模拟操作了几次,相同的核心策略不变只是单独用某些个对冲方法在原本会爆仓的许多个节点结果都是爆仓, 111.png 333.png ,但是加上了手动控制使净仓位一直在很小范围内的话最后在很小浮亏的情况下安全渡过 22222.png ,所以这个净仓位控制的功能是一个控制亏损的实用好功能。
作者: kkwang2005    时间: 2022-9-20 08:37
唐老师 发表于 2022-9-19 19:59
仅用盈利单对冲 的功能已经开发出来了,测试结果跟你的想法不一样啊。

这还是逻辑上的问题。

如果开启了仅用盈利单功能,亏损较多的那些订单,更难一次性出掉


这是为啥呢?

作者: 唐老师    时间: 2022-9-20 10:01
wjwj999 发表于 2022-9-19 22:27
估计提出建议的mchal老师应该是有自己特殊的用法没有公开罢了,可以单独和唐老师沟通一下,但是那个净仓位 ...

但是仍然有9.5手,那跟锁仓10手其实并没有多大区别。

作者: 唐老师    时间: 2022-9-20 10:06
kkwang2005 发表于 2022-9-20 08:37
如果开启了仅用盈利单功能,亏损较多的那些订单,更难一次性出掉

还不仅仅是更难出掉的问题,前期单子少的时候,这功能还有个不是bug的bug,盈利单会立刻平掉反向单,而亏损单还在不断增加。

作者: chaore987    时间: 2022-9-20 10:49
唐老师 发表于 2022-9-20 10:01
但是仍然有9.5手,那跟锁仓10手其实并没有多大区别。

也不一定吧
作者: wjwj999    时间: 2022-9-20 11:01
唐老师 发表于 2022-9-20 10:01
但是仍然有9.5手,那跟锁仓10手其实并没有多大区别。

唐老师,可以想象一下当时的局面是这样的,我举的例子中说的9.5手是反方向的,但同时正方向有10手仓位,这时净仓位是0.5手,这时在不发生下一笔加仓前不管方向怎么走浮亏都只限定在0.5手,赚也是0.5,亏也是0.5,风险就被锁住,然后利用反向对冲功能,不管往哪个方向走都会把另一个方向的单子削减,假如是顺势的9.5对冲逆势的10手时,顺势单9.5全平,带走10手中的一部分(根据自己设置,可以对冲最远的一笔,或者最远的0.01手,也可以按每笔的百分比),也可能是逆势的10手反弹后全部平掉又把原补的顺势仓平掉一部分,即使10手对冲9.5后,原9.5的方向又变成逆势也不怕,总手数减少后,原10手方向补上拉回净仓位的单子也是减少的,总之就是双向削减仓位。即使逆势又发生加仓,那么净仓位控制也会加大反向补向,继续把净仓位控制在0.5手以内,虽然表面上看和百分比锁仓没有多大的区别,但和百分比锁仓的最大不同的是后面的操作,百分比锁仓每次生效都只是按逆势仓位的百分比来补仓,而净仓位可能就变得非常大,而净仓位控制功能生效时控制的是最直接的净仓位。这样就会产生一个现象,就是浮亏始终由0.5手决定,给对冲的发挥提供了更多的时间和空间,至于各方向的单子由哪种对冲方式来处理就看每个人的喜好,但是反向对冲一定要有,这个是决定双向总仓位减少的关键,类似于解套EA的原理,对冲的都是远处的单子,而且手数越重对冲的越快,反倒更容易解套。
作者: wjwj999    时间: 2022-9-20 11:08
本帖最后由 wjwj999 于 2022-9-20 11:54 编辑

而且,像之前那个kkwang2005一个贴子提到的一个思路提到的,可以根据均线来决定是否继续逆势单的加仓,这些都可以灵活设置,总之,就是用净仓位控制功能把净仓位控制住是一切操作的根本。

作者: wjwj999    时间: 2022-9-20 11:53
唐老师 发表于 2022-9-20 10:01
但是仍然有9.5手,那跟锁仓10手其实并没有多大区别。

唐老师,我明白你的意思了,这也就是净仓位控制功能和百分比锁仓的另一个区别,就是假如只用100%锁仓来避免浮亏加大的话(这点比净仓位控制功能的有净仓位更彻底),但是这样的话不论行情怎么走双向单都是锁住的,如果不关闭加仓功能的话任何一方加仓,另一方也继续补仓,如果关闭加仓功能的话账户就变成了浮亏固定不变的死账户,除非手动止损才能继续开单。如果用净仓位控制功能的话,只要把净仓位控制在一个值以内就可以,而不是完全的双向同等仓位锁死的话净仓位就不为0,只要方向变化就有盈亏的变化,这时还需要kkwang2005提的那个能让净仓位加大的方向的单子不加仓这个功能(也就是净仓位控制功能生效时就自动停止逆势加仓功能而不是通过关闭加仓按钮),而目前的反向对冲功能的关闭加仓功能生效后只能手动解除,这样EA就变成手动了,性质是不一样的。

作者: mchal    时间: 2022-9-20 12:53
唐老师 发表于 2022-9-20 10:06
还不仅仅是更难出掉的问题,前期单子少的时候,这功能还有个不是bug的bug,盈利单会立刻平掉反向单,而亏 ...

1、净仓位其实就是对锁仓方式的一个优化。所以比例锁仓存在的问题,它也一定程度会存在的,无非是哪个相对更可控。

2、至于开启之后盈利单立马把反向单冲掉,这个可能是因为设置手数为0.01(或者类似的小手数的缘故)。改为反向末单盈利对冲或者反向对冲订单都可以一定程度的解决这个问题。
3、当前锁仓需要注意的是后续的加仓不要被锁住的这个大手数打乱节奏(我认为自定义手数加仓可以一定程度的解决这个问题。)
4、可以在反向对冲或者反向末单对冲里添加一个选项:仅冲总手数大的那一方。
例如当前多单总10手,空单总手数8手。
则只有多单的盈利单会对冲空单的亏损单,而空单的盈利单不会对冲多单的亏损单。
5、各位大佬提出的反向对冲时考虑额外的指标&自动对加仓按钮进行关闭&开启的循环操作 理论上可行,编程实现上我认为有较大难度(可能非常容易引发其他的bug)。

作者: 唐老师    时间: 2022-9-21 11:57
wjwj999 发表于 2022-9-20 11:53
唐老师,我明白你的意思了,这也就是净仓位控制功能和百分比锁仓的另一个区别,就是假如只用100%锁仓来避 ...

是的,这是最应该解决的问题,我觉得家住南城发的那个需求帖子也不错。

作者: 唐老师    时间: 2022-9-21 11:59
mchal 发表于 2022-9-20 12:53
1、净仓位其实就是对锁仓方式的一个优化。所以比例锁仓存在的问题,它也一定程度会存在的,无非是哪个相 ...

是的,这个版本拖的时间太长了,已经增加了非常多的功能,反向对冲这一块,先增加净仓位功能吧,还有就是有一方锁仓单,不锁仓另一方订单。

作者: wjwj999    时间: 2022-9-21 15:47
唐老师 发表于 2022-9-21 11:59
是的,这个版本拖的时间太长了,已经增加了非常多的功能,反向对冲这一块,先增加净仓位功能吧,还有就是 ...

太好了,这个功能开发出来又可以有新的玩法了

作者: 唐老师    时间: 2022-9-24 16:07
你说的几个功能基本都已经实现,请下载hedging对冲EA v3.8.8.8版本。

https://www.eabang.com/bbs/forum.php?mod=viewthread&tid=2627

作者: gh16888    时间: 2022-10-20 10:13
平投网格效果咋样





欢迎光临 EA邦程序化交易论坛 (https://www.eabang.com/bbs/) Powered by Discuz! X3.5