[原创]网格法笔记----市场就是那么恰到好处的不可逾越
本帖最后由 泰友虔 于 2016-9-16 12:19 编辑
网格法,能用真实交易制造虚假繁荣的最佳工具,代客理财界的揽客神器。
我也曾痴迷于网格法,妄图找到一劳永逸的圣杯。
先列出几条关于网格法的个人结论:
(1)网格法的宏观定义:仅以纯资金管理技巧为交易的全部依据,而对行情不需要任何分析,对所有行情都一视同仁,只通过埋伏不同价格不同仓位的单子来实现如此一个模型:局部盈利---->局部解套(或局部小止损)---->整体盈利。
(2)网格法的形式多种多样,但万变不出两个因素的互相搭配:间距、仓位。二者均灵活可调,甚至实现无级可调,但终归换汤不换药。
(3)网格法不能实现持续有效盈利。一切网格法的设计方向有两大类:A.想通过高盈亏比盈利;B.想通过全胜率盈利。任何网格法原理上都有一个价格的“死点”存在,且无法避免一定会碰上,时间长短而已。当A碰上“死点”,会出现致命性亏损;当B碰上“死点”,为了保持全胜率,会不停拉新网格,直到可用保证金全部用完,无法开新仓而永久耗下去,无限期被套,或因累计仓位太重,在浮亏过程中爆仓。
(4)网格法不能实现持续有效盈利的原因:市场如赌场,由于游戏规则的限制,赌客的天然获胜优势必然是不利的,打败赌场的唯一方式就是采取局部优势战略。以21点游戏举例,虽然整体优势对赌客不利,但优势是非平均分布的,当出现对赌客非常高的优势时下大注,其余对赌客不利的时候不下注,这样即便整体优势依然不利,但赌客有主动权趋利避害,可以实现盈利。交易市场亦如是,所谓的技术分析,本质上就是在找市场的局部大优势机会。而网格法仅着重资金管理技巧,所有行情无差别对待,相当于接受了市场的天然平均获胜优势,而规则决定了这个优势一定是不利于交易者的,所以一切网格法必然最终完蛋。网格法的设计者经常会有一种感觉:真的只差一丁点就能打败市场了,也就一笔手续费的事。但就这么一丁点,使尽一切解数终究无法逾越。这就是市场。
但网格法并不是一无是处的,它虽不能独立存在,但可以成为有用的辅助分析工具。
所以网格法的存在意义在于:量化市场震荡和趋势的细节,帮助交易者认知市场当前所处的状态,更好的使其策略趋利避害。
下面提供两种网格法的设计思路和细节,由于时间有限,我并没有进行整理,只是些当年零散的笔记,并不是要系统的讲清楚,仅仅是拿出来给有兴趣的朋友当个参考资料。由于我已经不搞这些东西了,所以也不再回答这方面的问题。
希望能帮大家更客观的认知网格法。是毒是药,在人善用。
---------------------------------------------
在任意价位开一对对冲交易,当行情运行到某处时,平仓其中盈利的交易,同时针对被套单利用网格法进行解套,解套成功后,此对冲交易可获得当初盈利那单的净盈利。
如图,在某币种的任意位置开对冲单,为方便计算,开仓价格坐标设为0,以黑线表示。
S表示对冲交易中的做空单。
当行情往上走,做多单盈利,做空单被套。(本文只描述做空单被套时的解套方法,做多单的解套方法按相反方向操作即可。)
下面通过网格法,使S单涉及的资金在最上端绿线处或最下端蓝线处解套。
当行情第一次走到红线处(红线到初始0黑线的距离为a),将对冲交易中的做多单平仓,盈利为a。同时在此价位开一笔做多的交易(B即表示做多交易),用红线上左侧第一个蓝点表示,注意做多交易B要比初始做空交易S仓位大r(r>1)倍,这样才能确保S单涉及的资金可在红线之上某处解套,设S单涉及的资金解套位置为绿线,与红线的距离为x。
(之所以叫“S单涉及的资金”解套,而不是S单解套,是因为在绿线处S单本身并没有解套,但由于B单在绿线处是盈利的,且仓位比S单重,盈利扯平了S单的亏损。)
当行情触发B单后,有可能无法直接到达绿线,而是转向下走,那么到达紫线时(紫线与红线距离为e),将B单平仓止损,用紫线上左侧第一个黄点表示,则B单相对S单亏损点数为r*e。此时只剩一个初始的S单,若行情一路向下,则S单涉及的资金可在蓝线处解套,初始0黑线到蓝线的距离为y。
假如当止损了一次B单后,行情并没有到达蓝线位置,而是转向上,再次到达红线,那么在此处再开一次B单,处理方法与上文相同。
总之是使S单涉及的资金在绿线处或蓝线处解套。
设S单涉及的资金解套前B单在紫线处平仓的次数(即黄点的个数)为f。
经计算,解套位置x、y分别为:
其中,a>e>0,r>1,f是正整数。
我们的要求是x、y要尽可能的小,也就是尽早的解套。
下面讨论要使x、y尽可能小时,a、f、r、e的条件。
对于y:
先来讨论y的极限情况----y最小就是0----理论上即f、r、e其中一个、两个为0或三者都为0。
若f为0,也就是行情没有回撤到紫线,直接到达了绿线,这是最理想的结果。
若r为0,不行,因为r必须大于1,才能保证B单的仓位比S单重,才有能力在红线以上解套,否则只能单方向等行情向下解套,即行情如果一直向上很久,只能死等。
若e为0,也就是没有B单的存在,也相当于只能死等初始S单做空方向解套。
所以,要使y尽可能小,就要让r在大于1的前提下尽可能小,同时让f*e尽可能小(貌似是句废话,但结合后文看,这句话意义很大)。
对于x:
a要尽可能小,但不能无限制的小,起码要大于e,可以取为e+1个点。(什么?a取e+1,还不够捣乱的?这么做是为了尽快解套,好开始下一笔交易。每次少赚,但常赚、快赚,才是更有效更安全的盈利方式。否则a取值大了,解套位置就远,行情震荡牵扯进B单的次数的概率就大,相当于单纯增大f的值,那解套起来更麻烦。)
r要尽可能大(与y的需求相矛盾)。
f*e要尽可能小。
现在的问题就更有针对性了,其实就是r和f*e的问题。
x情况的r和y情况的r需求相矛盾,那就要找出一个折衷的值,使双方向的解套距离都不至于出现太极端的情况。
对于f*e,要使乘积最小,最好让f、e都尽可能的小,不幸的是,这无法同时满足,因为f和e之间本身是一对此消彼长的关系。
如图,当e取为粉色区域时,f值取2(触发位置用白色圆点和方块标出),当e取为黄色区域时,f值取3(触发位置用白色圆点和方块标出)。
e越小,触发点越多,即f越大;反之,e越大,f越小。
要使f*e尽可能小,就要e值取的合适。
f值是由e的大小和行情走势决定的,而a值已经取为e+1,那么实际上要使x、y尽量小的问题可以归结为只要r值和e值取的合适就可以。
到底r和e取为多少才是最理想选择?用EA回测优化去吧。
需要注意的是,也许未必盈利率最多的r、e组合就是最佳方案。尽管此交易模型从数学原理上成功率是100%,但在实际操作中要考虑资金和时间成本问题。
由于B单每在紫线平仓一次会产生一部分亏损,因而要避免资金解套之前就被许多次B单消耗完的情况。若某种r、e组合可令理论上利润最大化,却会令某一次交易里发生连续B单止损过多的情况,那这种r、e组合不可取。
还应避免某单持仓时间太长的情况。若某种r、e组合可令理论上利润最大化,却令某一次交易历时以周计甚至以月计才解套,持仓时间与其它交易极不平均,那这种r、e组合也不可取。因为持仓时间长会增加f值增大的风险,令解套更加困难,而且大大降低了资金周转率。
现实可行的r、e最佳组合应该是令持仓时间不太长且比较平均、B单止损的次数远远不足以威胁总资金,且盈利率尽可能大。
为保证验证全面,建议e从1开始取,即一个点,取到20即可,r、e最佳组合的e值应该在此范围内。但假如在20附近出现了现实可行的r、e最佳组合,则继续测试20以后的e值。而r建议从1.5开始取,每隔0.5取一次,同样取到20即可,假如在20附近出现了现实可行的r、e最佳组合,则继续测试20以后的r值。
(料想r、e值都超不过20,否则解套位置太远,难免会出现资金和时间成本问题。)
以上说的是一个币种,不同的币种波动的形态、幅度不一样,因此会有适合自己的r、e值。
r、e值应该随时都在变化,不过在某一较短时间段内应变化幅度不大,实际操作时可定期重新找新的r、e值。
当然,这种网格法也可用于单纯的解套。不过其中的a值就不能取为e+1了,而是被套了多少点,a值就是多少。上文论证过,a越小越好,因此日常交易解套起来就会比单独使用网格法困难,而且每次被套点数不一样,r、e值最佳组合就要重新计算。
---------------------------------------------
浮动点差平台下的网格法----仅用对冲单中空单先平仓的情况举例(多单先平仓情况反之理解即可)
小数点后第五位定义为1个点,汇率整数部分忽略不写,例如1.32928本文只写作32928。
总原则:——>(1)代表重新开始下一轮;——>初始状态代表重新代入循环。
(1)计算开仓手数,在同一价格按当时市价同时开做多做空单(实时成交,不挂单),由于多空两单指令同时进行,所以即便当时行情波动剧烈产生滑点,也是二者同时滑,故而开仓位置应能保证多空开在同一价格。所谓的同一价格也是相对而言的,因为有点差的存在,至于二单到底具体相差多少点,不得而知,因为点差是浮动的而非固定的。开好了之后,根据实际开仓价位,马上计算一个间距位置a(a为正数,在本文中a设为200点),在a和-a处各挂二倍仓位多空单(stop类型),且各挂初始做多做空单的限价止盈。
例:
在(32928,32906)处开了原始做多做空单,做多的价格是以32928成交的,做空的价格是以32906成交的,二单距离22点。22点的点差并不是我设的,而是实时开单的当时点差正好是22点。由于点差是浮动的,因此这个点差到底是多少是不固定的,总之只要能保证多空单同时开就行了,这个点差当时是多少则无所谓,此处仅以(32928,32906)假设举例。
假设间距a为200点,由于间距a定义为初始单盈利的点数,那么在a和-a处则有:
a处:做多单盈利200点,平仓位置应该为32928+200=33128,此价格是bid价(对于多单,按bid价平仓)。
-a处:做空单盈利200点,平仓位置应该为32906-200=32706,此价格是ask价(对于空单,按ask价平仓)。
因此在33128处挂做多单的限价止盈,在32706处挂做空单的限价止盈。
挂限价止盈单的同时还得挂a和-a处的二倍单。拿-a处来举例:
-a处的二倍单是做空的,所以得根据bid价开。原始空单在32706(ask价)处的限价止盈位置是确定的,由于点差是浮动的,我们并不知道当ask价是32706时bid价是多少,因此强行规定二倍空单开在比原始空单止盈位置低20点的地方,即在32686(bid价)处挂二倍空单。
综上,在同一价格按当时市价同时开做多做空单(实时成交,不挂单,二者先后顺序无所谓),此位置恰好为(32928,32906),然后同时挂四个单:在33128处挂原始多单的限价止盈;在32706处挂原始空单的限价止盈;在33148处挂二倍多单;在32686处挂二倍空单(这四个挂单的顺序无所谓)。
(2)挂的这四个单子,当有一个触发的时候,看这个单子是0轴(原始对冲单的位置定义为0轴)以上的还是0轴以下的,参见(3),最后要把0轴另一侧的二倍单撤了。以此单是0轴以下的(空方先触发)为例:
(3)原始空单的限价止盈单触发时,二倍空单也触发了,即二者恰巧是同时触发的。并在0轴处挂原始做多单的限价保本(相当于把原始多单在0轴另一侧的止盈挂单修改到0轴处),即bid价为32928,并强行规定二倍空单的止损位置挂在比bid价高20点的地方,即32948(ask价);并在-2a处挂二倍空单的限价止盈200点,即ask价为32486,并强行规定原始做多单的止损位置挂在比ask价低20点的地方,即32466(bid价)。
综上,当价格同时触发原始空单的限价止盈和二倍空单时,做五件事:把原始多单在0轴另一侧的止盈挂单修改到0轴处,在0轴处挂二倍空单的止损,在-2a处挂二倍空单的限价止盈,在-2a处挂原始多单的止损(这四件事的顺序无所谓),然后撤a处二倍多单,此时为初始状态A。
定义初始状态为(空方先触发):已经平仓了原始单中的做空盈利单,且刚开二倍空单,并在0轴设此二倍空单的止损和初始多单的限价保本,在-2a位置设此二倍空单的止盈和初始多单的止损。简要言之,一个平了,一个刚开,加四个挂单。
初始状态的性质是如此,但由于间距a的不同,因此会有不同的初始状态,依次定义为A、B、C、D……从B开始每一个状态里的a都是前一个状态的(a+100)。
(4)原始空单的限价止盈单和二倍空单没有同时触发。
(5)触发了二倍空单而没有触发原始空单的限价止盈,此时按市价实时平仓原始空单,并在0轴处挂原始做多单的限价保本,即bid价为32928,并强行规定二倍空单的止损位置挂在比bid价高20点的地方,即32948(ask价);并在-2a处挂二倍空单的限价止盈200点,即ask价为32486,并强行规定原始做多单的止损位置挂在比ask价低20点的地方,即32466(bid价)。
综上,当价格只触发二倍空单时,做七件事:第一件必须是按市价实时平仓原始空单(其限价止盈挂单自动消失),然后四件分别是(这四件事的顺序无所谓)在0轴处挂原始多单的限价保本,在0轴处挂二倍空单的止损,在-2a处挂二倍空单的限价止盈,在-2a处挂原始多单的止损,最后撤a处两个单子(这两个单子互相顺序无所谓,只要保证最后处理它俩)。此时为初始状态A。
(6)原始空单的限价止盈单触发了但二倍空单没触发,先在0轴处挂原始做多单的限价保本(即bid价为32928),然后再撤a处二倍多单。
(7)原始空单的限价止盈单触发了后,又触发了二倍空单。由于0轴处的原始多单的限价保本(bid价)已经挂上了,所以把二倍空单在0轴的止损挂在比bid价高20点的地方,即32948(ask价);并在-2a处挂二倍空单的限价止盈200点,即ask价为32486,并强行规定原始做多单的止损位置挂在比ask价低20点的地方,即32466(bid价)。此时为初始状态A。
综上,价格先触发原始空单的限价止盈,再触发二倍空单,则在二倍空单触发时把状态A的其他三个单子挂上(互相顺序无所谓)。
(8)原始空单的限价止盈单触发了后,没有触发二倍空单,价格往回走到0轴处的bid价为32928处,即原始做多单挂的限价保本位置,则解套平仓,撤掉二倍空单,此轮结束,重新开始(1)。
(9)开了二倍空单后,此单没有盈利到10个点(即ask价没有到过32676)而价格就往上恰巧同时触发了原始多单的限价保本和二倍空单止损(即当时的浮动点差正好是两个挂单的距离,碰巧二者在某一价格同时触发),此时所有单都平仓了,剩下的两个-2a处挂单也都自动消失。此轮结束,重新计算开仓手数,重新开始(1)。
(10)开了二倍空单后,此单没有盈利到10个点(即ask价没有到过32676)而价格就往上走触发了二倍空单的止损(此时-2a处二倍空单止盈挂单自动消失),但并没有触发原始多单的限价保本,则此时按市价实时平仓原始多单(此时原始多单的上下两个挂单自动消失)。此轮结束,重新计算开仓手数,重新开始(1)。
(11)开了二倍空单后,此单没有盈利到10个点(即ask价没有到过32676)而价格就往上走触发了原始多单的限价保本(此时-2a处原始多单的止损挂单自动消失),但并没有触发二倍空单的止损,则此时按市价实时平仓二倍空单(此时二倍空单上下两个挂单自动消失)。此轮结束,重新计算开仓手数,重新开始(1)。
(12)开了二倍空单后,此单只要有过盈利10点(即ask价到达32676)的那一刻,就把它在0轴的止损位置改成位于-a处的限价保本处(即ask价为32686)。
(13)把二倍空单的止损位置改成-a处后,价格一直没有回到-a处就往下走,恰巧同时触发了此二倍空单的止盈和原始多单的止损(即当时的浮动点差正好是两个挂单的距离,碰巧二者在某一价格同时触发),此时所有单都平仓了,剩下的两个挂单也都自动消失。此轮结束,重新计算开仓手数,重新开始(1)。
(14)把二倍空单的止损位置改成-a处后,价格一直没有回到-a处就往下走,触发了原始多单的止损(此时原始多单在0轴挂单自动消失),但并没有触发二倍空单的止盈,则此时按市价实时平仓二倍空单(此时二倍空单的上下两个挂单自动消失)。此轮结束,重新计算开仓手数,重新开始(1)。
(15)把二倍空单的止损位置改成-a处后,价格一直没有回到-a处就往下走,触发了二倍空单的止盈(此时二倍空单在-a处的挂单自动消失),但并没有触发原始多单的止损,则此时按市价实时平仓原始多单(此时原始多单的上下两个挂单自动消失)。此轮结束,重新计算开仓手数,重新开始(1)。
(16)把二倍空单的止损位置改成-a处后,价格一直没有到达-2a处之前就回到了-a处,触发了二倍空单的保本止损(此时-2a位置的二倍空单的止盈挂单自动消失),然后在(-a-100)处(即bid价32586)挂新二倍空单。
(17)bid价在没有到达(-a+100)处前就到达(-a-100)处(即bid价没有到达32786前就到达32586),触发了此处新二倍空单,形成距0轴间距为300点的下一个初始状态即初始状态B(每一个状态的下一个状态就后推100点),由于一个新状态的开始,此时设新二倍空单的止盈止损,同时原始多单的止损位置相应修改(原始多单的限价保本没变,无需改动),另外三个挂单(顺序无所谓)的位置参考(3),这里我也写出来,其他的状态就以此规则自己算吧:二倍空单的止损位置依然挂在比原始多单限价保本bid价高20点的地方,即32948(ask价),因为原始多单的限价保本位置始终不变,所以不论是任何一个状态的二倍空单的止损挂单位置都是固定在32948(ask价)的;在-2a(此a是状态B的a,即300点,以此类推,状态C是400点,状态D是500点…)处挂二倍空单的限价止盈300(注意是300,不再是200了,因为此时已经是状态B)点,即ask价为32286;然后强行规定原始做多单的止损位置挂在比ask价低20点的地方,即32266(bid价)。
(18)bid价在没有到达(-a-100)处前就到达(-a+100)处(即bid价没有到达32586前就到达32786),则把(-a-100)处的二倍空单挂单撤销,然后在-a处(bid价32686)挂二倍空单,然后把原始多单的止损单撤销(原始多单的限价保本单留着别撤)。(此时的状况是一个很典型的状况,就是挂着两个单,一个是原始多单在0轴的限价保本,另一个就是在某个状态的-a处挂着个二倍空单,下文就是对当时状态是属于状态A和不是状态A的其它状态的讨论。)
(19)在-a处挂二倍空单后,价格在没有到达0轴前就到达-a处(bid价32686),触发此处二倍单,回到初始状态A,参考(3)挂三个单子(因为原始多单的限价保本单没撤,所以挂另外三个)。
(20)在-a处挂二倍空单后,价格在没有到达-a处前就到达0轴,触发此处原始多单的限价保本挂单(bid价32928),此时撤销-a处的二倍空单挂单。此轮结束,重新计算开仓手数,重新开始(1)。
(21)在-a【第(18)条的例子是用的初始状态A举例的,但是在第(21)条里就当第(18)条不是初始状态A,即a是除了初始状态A外其他初始状态的a】处挂二倍空单后,价格在没有到达(-a+200)处就到达-a处,触发此处二倍空单,即形成某初始状态(不能是初始状态A),挂另外三个单子,再代入循环。
(22)在-a【第(18)条的例子是用的初始状态A举例的,但是在第(21)条里就当第(18)条不是初始状态A,即a是除了初始状态A外其他初始状态的a】处挂二倍空单后,价格在没有到达-a处就到达(-a+200)处,撤掉-a处挂单,在(-a+100)处挂二倍空单。(等于是往上一个状态转化,缩小间距a,避免a无休止的扩大。其实(22)执行完之后达到的状态就是(18)执行完的那种典型状态。)
PS:开仓失败重新开。
因为市场跳空的因素,所以任何单子即便是挂单了,也未必是在挂单位置成交。如果是平仓的挂单也就无所谓了,没办法,但是开仓的挂单如果不是在原先挂单位置成交的,也得让系统记录下来。
举个例子,二倍单挂在距0轴200点的地方,但是因为当时价格跳空,没有那个价格,结果在距离0轴230点的地方成交的,那这时间距就是230点了,所以EA推算-2a的时候就得用230点来算了啊,不能用-a挂单位置的间距200点来算。
也就是说,挂单虽然不怕滑点,但是怕跳空,即便挂单了也完全有可能不是在那个价格成交的。
不允许分批成交!只在一个价位全部成交。
开仓挂单只能在精确位置成交,如果没有这个价位(跳过去)就绝对不成交。平仓的限价单同开仓挂单,止损单可以滑点在上下都有可能。
③.jpg②.jpg①.jpg4.jpg3.jpg2.jpg1.jpgC.jpgB.jpgA.jpg
韬客社区www.talkfx.co
发表于:2016-09-16 04:26只看该作者
3楼
都公开了,就不怕失效?
韬客社区www.talkfx.co
4楼
wangkekong 发表于 2016-9-16 12:23
网格交易最核心的就是:你不能也不应该在任意点位开仓。
波浪理论的确是最好的交易理论!
发表于:2016-09-16 05:17只看该作者
5楼
写得很精彩,但是实在太长,看不下去了。另外,在初始点同时开多单和空单,会白白损失点差,为啥不直接假定已经开了一对单子?
点评
发表于 2016-09-16 08:29
6楼
“的天然获胜优势必然是不利的,打败赌场的唯一方式就是采取局部优势战略。以21点游戏举例,虽然整体优势对赌客不利,但优势是非平均分布的,当出现对赌客非常高的优势时下大注,其余对赌客不利的时候不下注,这样即便整体优势依然不利,但赌客有主动权趋利避害,可以实现盈利。交易市场亦如是,所谓的技术分析,本质上就是在找市场的局部大优势机会。”
韬客社区www.talkfx.co
发表于:2016-09-16 05:38只看该作者
7楼
好長
韬客社区www.talkfx.co
发表于:2016-09-16 06:56只看该作者
8楼
LZ,好贴!
Stay hungry, Stay foolish
发表于:2016-09-16 07:30只看该作者
9楼
太复杂了,看不懂....但是还是觉得好厉害的样子,要不是因为久不久会有黑天鹅出现,我差点就信了
韬客社区www.talkfx.co
发表于:2016-09-16 08:09只看该作者
11楼
韬客社区www.talkfx.co
发表于:2016-09-16 08:29只看该作者
12楼
haotrader 发表于 2016-9-16 13:17
写得很精彩,但是实在太长,看不下去了。另外,在初始点同时开多单和空单,会白白损失点差,为啥不直接假定 ...
韬客社区www.talkfx.co
发表于:2016-09-16 09:49只看该作者
14楼
不研究这个,留个脚印以后看吧
韬客社区www.talkfx.co
发表于:2016-09-16 10:02只看该作者
15楼
本帖最后由 scalping 于 2016-9-16 18:17 编辑
看得头疼了,没看完放弃了。
韬客社区www.talkfx.co
发表于:2016-09-16 11:19只看该作者
17楼
楼主,我发我消息给你
韬客社区www.talkfx.co
发表于:2016-09-16 13:02只看该作者
18楼
总忘密码 发表于 2016-9-16 16:09
精彩 但我太笨真学不会
韬客社区www.talkfx.co
19楼
安儿 发表于 2016-9-16 19:19
楼主,我发我消息给你
韬客社区www.talkfx.co
发表于:2016-09-16 13:23只看该作者
20楼
骑驴的汉子 发表于 2016-9-16 15:30
太复杂了,看不懂....但是还是觉得好厉害的样子,要不是因为久不久会有黑天鹅出现,我差点就信了
韬客社区www.talkfx.co