致寻找EA圣杯印记的投资者:趋势EA比逆势EA好吗

您现在的位置: >>
关于Martingale EA(马丁格尔-逆势加仓)
时间: 19:12:17 点击:
  核心提示:“martingale是纯粹的恶魔,它会吞噬掉你所拥有的一切!”多年来,这是人们对martingale的一致看法。martingale的使用导致了逆势,重仓,无止损,与经典的外汇投资理念的“顺势、轻仓...& “martingale是纯粹的恶魔,它会吞噬掉你所拥有的一切!”
& & 多年来,这是人们对martingale的一致看法。martingale的使用导致了逆势,重仓,无止损,与经典的外汇投资理念的“顺势、轻仓、止损” 是完全对立的。它像一枚随时会爆炸的定时炸弹一样,让投资者无法安枕。
& & 然而,还是有不少人对此表现出热切的兴趣。多半是茫然无知的初学者,也有少数是精通数学及编程的技术狂人,在一片骂声中,martingale ea还是逐渐浮现到了市场的前台。
& & 比较早的martingale ea可以追溯到一款叫10point3 的ea。它在2006年8月就出现在forex-tsd的论坛上,至今已达到470页讨论,4700多条留言,算得上一个人气火爆的老贴了。
这款ea的原始版本代码比较简洁,是一款单向度的martingale(即不能买卖同时开仓)。内置的加仓规则为:如果maxtrade(最大加仓层数)设为12层以下,翻倍加仓;设为12层以上,加仓数为前一订单的1.5倍。内置了macd指标判断方向,当14期macd当前柱大于前一柱值时,开仓方向为多;反之,开仓方向为空,该判断只适用于第一个订单,一旦订单开出,就只按同一个方向开仓,直到全部平仓。 虽然这只是一款初级形态的martingale ea,但仍有几点可取之处:
& &(1)设置了reversecondition参数,可以人为改变开仓方向。当reversecondition 设为1时,原来的做多方向变为做空,原来做空的方向变为做多,当然,这也只适用于第一个订单;
& &(2)设置了账户保护,当accountprotection设为1时,可以设置订单保护的范围,当订单超过这个范围后,可以对最后一个订单单独平仓(但回测这一功能似乎没发挥作用);
& &(3)可以给每个订单设定止损,当然,通常这种设置很难实现盈利,但也避免了人们诟病的“爆仓”问题。
& & 10point3对martingale ea起到了一定的引领和推动作用。许多人在这个基础上进行修改参数、增加功能的尝试,使10point3滋生出许多变异的版本。
& & 与10point3 如出一辙的是swb grid。以4.1版本为例,它与10point3一样,是一款单向度的martingale,向一个方向逆势加仓,在达到利润目标后全部订单同时平仓。它与10point3明显不同是: & &
& & 10point3用macd作为首单过滤指标,选择顺势方向入场,入场后价格逆势再用martingale解套;而swb grid首单过滤指标使用的是bband、rsi及stoch,主动选择以逆势方向入场。入场之后,按设定的距离逆势加仓,不再使用过滤指标,否则加仓距离会被放大,错过很多宝贵的回调平仓机会。swb grid可以设置加仓的倍数,默认为2;也可以选择按照某一固定数加仓,如每次加仓0.01。开仓时每张订单可以设置止损和止赢; 如果选择stealth_mode=true模式开仓(即隐身模式,避免平台商进行后台操控),则以市价单模式开仓; 如果选择stealth_mode=false,则一次性将全部level内的订单以限价单的形式全部开出。同时,鉴于星期五开仓面临持仓过周末的危险,该ea还设置了“星期五开仓限制”;另外,该ea还设置了“单日盈利限制”,实现设定的单日盈利目标后,ea不再开仓。
& & blessing致力于对传统的martingale方法进行某些突破。从其2.5版本中,我们发现了这种努力的方向:(1)实现资金分散策略。blessing似乎意识到martingale ea将全部资金运用于单种货币的风险,有意设置了将资金分成部分来管理,一个货币对可以获得其设定的一份资金。比如,如果10000美金的帐户,如果将其portion设置为5, 该ea就将其管理的资金限定在2000美元, 再以此为基础来计算资金管理方式,风险似乎小了很多;(2)进行自动的仓位计算,即在使用资金管理设置为true的时候,程序会跟据分配的资金来计算开仓手数;(3)自动计算网格距离,其计算方法是以atr值为基础,默认设置为日线图21期atr值;(4)自动判断市场方向与人工强制做单方向相结合,当其mcbyma设定为true时, 可以用ma来判断市场的走势, 从而决定首单的开仓方向;当mcbyma设定为false时, 可以人工强制做单方向, 即mc=0 为做多, mc=1 为做空, mc=2为多/空皆可;默认的mc值为2。(5)长短网格相结合。blessing似乎看到了传统以短线网格为主的martingale ea 虽然解套快,但加仓速度过快、逆势硬扛的距离太短的毛病,想把其做成一个结合中、长线的martingale。这从其默认的参数设置就可以看出来:它将网格分成三个级别,每一个级别里可以设置最大订单数量、网格距离和止盈点数。第一级别的网格距离设置为25,止盈点数为50,订单数量为4;第二级别的网格距离设置为50,止盈点数为100,订单数量为4;第三级别的网格距离设置为100,止盈点数为150,订单数量为总共最大订单数减去第一、第二级别的订单数量。可见,第一级别的网格为短线网格,如果订单在这一级别没有实现全部平仓,往往意味着市场出现了更加长的趋势,订单进入第二级别,使用更大的网格距离来等待市场更大的回调,第二级别的网格可以看成是中线网格;如果第二级别仍然没有实现盈利并全部平仓,订单就进入第三级别,为等待市场更大的回调,其设置的网格距离就更大,可以看成是长线网格。 当然,把短线的订单浮亏带入长线,账户的整体浮亏程度肯定是大大增加了。(6)运用usepoweroutsl 参数来设定一个远距离的止损,以防止由于断电、断网或其他原因遭遇市场突然大幅波动无法止损出局。
& & blessing 到了3.0以上的版本后,其源代码几乎完全改变,复杂程度大大增加,但依然沿袭诸多了blessing 2的开发思路。 以3.8版本为例,可以看到其还在坚持blessing 2中的资金分配策略、长中短线结合策略、人工设置市场方向策略等。blessing 3明显的改进体现在:(1)舒适而详尽的界面显示,将各种交易信息显示得一清二楚;(2)更多的过滤设置,blessing 3 可以选择单独或合并使用ma、cci、bb_stoch来作为首单入场的过滤器;(3)多货币对冲功能,允许在浮亏或开仓数量达到一定程度后,选择一个其他货币对,当该货币对的correlation 值(即货币相关性值,从-100到100)达到设定水平时,交易该货币对,达到风险对冲的目的;(4)去除最早的订单,由此来减少账户的浮亏;同时,可以将平仓产生的损失点数加在后面订单的利润目标上,以此来弥补该损失;(5)使用了提前平仓(early exist)功能,对于那些开单时间过长的订单或者开出的过多订单,可以通过减少盈利目标来使其早平仓。(6)更丰富的智能网格计算功能,除了沿用blessing 2 的atr值自动计算网格外,还采用了以rsi值与rsi_ma值作为过滤的smartgrid设置。当然,blessing 3还增加了众多的平台适用性功能,使其适用于各种不同平台。然而,由于功能的庞杂,掌握使用blessing 3变成了一件高难度的事情。
& & 这款ea值得一提的倒不是其影响有多大,而是在策略上也有所创新。它也算一款“单向度”的martingale,其首单开仓的位置过滤器为:当前时间框架下离700期均线60点的位置(默认,可以人工设置)。如果在700期均线下方60点的地方,则做多;在700期上方60点的地方,则做空。这一过滤器的用意很显然:在偏离均线较远的地方,价格回调的几率更大,逆势行走的距离会很短,从而使回调盈利的概率增大,风险减小。这算不上是该款ea独到的地方。该款ea采用了“部分平仓”的策略,即将部分盈利单与部分亏损单对冲,获取少许利润,而不是等到价格回调到账户整体盈利的时候全部平仓。这种策略在以往的martingale ea中很少见到,是其新颖之处。这种“部分平仓”的策略可以抓住市场最小的回调机会来减轻仓位,降低风险;当然,也有可能会“操之过急”,失去了全部平仓的机会,为将来留下后患。但总体上说来,这种策略会将浮亏控制得更好,其承受市场风险的能力要强一些。
& & om_2way在“部分平仓”的策略中,一般用已盈利的一个或两个订单,去对冲亏损最多的订单,对冲后的利润就是一次交易的盈利。比起“全部平仓”的策略来,这会增加开仓次数和交易次数,盈利速度会有所提高。值得注意的是om_2way确定下一订单的仓位不是从起始仓位开始计算,而是以“最后一个订单”的仓位,再加上随订单数量而增加的持仓量来计算,这样会导致,尽管盘面上的订单数量并不多,但由于“最后一个订单”的仓位很大,账户总体持仓量偏大的情形。
bk’s grid ea hybrid
& & 这款ea之所以值得关注,是因为它改变了过去martingale &ea“单向度”的策略,发展出了“双向度”的martingale。所谓“双向度”,就是多、空同时开仓,各自按照设定的martingale策略开仓、平仓,或者根据整体策略交叉平仓或全部平仓。双向度martingale最大的优点就是其盈利的速度大大加强,通过账户余额的快速增长来对冲和降低风险。hybrid实行的是做多与做空分别平仓,在下单后,ea分别计算出做多、做空订单的平均价格,再加上设定的利润目标,分别将所有多单止盈线和空单止盈线,通过同时止盈的方式来实现多单全部平仓或空单全部平仓。
& & 此外,hybrid的仓位计算及网格距离的计算也与一般的martingale ea有很大的不同。网格的距离不是完全固定的人工设置,也不是基于指标的自动计算,而是在计算中融入了持仓总量的因素,也就是说,在持仓总量增加的时候,其网格密度会缩小,以此来尽可能的减小平仓所需的回调距离;在计算下一订单的仓位时,又融入了网格距离的因素,即当设定的“最小网格距离”(mingridsize)越大时,其仓位的递增速度越小。这种“距离与仓位”交融的策略在一般martingale ea中是很难见到的,或许这是其被称为hybrid(混血)的原因。但这种策略给使用的设置及变换带来一定难度,必须要在理解源代码基础上,通过反复的回测检验,才能找到合适的参数设置。
& & pipmaker堪称“双向度”ea的佼佼者。不过,这只是对于15.0以前的版本而言。从15.0以后,由于改编者与原作者并非同一人,改编后的pipmaker 交易策略发生重大变化,从一款“双向度”的martingaleea变回到“单向度”的ea,甚至成了一款剥头皮的ea了。因此,我们在此仅以10.0版本为例子探讨其策略。
& & pipmaker 10.0与om_2way一样,坚持“部分平仓”的理念,让盈利单去对冲最远端得亏损单,而不使用账户“全部平仓”。与hybrid相比,它除了具备hybrid的多、空“分别平仓”的功能,还具备了多、空“交叉平仓”的功能,把martingale ea的策略进一步深化了。简单地说,其策略就是:根据设置同时做多与做空,以多、空订单组成的网格中心线为界,当价格处在中心线以上时,市场被看作上升趋势,以中心线以下最底端的订单为对冲目标(多数时候为亏损的卖单,有时也会是盈利的买单),用已经盈利的买单或已经盈利的卖单来与其对冲,获取目标利润;当价格处在中心线以下时,市场被看作下降趋势,以中心线以上最顶端的订单为对冲目标(多数时候为亏损的买单,有时也会是盈利的卖单),用已经盈利的买单或者已经盈利的卖单来与其对冲,获取目标利润。
& & pipmaker的这种策略,实际上发展出了四种对冲平仓方式:多(亏)-多(盈)对冲,空(亏)-空(盈)对冲,多(亏)-空(盈)对冲, 空(亏)-多(盈)对冲。也就是说,当一个订单走错方向使,除了可以在市场回调时被同向的订单“挽救”以外,还可以在市场继续向前时,被反向的订单“挽救”。这样一来,账户整体的风险必然大大下降。
& & 实际检测的结果也是如此。pipmaker 开出的多、空订单,就像会移动的网格,随着价格的变动而不停的变动边界。这样一来,即使趋势行情来临,价格走出上千点,pipmarker绝不会也拉出千点的网格来坐以待毙,而是不停地平掉一部分反向订单,追随价格前进。当然,最终追随的效果还是取决于趋势强弱的程度和与之相关的参数设置。如果趋势太猛、太强或参数设置不当,反向订单的平仓速度远远跟不上,“套牢”的程度也会很深。
& & 凡事有利必有弊。pipmaker 这种交叉平仓的策略,在市场小幅震荡的时候可谓如鱼得水;在市场出现大趋势时,pipmaker 虽因其浮亏缓慢而不会对“暴仓”倍感恐惧,然而,随着“套牢”程度的加深,pipmaker会明显减少开仓和平仓获利的机会,盈利能力大大下降。而且,其“解套”也不如一般的martingale ea来得干净利落,要把套牢的单子一单单解掉, 往往需要市场经过多次反复震荡。或许是因为这个原因,后来的改编者干脆将其核心的策略删改得一干二净,增加了一些所谓“过滤器”设置,如ma, cci,fish, &arsi等,用以作为开仓过滤, 把一款以“平仓策略”见长的ea,变成了一款以“开仓策略”多样化的“大路货”martingale 了,让人颇感遗憾。
forexhacked
& & 谁会想到曾被“人人喊打”的martingale ea 还会有商业的市场呢?forexhacked 向人们证实了这一点: martingale绝不是一个小范围交流的私人空间,它有着广阔的大众市场。作为商业软件,以martingale为核心策略的ea的出现或许有着更深刻的背景:市场环境变得越来越“ranging”,传统的交易理念越来越无法适应市场。以2.3版本为例,作为一款双向度的martingale ea,看不出其与hybrid有本质的区别,但它的距离、仓位、盈利目标的设置比hybrid明晰多了。forexhacked还设置了时间过滤器,这也是商业软件的普遍做法,用以选择有利交易时间,排除不利的交易时间,降低风险;此外,forexhacked还可以自行设置martingale的启动层数,在未达到启动层数以前,订单都将使用设定的初始仓位,不顺次加仓,要等达到启动层数之后再开始加仓,这样可以在一定程度上延展ea逆势前行的距离。另外,forexhacked也尝试开出对冲仓位,来对冲由于逆势仓位过多造成的浮亏,等待市场的回调。不过,这一策略目前在测试中尚未得到成功的印证。
& & 顺便一提的是,与forexhacked师出同门的forexenvy(也是商业软件)无论在策略上还是在代码风格上都有着明显的雷同之处。forexenvy的最大优点是所有订单的距离和仓位都可以单独自由设置,从而具有了更大的灵活性。
& & martingale ea 从诞生后几乎就是沿着一条复杂化的道路发展:为了解决“爆仓”问题,开发者不得不绞尽脑汁的想出各种过滤方法以及资金管理手段。indo run把这种复杂化推向了极致:它的外部设置参数就多达近200项,要理解和掌握它确实很有难度。不过,大略观察,indo run主要发展了各种过滤技术:(1)时间过滤器,包括星期一至五的交易日过滤, 交易小时过滤,交易时段(即亚洲盘、欧洲盘、美洲盘)过滤,非农之日过滤,非农后第一星期日过滤等等;(2)新闻过滤器,可以根据新闻发生时间、影响程度及被影响的货币进行选择交易;(3)指标过滤器,使用了atr、cci、momentum、rsi、ma、envelop等多种指标进行入场过滤。其默认的设置为等值加仓,不过,也有martingale设置的选项。有趣的是,该ea还有一项设置,在资金每增长1万元后自动将仓位加倍;另外一项设置可在亚洲时段将仓位加倍,考虑到亚洲时段市场波动较小。其盈利模式也有好几种,第一种是采用全部订单固定金额盈利,在该模式下,每次平仓盈利的金额为固定值,与仓位的多少无关;第二种是递减盈利模式,在该模式下,随着仓位的增加,盈利目标将减少,以尽快平仓降低风险;第三种是根据atr值来计算盈利,atr值大则增大盈利目标,atr值小则降低盈利目标。此外还有一些追踪止盈和保平的方法。indo run也是属于单向度交易的martingale ea,通常采用限价单的方式入场,交易同一方向的货币篮子。不过,独到的是,indo run可以同时交易两个到三个货币篮子,这些订单设置有不同的magicnumber,用同一款ea来进行管理,这是过去所有的ea中不曾用到的技术。总之,这款以复杂、深奥为特点的ea,虽然在一定程度上综合了过往martingale ea的技术,并有所创新,但也最终不能解决“爆仓”问题,只有在完全了解和掌握其用法并谨慎使用的情况下,才能把风险控制到最低。
总结对martingale的看法
& & 在介绍了这么多款知名的martingale ea后,或许您会失望:没有一款ea真正解决了人们担心的“爆仓”问题!那么,martingale是不是不能用,研究martingale是否还有价值?
& & 我的看法是:martingale ea 的宿命就是“爆仓”,这一点过去、现在和未来都不会改变。就像人的宿命就是死亡一样。但人要死亡,并不妨碍人可以活得很精彩。同样,尽管martingale的宿命就是爆仓,但一样可以好好利用,用得好,照样可以赚钱。martingale ea 爆仓是一种必然,但何时、何地爆仓,又有一定的偶然性,与参数设置、入场位置等有很大的关系,这一点可以为我们所利用。
当前martingale ea从台下走到台面,从民间走向商业,正是市场环境变化的结果。记得一位投资大师回忆他年轻时代的市场环境的时候说:当时市场没有那么多波动,上涨就是持续的上涨,下跌就是持续的下跌。再来看看我们今天的外汇市场,可以说完全是两重天。现在的外汇市场几乎很难见到持续、明显、稳定的趋势了,几乎全部被震荡和“震荡型趋势”所取代。而震荡和震荡型趋势,恰恰就是martingaleea的天堂(也就是传统交易方法的地狱),难怪那些商业martingaleea开始走红了!
& & 很多人说:“martingale 结合好的资金管理,可以战胜市场”。这话有一定道理,但似是而非。资金管理可以帮助martingale 在市场上多存活一些日子,但无法战胜市场。除了资金管理,其他的技术也非常重要。今天的martingale,已经不是人们想象中的那种盲目加码的机器狂人了,而是融入了更多的智能因素。这些因素在前面介绍的ea中均有所体现,比如:(1)限制加仓速度和总仓位;(2)多、空双向对冲;(3)多货币对冲;(4)部分仓位平仓或止损;(5)减少盈利目标或追踪止盈;(6)结合人工趋势判断;(7)信号过滤及交易时段过滤;(8)资金分仓管理;(9)智能网格设置;(10)交易策略对冲;等等。
& & 笔者认为,martingale ea虽然注定要爆仓,但martingale的策略却可以发挥作用,这并不矛盾。这其中一项关键的技术,就是要进行综合的资金管理和调配,从概率上取得对市场的优势,而不是一般意义上的“资金管理”。
& & 比如说,对一个10万元资金的账户,用martingale ea来进行交易,按每个月10%的盈利率算,需要10个月时间(不进行复利交易),才能赚取一倍的利润,将这一倍的利润全部提取后,就可保本,脱离风险。因此,只有在10个月的交易期间内,不发生任何“极端行情”,才可以真正盈利,否则,就会发生亏损。在目前的市场状况下,这个条件不算苛刻,但也不算容易,在概率上看不出有明显的优势。
& & 但是,如果将这个10万元资金的账户分拆为a、b两个账户,各自用一款martingale ea来交易,要求是:a、b两个账户在交易方向上必须完全相反。这样,在发生“极端行情”时,只会有一个账户发生爆仓,另一个账户会照常盈利,亏损率为50%。如果按每个月10%的盈利率来计算,只要之前连续盈利5个月,并把利润全部提取出来,就可保本,脱离风险。相比起前面的条件来说,这要容易多了。
再如果,我们将上述10万元资金拆分成a、b、c、d四个账户,分别用两款martingale ea来交易,其中a、b两个账户的交易方向相同,但设置的参数不同以及入场点不同;c、d两个账户的交易方向与a、b两个账户都是相反,但各自设置的参数以及入场点也不同。这样,在发生“极端行情”的情况下,a、b或者c、d账户会面临威胁。但是,由于参数设置及入场点的不同,在实践中通常会有不低于50%的“存活率”。因此,真正爆仓的只是其中的一个账户。风险降低为25%。也就是说,按照每月10%的盈利率,只要之前两个半月没有出现“极端行情”,就可以保本并盈利了。这在目前的市场状态下,明显具有概率上的优势,盈利前景好得多了。
& & 也许有人说,每个月10%的盈利率,对martingale ea来说,目标太高,会放大风险。这就涉及到一个“资金调配”的问题。我们都很知道,martingale ea在大部分时候,由于其起始仓位很小,浮亏率非常低,资金利用率也很低。仓位里准备足够的资金,是为了防备“极端行情”的。为防备“极端行情”一直让账户资金闲置,大大的降低了martingale ea的盈利率。因此,对于具备条件的交易者,完全可以合理的调配资金,在浮亏率极低的情况下,将部分资金用于其他的交易策略(如剥头皮、趋势追踪、套利等);在极端行情来临、浮亏增大的时候,把这些资金调回来,通过减少资金占用的方式来提高盈利率,这种方法应该优于以增加仓位头寸或网格密度来提高盈利率的方法。
& & 当然,真正要将martingale用好,还是要结合人工趋势判断,适时进行参数调整,以适应市场的变化,减少“爆仓”的概率,提高在“极端行情”下的 “存活率”。总之,martingale的“爆仓”并不可怕,只要这种“爆仓”发生的频率和发生的概率是在限定的范围内,其造成的损失远远低于在适宜交易期间的盈利所得,martingale的策略是可以持续盈利的。
作者:不详 来源:网络
你是从哪里知道本网站的?
网友介绍的
百度搜索的
Google搜索的
其它搜索过来的
网址输错了进来的
太忙了不记得了
上一篇:下一篇:
发表我的评论
外汇ea,ea,外汇,ea,智能交易,暴利ea,刷单ea,头皮ea,外汇交易,网格交易,逆势加仓,顺势加仓() & 2017 版权所有 All Rights Reserved.
Powered by IBY!趋势型EA-汇智者
加入收藏&&
&汇智者:分享财富,让金钱为我们工作
该动态图是趋势型EA策略的实时真仓资金曲线演示。
策略简介:
交易风格描述:趋势交易不是圣杯。趋势交易不是过时的风格,也不是隐蔽的暗箱操作。该策略是基于两个不同时期的波动与运行指标的基础 C 当波动性变化,这一趋势被认为已经开始,将打开一个位置。 如果市场不理想,交易将被及时关闭, 但是,如果在正确的方向移动的市场,它开始加入到现有的位置, 当然,有时市场会折回,但是当他们流动性很好的时候,效果也相应的很好。
wm-markets Limited&&&& &&|&&&&|&&&&|&&&&|&&&&|&&查看: 5848|回复: 20
EA编程的书和 PA 指标
本帖最后由 十分智能 于
10:51 编辑
玩双A 的人&&A=EA ;A又=PA
需要用到内孕棒突破的概念
这样自动上单子的EA 本楼主接收预定EA
的2个常见 inside Bar 指标就是普罗大众用的
等用形态20EMA和切线分析 Fractal PERIOD diff 辅助
就得到可以带您要的各种滤器的EA
PA 指标 最粗糙的在
自动交易编程 圣经 在这里有PDF 两章节 在 第 2楼&&。
另外 本楼 有 一个 文件 是&&Price Action 或 上冲 回折等 Ea&&还有 一个 3棒 逆转 的Ea
在 第4楼 有 些图 解释
下载 有 代码 构思
(69.05 KB, 下载次数: 23)
13:09 上传
点击文件名下载附件
Ea下载积分: 金钱 -1 元宝
本帖最后由 十分智能 于
14:35 编辑
太大了5M 只好给个链接,如上
下面一个图是短期赢利的PA price action 裸K看盘的自动交易EA
请到12楼开始看这个EA的所有入场;
NUKE.png (62.1 KB, 下载次数: 0)
看欧元入场点
14:35 上传
编辑本段作者简介布伦特·奔富
经验丰富的期货交易大师,注册投资咨询顾问,交易思想的普及者,交易书籍作者。他于1983年在美国银行以机构自营商的身份开始了自己的交易生涯,拥有30年的职业交易经验,是外汇与全球各类金融指数期货的专家。著有畅销书籍Trading The SPI、Back to Basics Trading,并且为活跃的期货、外汇交易者发布每日股指行情预警。
作为一名受欢迎的国际投资教育工作者,他常年往返于包括澳大利亚、新西兰、马来西亚、越南、泰国、印度及中国等国家,所到之处深受期货、外汇交易者的拥戴。拥有金融商业硕士学位的布伦特·奔富还是特许期货投资顾问。
编辑本段目录前言
第1章 交易真相
为什么交易者十有九亏
第一年常见错误
第二年常见错误
第三年常见错误
如何跻身10%成功者行列
第2章 交易过程
第3章 原则一:准备
困难重重法则
输得起才会赢
第4章 原则二:启蒙
避免破产风险
信奉交易圣杯
涉足众人不敢去的地方
第5章 原则三:交易风格
选择交易风格
长期趋势交易
短期波段交易
长期趋势交易VS短期波段交易
第6章 原则四:市场
良好操作风险管理的特性
良好交易的特性
第7章 原则五:三大支柱
第8章 资金管理
马丁格尔资金管理
反马丁格尔资金管理
反马丁格尔资金管理策略
本帖最后由 十分智能 于
13:24 编辑
程序化交易要的 Ea 或 Mt 4 或 cTrader 等 支持
PA Price Action 中 逆转 这里有一个 指标 和 两个 Ea可以介绍
指标 在6楼 后 慢慢 研究 ,
带 ZigZag做锤子 的部位考察 参考 。
现在 GBP 图 有一个 3个月能 成交1单 的 图形 (这是 数据 少 略,实际 行情 可能 比这个 要多些 进场 机会 )
第一GBP 那个 Ea 叫 Bullish Reversal 用 黄昏 之星 代替了
第 2是-星-转折
第三图 和后面 的 图 是 3 bar reversal EA 的&&代码 在 第 5楼 再 贴 一边&&方面 目视。
3 bar reversal EA进单图 举例
GBP 1bullish reve.png (45.58 KB, 下载次数: 0)
13:20 上传
3 bar reversal EAdodown.png (31.16 KB, 下载次数: 0)
13:21 上传
3 bar reversal EA1.png (55.49 KB, 下载次数: 0)
资金曲线 3棒 逆转Ea
13:22 上传
(62.04 KB, 下载次数: 0)
13:23 上传
一个好单一个错
程序化交易可以帮我们省掉人生起步的第一桶金,在你赚到第一桶金之前尽量减少消耗,我觉得这是最大的帮助。
和讯期货:现在很多没有接触过程序化交易的人会觉得它的技术门槛比较高,我想问一下,您当时接触程序化交易的时候有没有同样的想法?因为它会牵涉到很多程序的编写,或者一些思路的反映等等。
逆势重仓不止损:以我为例,高人太多了,我们就实打实以自己为例,我到现在都不会编程。
和讯期货:我有点惊讶。
逆势重仓不止损:我实话实说的,因为我刚一开始接触程序化是被逼无奈的。我当时看了很多国内外所谓的高手,一个高手是怎样练成的,人们给算了一笔账,一个正常的人至少要准备50万元的学费,用五年到十年的时间,而且你要准备好别结婚,结了婚也要离,意思就是说你付出的艰辛和代价是无法想像的。当时我想我那么年轻,还没结婚,我也不想离婚,所以我就希望达到一个效果,在我不具备稳定盈利能力的情况下还能赚钱,这个也得益于很多客户很有毅力的帮助。我们讲过天才是极少数的,一般的讲百里挑一,实际上按照盈利比例来讲,我们期货市场一年左右稳定盈利的可能还有10%到20%,如果把这个时间拉到三年可能1%左右,就是说它的博弈性。因为期货市场像我们这样的投机人本来就是来市场承担风险的,亏损就是一种长跑,盈利了才不是一种长跑,我们要清醒认识这一点,不是说来找均衡的,是来承担风险的。我当时程序化也比较有自知之明,当时我想编程也不懂,我还想做程序化交易,怎么办呢?当时我有一个比较朴素的想法,看国内外的很多程序化交易的书,我就发现程序化其实并不是只有一条路,还有另外一条路。包括我们现在认识的很多程序化交易员不一定懂编程,你看看华尔街量化交易对冲基金西蒙茨他们的团队都是数学家,计算机高手,有黑客,什么物理学家,甚至连所谓的神经语言学,好像感觉都是非常难的,实际上上帝在把这扇门打开的时候,窗户就关上了。我看了那么多,实际上还有另外一条路,这些不管采用什么样的程序,短线、高频、对冲套利组合,他们最终都是一个模式,就是通过一个比较复杂的或者一个经常更新换代的,根据市场不断变化不断优化的系统模型组合策略,来达到一个长期的稳定盈利,他们都能走到这一步,这就是我们讲的三个字:高精尖。这就是我当时了解到的,也是我们现在了解到的一个主流。实际上大家不要被这条路蒙蔽了,这条路实际上意味着你在一旦获得一个团队或者编程组合优化也好一个策略也好,你能够比较流畅地执行,就是我们讲的所谓圣杯,但实际上圣杯的难度是非常之大的。这也是当时我认识到的这点,所以后来我就走了另外一条路。既然这条路走的是高精尖,那么你的反方向就是全部跟它相反的。
和讯期货:另辟蹊径。
逆势重仓不止损:这就是我们古代哲学比较好的一个,大道甚夷而民好径。包括我自己的交易理念到现在也是,如果要达到长期稳定的盈利状态实际上有两种方式:第一种,这个模式非常复杂,别人复制不了你,或者很难复制你,或者要付出非常大的代价,但是你一旦得到了这个模式,你当然会比较顺畅。另外一条路,你的程序非常简单,简单到什么程度?简单到如果把你的程序拿出去给别人看,会给别人骂,认为你侮辱了程序化交易。这是一个极端,这是另外一个极端。这个要跟他相对,你的程序是复杂的,我的程序是简单的。还有一个,你拿到之后赚钱就比较顺利。同样的,我既然这方面比较简单,拿我另外一方面就比较简单了。这是老生常谈,人性的修炼,自我欲望控制。这个不是有内涵,实际上说大白话就是,如果你想做到长期稳定盈利,程序化交易要么程序是复杂的,但是执行起来相当容易,十个里九个都赚钱,一个是亏的,就是说感觉根本不像做交易,就像喝啤酒看足球一样,很爽的。另外一个是程序简单,简单到让你看了之后会觉得侮辱了程序化交易,但是实现不了,非常难。
和讯期货:可以给我们举个例子吗?
逆势重仓不止损:我就举我自己的例子,因为我经常在群里面聊天,别人问我持仓或者信号,我都没有任何犹豫,都直接在QQ上剪切就贴出去了,别人问我有什么参数,我没有参数。我的程序简单到连参数都没有,根本就不存在优化。有人问我怎么做到历史测试回测的,我说我都没参数还做什么测试,因为做历史品种的测试不就是找到一个比较合适的参数半径区间吗,我没参数。
和讯期货:你是怎么进行策略编写的?
逆势重仓不止损:我没编写。
和讯期货:那你是怎么执行程序化交易的?这也是我特别好奇的地方。
逆势重仓不止损:我用的程序简单到什么程度,简单到它的进场是随机。打个比方,投硬币50%,我这几年的胜率应该在15%左右。这样讲来还不如抛硬币了,对,是不如抛硬币了,我知道,我要的就是这个。这个可能讲起来有点过了,实际上什么样的交易模式即便让你偶然发现能赚钱,但是你用不了多长时间就有想把它毁掉的冲动。
和讯期货:因为市场在不断变化。
逆势重仓不止损:是,这种程序一定让你执行起来非常难。大家想想什么是最难受的?就是亏钱,没有比亏钱对你来说在市场上是最大的伤害,我们来是赚钱的,谁都不想亏钱。我这个系统就是这样,我的单子做进去之后我心里非常清楚,85%的概率是要亏钱的,而且这个还是我长期总结下来的结果。而且我在一段极端的时间内,比方说我的历史统计应该将近半年,五个多月应该亏损接近95%,这里讲的是亏损率。但是就是因为我当时就准备亏了,因为我知道这就是我应该承受的东西,你不能说你的交易模式简单,你又玩起来很high,哪有那么好的事,你总要在某一个别人不愿意付出的地方你要付出别人付出不了的东西。
和讯期货:偶尔要当一下炮灰。
逆势重仓不止损:就像这段时间,我的资金创新高之后,我心里非常清楚,刚一创新高,刚摸到天花板,还没看一眼。
和讯期货:立马就会有很大的回撤。
逆势重仓不止损:后面立马就有手把你伸过来拉你,每次一创新高一下就下来,每次都是,没有一次不是。没有一次创了新高,让我high一阵子,没有的。一般来讲,要是快的话可能一个月左右,如果慢的话可能将近半年。
和讯期货:您是怎么看待您比较大的亏损率,包括还有你的资金亏损这一块的东西?
逆势重仓不止损:这个就是我要的,因为这个就是我的核心竞争力,我要用这种方式把我的相似竞争者排除市场。因为我相信我在这个市场中达不到平均水平,但是我觉得大家在市场上都是觉得自己比别人聪明,没有人觉得我确实比别人傻,我进来之后就是抱着必死心态来的,大家进来都是比聪明的。如果说一个市场大家都是聪明人或者这种精神来做的话,那么聪明就不是我们的核心竞争力。所以很多人就讲,你越聪明在这个市场上被修理得越惨。这个市场非常像一个放大镜,如果你聪明,你的智商有120,那么市场就是200,你天才是200,市场就是400。
和讯期货:少部分人可以超越市场的控制。
逆势重仓不止损:因为市场是由人来组成的,最终的结果你越聪明,市场一定会有比你更聪明的人存在。大家想一想,像我这样我认为我可能不行,我没有人家聪明,那我必须找到一个东西不跟你比聪明,我不跟你比赚钱快,你不是想赚钱吗,我就不想赚钱,你不是想赚快钱吗,我就不赚快钱,你不是想高胜率吗,我就要低胜率,比如说你想着短时间内资金翻一倍,我就不行。这样最终的结果实际上就是恰恰这会成为你的核心竞争,比如说我的成功率15%左右的系统,我也亲眼看过很多的客户跟我用类似的交易系统,最后的结果他们自己就放弃掉了。我觉得他们实际上在找所谓的圣杯,但是这些圣杯都被他们扔掉了。
和讯期货:是因为他们没有像你一样坚持下去吗?
逆势重仓不止损:也不能说没有像我一样坚持的,可能他们坚持的东西跟我不一样。
和讯期货:坚持的方向不太一样。
逆势重仓不止损:也可以这么讲。
和讯期货:您刚才提到了15%的参数,是不是现在您运行这套您自己制定程序化策略的一个胜率?
逆势重仓不止损:对。
和讯期货:可以大致跟我们介绍一下吗?
逆势重仓不止损:如果从胜率来讲的话确实不如抛硬币,但是我可以给大家简单讲一下,为什么我这15%的胜率结果是赚钱的。
和讯期货:大概赚了多少?
逆势重仓不止损:比方说我做一个品种做了之后亏钱了,只要风险达到一定程度,我就把它止损掉了,这个肯定是亏的。做另外一个品种,做对了赚钱了,一般我是不会走的,我给它设定一个盈利幅度,如果不超过我的盈利幅度我就不当它赚钱,如果达不到这个盈利程度又回去了,最后还是止损。所以很多品种经常是本来是赚钱了,但是最后是亏着出来的,这就消耗了我的大部分胜率。最终的结果是随着我不断的止损,把小盈利扔掉,这样得来的品种盈利都是比较巨大的。巨大到什么程度?巨大到一般来讲我只要抓到一个我的一个所谓方向,我可以抵消掉我15到20次的亏损,我只要做对一次就可以了。我经常跟朋友开玩笑讲,不要给我机会,因为我输多少次没有关系,我也愿意输,但是只要给我做对一次,我至少盈利比他们高30%甚至50%,可能几天就翻倍,那就意味着你如果做我的对手,你赢了我100次又怎么样。这个有点像当年的刘邦跟项羽,刘邦一辈子可能就打过一次胜仗,项羽胜了99%又怎么样,最终的一次就被对方压死,因为你翻了无数的100倍,刘邦就翻了1倍就把你吃掉了。因为我们毕竟要的最终结果如果是这样的话,我觉得大家不要太在意自己的过程,不要太注重小的东西,人老是局限于小的东西,你的眼界会越来越小,你就没有办法看到更大的世界。
和讯期货:程序化交易一直都不求绩效第一,但是它要求长期稳定收益。我不知道您对您自己这套策略有没有一个盈利的目标值?
逆势重仓不止损:盈利的目标值随着这两年我的盈利预期越来越低,一开始确实年少轻狂,就想着赚大钱,但是随着这两年慢慢的市场给我上了很多课,我也好好学习了。目前我的预计就是三个线:第一个,我的最好能够达到的心理预期目标,年收益达到20%,我就感觉我今年很成功,我是个成功认识了。
和讯期货:您目前只不过是达到了15%,离你的心理预期其实还是有一点心理距离的,您觉得后面这段时间可以达到20%的高度吗?
逆势重仓不止损:我讲的是最好的盈利预期,实际上我还有个最差的盈利预期,我的第一步盈利如果达不到年收益率20%的话也能接受。第二就是能超过银行同期存款利率3%或者5%就可以。如果这个也达不到,最坏的就是少亏点,我投降,让我亏个20%左右,只要亏损不超过20%,年终统计的时候我都可以接受。
和讯期货:您其实给我一种法无定法的感觉。
逆势重仓不止损:应该是比较有自知之明,看了太多的人间惨状。
和讯期货:对于自己有一个很特殊的定位。
逆势重仓不止损:比较有自知之明。
和讯期货:您的仓位一直比较轻,您是怎么处理仓位比例的?
逆势重仓不止损:我当时设立系统的时候,我之前定了一个目标,因为我本来就是胜率比较低,所以我必须要能够承受住连续多少的亏损。我当时设立这个系统的目标就是连亏100次,连亏100次之后我的资金剩下不低于70%,这是我的风险控制。我可以连续亏损100笔,然后我的资金还能剩下70%,我是按照这个目标来设定的。再加上我的测试大部分是亏损,所以我经常亏个30次、50次,这样就导致我的仓位比较要轻。
和讯期货:其实就是排除爆仓的可能性。
逆势重仓不止损:我一般是去杠杆化,不用市场的杠杆。我不光去杠杆化,我去掉杠杆之后还要再打个对折,假如说100万期货资金的话,实际上我的利用率可能只有5%到10%左右,我的仓位从这方面看比较轻。因为从另外一个交易角度而言,我们在市场做交易,不光是跟人做交易,这个单子实际上是跟市场做的,比如我们盯在电脑前,你是跟市场在做交易。市场是无穷大的,你赢了市场100次不重要,市场还在那里,但是市场只要赢你一次就有可能把你干掉。所以说从这个意义上来讲,我们在如此劣势的情况下,如何让自己拉小和市场的差距,我们通过一种风险控制的方式,把自己的小资金能够变得相对于市场无穷大,是相对无穷大。假如我们也是无穷大的资金,那么你想怎么做都可以,实际上不可能,所以说我们就用一种风险管理,把自己的小资金,比如说100万,看起来我只有100万,但实际上我能把这100万当成无穷大。比方说我第一笔交易亏了,我单笔交易风险一般都控制在0.3%到0.5%,我100万里亏一笔交易可能就亏,我还剩下99.5万,我下一笔交易可能就亏不到5000元钱,因为我像吹喇叭一样,越亏越缩,这就是为什么我越亏资金越紧,这样产生的结果就是我能保护住自己。相反,如果我一旦盈利了,我赢我的仓位越重,再加仓,最终的结果就是不要给我机会,有机会直接就大赢。下跌的是阴跌,但是上涨就像火箭一样直接拉起来,这样就会走一走就拉起来,这样仓位就比较低了,这样就会让自己有比较足够的抗击打能力。
和讯期货:7月5日黄金白银的连续交易正式上线运行了,您怎么看的,您会不会参与到其中?
逆势重仓不止损:其实我一直也很关注这个问题,作为国内期货市场比较大的一个创新试验,我当然也非常支持,这是我们国家金融开放很重要的一步,因为跟国际接轨是早晚要做的。如果说从纯粹的利国利民角度而言,我是非常支持的,我相信广大的客户们也都是支持的。但是仅就个人而言,我还是不特别建议大家立即参与进来,因为一个新生事物开放的时候中间的成长必然要伴随着磕磕碰碰,可能对于新生事物而言不是特别在意磕磕碰碰,但是对于投资者而言,可能它一个坑就把你埋掉了,它还没事,拍拍还可以继续走。所以我是希望大家可以参与,但是慎重一点,把风险放在第一位。至于我个人而言,我暂时不会参与,我会在旁边看个三个月或者半年,因为这毕竟属于我自己的圈子另外的东西,因为我在市场里面只在我的圈子里面,外面的风险太大。
和讯期货:您可以说在自己的世界规划出了自己的发展方向。
逆势重仓不止损:这就是我在市场中给自己画的一个圈。我特别喜欢国外一个作家写的一本书《小》,里面有一句话非常有意思:一个人看清了边界,然后故意限制自我的成长,未必不是一种伟大的界定。我当然没有那个高度能够完全看清自己的边界,但是至少能够模模糊糊感觉到自己的边界在哪里,快要接近的时候我就会缩回来,我知道在里面我是安详的。出去了,或许也是安详的,但是一旦破了这个闸口,以后就不好讲了。
和讯期货:可能会有一个不是很好的预期。
逆势重仓不止损:还是安全第一。
和讯期货:您最近有没有比较好的投资机会可以介绍给我们网友?
逆势重仓不止损:因为本身做程序化交易,程序化交易这个问题其实很难回答。如果要直接回答的话,因为市场上哪个品种出现我就做哪个品种,不出就不做,所以说从这个角度而言没有什么建议。但是我有一句忠告,实际上这也是我自己的一点点很浅陋的认识,市场上的各种品种实际上是永远不会缺机会的,既然永远不会缺机会你那么着急干什么?难道说今年发生一波行情,以后再没有行情了?不可能的。我希望大家在冲上战场之前,确保自己手里拿的是真刀真枪,是擦过的,是好好练过的,不要赤手空拳就冲上去。投资机会而言,还是希望大家看到机会旁边,最美丽的鲜花背后恐怕都是最险恶的陷井。所以不管对于什么投资机会,尽量在安全的情况下做每一笔交易,这样对于大家的成长是有帮助的,因为保证了自己,才有资格去战胜别人。
和讯期货:首先是要生存。
逆势重仓不止损:对。
和讯期货:感谢今天来到我们和讯期货的演播室分享了他比较独到的个人投资理念,我们下期再见!
//+------------------------------------------------------------------+
//|& && && && && && && && && && && && && && && && &3bar reversal.mq4 |
//+------------------------------------------------------------------+
//| Three Bar Reverse.mq4
//| Copyright (C) 2007,
//| &Gordon Gibson& &&
//+------------------------------------------------------------------+
#property copyright &Copyright (C) 2007, &
#property link& && &&Gordon Gibson && &
#include &stdlib.mqh&
extern double Lots=0.1;
string pairs[] = { &EURUSDm&,&USDJPYm&,&GBPUSDm&,&USDCHFm&,&EURCHFm&,&AUDUSDm&,&USDCADm&,
& && && && && && & &NZDUSDm&,&EURGBPm&,&EURJPYm&,&GBPJPYm&,&CHFJPYm&,&GBPCHFm&,&EURAUDm&,
& && && && && && & &EURCADm&,&AUDCADm&,&AUDJPYm&,&NZDJPYm&,&AUDNZDm& };
int periods[] = { 1,5,15,30,60,240,,43200 };
string TradeSymbol, CommentHeader, CommentsPairs[];
int& && &TradePeriod,MagicN
int& && &Pair = -1;
int& && &PPeriod = -1;
double& &bid,ask,point,spread,ticket,bSL,sSL,btp,
int b1,s1;
//initialize
int init(){
& &if ( IsTesting() ) { if ( ArrayResize(pairs,1) != 0 )&&pairs[0] = Symbol();& &}
& &if ( IsTesting() ) { if ( ArrayResize(periods,1) != 0 )&&periods[0] = Period(); }
return(0);&&}
//deinitialize
int deinit()& &{return(0);}
int start() {
b1=0;s1=0;
//Select Pair from Array
Pair = (Pair+1) % ArraySize(pairs);
TradeSymbol = pairs[Pair];
//Identify ibfx mini trade symbol
if(iClose(TradeSymbol,1440,0)==0) { TradeSymbol=StringSubstr(TradeSymbol,0,6);&&}
//TradeSymbol MagicNumber Assignment
if (TradeSymbol==&AUDCADm& || TradeSymbol==&AUDCAD&) {MagicNumber=200001;}
if (TradeSymbol==&AUDJPYm& || TradeSymbol==&AUDJPY&) {MagicNumber=200002;}
if (TradeSymbol==&AUDNZDm& || TradeSymbol==&AUDNZD&) {MagicNumber=200003;}
if (TradeSymbol==&AUDUSDm& || TradeSymbol==&AUDUSD&) {MagicNumber=200004;}
if (TradeSymbol==&CHFJPYm& || TradeSymbol==&CHFJPY&) {MagicNumber=200005;}
if (TradeSymbol==&EURAUDm& || TradeSymbol==&EURAUD&) {MagicNumber=200006;}
if (TradeSymbol==&EURCADm& || TradeSymbol==&EURCAD&) {MagicNumber=200007;}
if (TradeSymbol==&EURCHFm& || TradeSymbol==&EURCHF&) {MagicNumber=200008;}
if (TradeSymbol==&EURGBPm& || TradeSymbol==&EURGBP&) {MagicNumber=200009;}
if (TradeSymbol==&EURJPYm& || TradeSymbol==&EURJPY&) {MagicNumber=200010;}
if (TradeSymbol==&EURUSDm& || TradeSymbol==&EURUSD&) {MagicNumber=200011;}
if (TradeSymbol==&GBPCHFm& || TradeSymbol==&GBPCHF&) {MagicNumber=200012;}& &
if (TradeSymbol==&GBPJPYm& || TradeSymbol==&GBPJPY&) {MagicNumber=200013;}
if (TradeSymbol==&GBPUSDm& || TradeSymbol==&GBPUSD&) {MagicNumber=200014;}
if (TradeSymbol==&NZDJPYm& || TradeSymbol==&NZDJPY&) {MagicNumber=200015;}
if (TradeSymbol==&NZDUSDm& || TradeSymbol==&NZDUSD&) {MagicNumber=200016;}
if (TradeSymbol==&USDCHFm& || TradeSymbol==&USDCHF&) {MagicNumber=200017;}
if (TradeSymbol==&USDJPYm& || TradeSymbol==&USDJPY&) {MagicNumber=200018;}
if (TradeSymbol==&USDCADm& || TradeSymbol==&USDCAD&) {MagicNumber=200019;}
if (MagicNumber==0) {MagicNumber = 200999;}&&
//Assign Symbol Bid/Ask, Point & Spread values
bid=MarketInfo(TradeSymbol,MODE_BID);
ask=MarketInfo(TradeSymbol,MODE_ASK);
point=MarketInfo(TradeSymbol,MODE_POINT);
spread=MarketInfo(TradeSymbol,MODE_SPREAD);
if(IsTesting()) { if(spread & 13*point) {spread=13*}}
//Pair Chart Period Setup check loop
/*for(int p=0;p&9;p++) {
& && &PPeriod = (PPeriod+1) % ArraySize(periods);
& && &TradePeriod = periods[PPeriod]; */
& && &TradePeriod = Period();
//Orders counter
int cnt,total=OrdersTotal();
if(TotalTradesThisSymbol(TradeSymbol)==0) {&&b1=0;s1=0;& &}
if(TotalTradesThisSymbol(TradeSymbol)&0)&&{
& &for(cnt=0;cnt&cnt++) {
& && &OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
& && &if(OrderSymbol()==TradeSymbol) {
& && &if(OrderComment()==StringConcatenate(TradeSymbol,& &,TradePeriod,& 3BR Long&) )&&{b1=OrderTicket(); }
& && &if(OrderComment()==StringConcatenate(TradeSymbol,& &,TradePeriod,& 3BR Short&) )&&{s1=OrderTicket(); }
& && &}&&}&&}
//Buy Setup& &
& &if(& &iHigh(TradeSymbol,TradePeriod,5)&iHigh(TradeSymbol,TradePeriod,4) &&
& && && &iHigh(TradeSymbol,TradePeriod,4)&iHigh(TradeSymbol,TradePeriod,3) &&//3 is swing high
& && && &iHigh(TradeSymbol,TradePeriod,3)&iHigh(TradeSymbol,TradePeriod,2) &&
& && && &iHigh(TradeSymbol,TradePeriod,2)&iHigh(TradeSymbol,TradePeriod,1) )&&{
//modify open buystop order
& && &if(OrderSelect(b1,SELECT_BY_TICKET)==true && OrderType()==OP_BUYSTOP)& &{
& && && &if(iHigh(TradeSymbol,TradePeriod,3)+spread & OrderOpenPrice()) {
& && && &OrderModify(b1,iHigh(TradeSymbol,TradePeriod,3)+spread,//swing high
& && && && && && && &OrderStopLoss(),OrderTakeProfit(),OrderExpiration(),Orchid);& &}&&}
//sell order modify initial/trailing stoploss
& && &if(OrderSelect(s1,SELECT_BY_TICKET)==true && OrderType()==OP_SELL)& &{
& && && &if( (iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point) & OrderStopLoss() &&
& && && && &&&iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point) & OrderOpenPrice() ) ||
& && && && &OrderStopLoss()==0)&&{
& && && &OrderModify(s1,OrderOpenPrice(),iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point),//swing high
& && && && && && && &OrderTakeProfit(),OrderExpiration(),LightSalmon);&&}&&}&&
//Buy Execution
& && &if(b1==0)& &{
& && && &ticket=OrderSend(TradeSymbol,
& && && && && && && && &&&OP_BUYSTOP,
& && && && && && && && &&&Lots,
& && && && && && && && &&&iHigh(TradeSymbol,TradePeriod,3)+spread,//swing high
& && && && && && && && &&&0,//slippage
& && && && && && && && &&&0,//stoploss set when stop order is executed
& && && && && && && && &&&0,//no tp defined
& && && && && && && && &&&StringConcatenate(TradeSymbol,& &,TradePeriod,& 3BR Long&),
& && && && && && && && &&&MagicNumber,
& && && && && && && && &&&0,//time expire,
& && && && && && && && &&&Aqua);
& && && && && && && && &&&if(ticket&0)& &{
& && && && && && && && && && &if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))&&{Print(ticket);}
& && && && && && && && && && &else Print(&Error Opening BuyStop Order: &,GetLastError());
& && && && && && && && &&&return(0);& &}}
//Sell Setup
& &if(& &iLow(TradeSymbol,TradePeriod,5)&iLow(TradeSymbol,TradePeriod,4) &&
& && && &iLow(TradeSymbol,TradePeriod,4)&iLow(TradeSymbol,TradePeriod,3) &&//3 is swing low
& && && &iLow(TradeSymbol,TradePeriod,3)&iLow(TradeSymbol,TradePeriod,2) &&
& && && &iLow(TradeSymbol,TradePeriod,2)&iLow(TradeSymbol,TradePeriod,1) )&&{
//modify open sellstop order
& && &if(OrderSelect(s1,SELECT_BY_TICKET)==true && OrderType()==OP_SELLSTOP)&&{
& && && &if(iLow(TradeSymbol,TradePeriod,3)-spread & OrderOpenPrice())&&{
& && && &OrderModify(s1,iLow(TradeSymbol,TradePeriod,3)-spread,//swing low
& && && && && && && &OrderStopLoss(),OrderTakeProfit(),OrderExpiration(),HotPink);&&}&&}
//buy order modify initial/trailing stoploss
& && &if(OrderSelect(b1,SELECT_BY_TICKET)==true && OrderType()==OP_BUY)&&{
& && && &if( (iLow(TradeSymbol,TradePeriod,3)-spread-(1*point) & OrderStopLoss() &&
& && && && &&&iLow(TradeSymbol,TradePeriod,3)-spread-(1*point) & OrderOpenPrice() ) ||
& && && &OrderStopLoss()==0)& &{
& && && &OrderModify(b1,OrderOpenPrice(),iLow(TradeSymbol,TradePeriod,3)-spread-(1*point),//swing low
& && && && && && && &OrderTakeProfit(),OrderExpiration(),Orchid); }&&}&&
//Sell Execution
& && &if(s1==0)& &{
& && && &ticket=OrderSend(TradeSymbol,
& && && && && && && && &&&OP_SELLSTOP,
& && && && && && && && &&&Lots,
& && && && && && && && &&&iLow(TradeSymbol,TradePeriod,3)-spread,//3 is swing low
& && && && && && && && &&&0,//slippage
& && && && && && && && &&&0,//stoploss set when stop order is executed
& && && && && && && && &&&0,//no tp defined
& && && && && && && && &&&StringConcatenate(TradeSymbol,& &,TradePeriod,& 3BR Short&),
& && && && && && && && &&&MagicNumber,
& && && && && && && && &&&0,//time expire,
& && && && && && && && &&&HotPink);
& && && && && && && && &&&if(ticket&0)& &{
& && && && && && && && && && &if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))& &{Print(ticket);}
& && && && && && && && && && &else Print(&Error Opening SellStop Order: &,GetLastError());
& && && && && && && && &&&return(0);& &}}
//& &}//end period loop
return(0);}//end start()
//+------------------------------------------------------------------+
int TotalTradesThisSymbol(string TradeSymboli) {
& &int i, TradesThisSymbol=0;
& &for(i=0;i&OrdersTotal();i++)&&{
& && &OrderSelect(i,SELECT_BY_POS);
& && &if((OrderSymbol()==TradeSymbol) &&
& && &&&( OrderComment()==StringConcatenate(TradeSymboli,& &,TradePeriod,& 3BR Long&) ||
& && && &OrderComment()==StringConcatenate(TradeSymboli,& &,TradePeriod,& 3BR Short&)))& &
& && && &{&&TradesThisSymbol++;&&}& &}
return(TradesThisSymbol);&&}//end TotalTradesThisSymbol
本帖最后由 十分智能 于
20:20 编辑
指标 和 PA 图解说
ZIGZAG 是不能用的 会害死人 事后才知
PAJ是找pinbar 的 ZIG参数
zigzag (12,5,3) indicator
ZPINBAR.png (36.5 KB, 下载次数: 0)
20:16 上传
(111.08 KB, 下载次数: 0)
20:17 上传
(135.18 KB, 下载次数: 0)
20:18 上传
(126.71 KB, 下载次数: 0)
20:19 上传
内棒 inside bar
本帖最后由 十分智能 于
12:44 编辑
出场,短线俺见过3个不错的方法
1.F版常用的,力度放缓出反向k线伺机离场
2.好像以前c版用的,40--50点离场,后市如何,不去考虑
3.以前一个大神用过的,忘了是谁了,俺在参考,日内波动放缓后,(30点左右震荡)伺机利润最大时离场。
中线的话100--150点是一道门槛
进场:回测进场
内孕 IB INSIDE BAR 突破进场30点或多就出
比较能喝到咖啡的进场办法:
The DIBS Method... No Free Lunch continues
GMT6(6+8=14=12+2)
北京时间下午两点
What’s an I
ar (candle)
A bar with a High that is lower than the previous bar’s High and a Low that is higher than the previous bar’s Low. A stricter definition for trading the DIBS Method is that an IB cannot exceed the bounds of the previous bar. Meaning that a top and/or bottom (High and/or Low) can be equal to the previous bar. (see bottom charts)
IB on which hour?
You can play an IB, be it at 5.00 GMT, 4.00 GMT, 3.00 GMT or even 2.00 GMT as long as it is off the Open of the Day, 6.00 GMT. Peter's charts show this.
Where to put the buy and where to put the sell:
First rule: We buy on a break of an IB if price is above the daily open and sell if it’s below.
Where to put the buy and sell has no where been discussed in great detail. Put the buy/sell 1 pip outside the IB range and remember to add the spread.
Example: IB range is high @ 1.5500 and low @ 1.5400. Buystop: 1.5501 + spread, SL 1.5399, BE 1.5603 + spread. Sellstop: 1.5399, SL 1.5501 + spread, BE 1.5297. (chart to follow)
Should we not take the high/low of bar prior to IB for our breakout range?
This is not by PC’s rules, if you feel that this is what suits you, then go ahead.
What is the TP? Or the FTT (Free Trade Target)
楼主,你讲的很高深,有点看不懂
本帖最后由 十分智能 于
13:05 编辑
agq198394 发表于
楼主,你讲的很高深,有点看不懂
AHA 的锤子
这样的内容呢
是否容易懂些
进场条件 如下:
swy:=REF(CLOSE,2)&REF(OPEN,2) AND REF(CLOSE,1)&REF(OPEN,1) AND CLOSE&OPEN AND REF(CLOSE,1)&REF(CLOSE,2) AND CLOSE&REF(CLOSE,1);
wy:=REF(CLOSE,1)&REF(OPEN,1) AND CLOSE&OPEN AND CLOSE/OPEN&0.98;
sly:= COUNT(C&=O,3)&2 AND REF(C,1)&REF(C,2);
yx:=ref(swy,1) or ref(wy,1)
yx and c&o;
自己加条件限制!
悍马指标源码如下:
MA55:=MA(CLOSE,5);
MA15:=MA(CLOSE,15);
MA30:=MA(CLOSE,30);
MA60:=MA(CLOSE,60);
离散量30:=100*(MA55-(MA15+MA30)/2)/MA30;
离散量60:=100*(MA55-(MA15+MA30+MA60)/3)/MA60;
粘合K:=-2*(离散量30-离散量60);
粘合D:=EMA(粘合K,3);
主升:=BARSLAST(CROSS(粘合K,粘合D))*(粘合K&粘合D);
粘合:=ABS(粘合K)+ABS(离散量60);
VAR3:=REF(离散量30,3)&=REF(离散量30,1) AND REF(离散量30,1)&=离散量30 AND (离散量30-粘合K&2) AND 主升&0;
小牛:=IF(VAR3,1,0);月D:=&.D&(89,3,3);
周D:=&KDJ.D&(27,3,3);周D涨:=周D&REF(周D,1);
周D跌:=周D&REF(周D,1);
月D涨:=月D&REF(月D,1);
月D跌:=月D&REF(月D,1);背离:=(周D涨 AND 月D跌) OR (周D跌 AND 月D涨);
同向:=周D涨 AND 月D涨 AND REF(周D跌,1) AND REF(月D跌,1) AND REF(周D跌,2) AND REF(月D跌,2) AND REF(周D跌,3) AND REF(月D跌,3);暴涨兆:=背离 OR 同向;MV3:=EMA(V,3);
MA3:=EMA(C,3);
MV3角度:=ATAN((MV3/REF(MV3,1)-1)*100)*180/3.1416;
MA3角度:=ATAN((MA3/REF(MA3,1)-1)*100)*180/3.1416;
MV5:=EMA(V,5);
MA5:=EMA(C,5);
MV5角度:=ATAN((MV5/REF(MV5,1)-1)*100)*180/3.1416;
MA5角度:=ATAN((MA5/REF(MA5,1)-1)*100)*180/3.1416;
MV10:=EMA(V,10);
MA10:=EMA(C,10);
MV10角度:=ATAN((MV10/REF(MV10,1)-1)*100)*180/3.1416;
MA10角度:=ATAN((MA10/REF(MA10,1)-1)*100)*180/3.1416;
强弱度:=(MV3角度+MA3角度+MV5角度+MA5角度+MV10角度+MA10角度)/6;
QBD:=CROSS(强弱度,50) AND COUNT(强弱度&50,7)&=3;
启爆点:=IF(QBD AND COUNT(QBD,4)=1,50,0);
悍马:= 起爆点 AND 暴涨兆 AND 小牛 AND C&MA(C,60);STICKLINE(悍马,0,60,2,0)COLOR00FFFF;
DRAWTEXT(悍马,20,'←悍马'),COLOR00FFFF;
悍马 指标通达信
DIF1:=EMA(CLOSE,12)-EMA(CLOSE,26),COLOR00FF00,LINETHICK1;
DEA1:=EMA(DIF1,9),COLOR00FF00,LINETHICK1;
DI:=EMA(CLOSE,4)-EMA(CLOSE,13),COLORMAGENTA,LINETHICK2;
D1:=EMA(DI,5),COLORGRAY;
D2:=EMA(DI,10),COLORGRAY;
D3:=EMA(DI,20),COLORGRAY;
D4:=EMA(DI,30),COLORGRAY;
D5:=EMA(DI,60),COLORGRAY;
D6:=EMA(DI,90),COLORGRAY;
D7:=EMA(DI,120),COLORGRAY;
D8:=EMA(DI,250),COLORGRAY;
AA:=STICKLINE(DI&=REF(DI,1) AND D1&=REF(D1,1) AND D2&=REF(D2,1) AND D3&=REF(D3,1) AND
D4&=REF(D4,1) AND D5&=REF(D5,1) AND D6&=REF(D6,1) AND D7&=REF(D7,1) AND
D8&=REF(D8,1) AND C&EMA(C,11) AND DI&-0.8,DI,0,2,0),COLORRED;
MACD1:=(DIF1-DEA1)*2;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,2,0),COLOR0000FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.8,0),,COLOR0000FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.6,0),COLOR0000FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.4,0),COLOR0000FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.2,0),COLOR0000FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,0.8,0),COLORCC66FF;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,2,0),COLORFF9900;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.8,0),COLORFF9900;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.6,0),COLORFF9900;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.4,0),COLORFF9900;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,1.2,0),COLORFF9900;
STICKLINE(MACD1&REF(MACD1,1),0,MACD1,0.8,0),COLORFFCC00;
STICKLINE(MACD1&=0 OR MACD1&=0,0,0,50,1),COLORWHITE;
WY1001:=(2*CLOSE+HIGH+LOW)/4;
WY1002:=EMA(WY1001,4);
WY1003:=EMA(WY1002,4);
WY1004:=EMA(WY1003,4);
X:=(WY1004-REF(WY1004,1))/REF(WY0;
X1:=IF(X&REF(X,1),X,DRAWNULL),COLORWHITE,LINETHICK2;
XO:=MA(X,2),COLOR9932CD;
SI:=REF(X,1);
STICKLINE(X&SI,X,SI,1,0),COLOR0080EF;
STICKLINE(X&SI,X,SI,1,0),COLORFF00CC;
DIF:DIF1,LINETHICK1,COLORGREEN;
DEA:DEA1,LINETHICK1,COLORGREEN;
DIF2:IF(MACD&REF(MACD,1),DIF1,DRAWNULL),COLORRED,LINETHICK1;
DEA2:IF(DEA1&DIF1,DEA1,DRAWNULL),COLORFF00FF,LINETHICK1;
VAR1:=HHV(DEA,41);
VAR2:=LLV(DEA,43);
VAR3:=DEA-(DIF-DEA);
VAR4:=DEA-(DIF-DEA);
SX:IF(DIF&VAR1 AND DEA=VAR1,MAX(LLV(VAR1,10),VAR3),VAR1),COLORCYAN,LINETHICK2;
XX:IF(DIF&VAR2 AND DEA=VAR2,MIN(HHV(VAR2,10),VAR4),VAR2),COLORYELLOW,LINETHICK2;
VARR1:=CLOSE&REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR2:=REF(VARR1,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR3:=REF(VARR2,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR4:=REF(VARR3,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR5:=REF(VARR4,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR6:=REF(VARR5,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR7:=REF(VARR6,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR8:=REF(VARR7,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR9:=REF(VARR8,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARRA:=REF(VARR9,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARRB:=REF(VARRA,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARRC:=REF(VARRB,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARRD:=CLOSE&REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARRE:=REF(VARRD,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARRF:=REF(VARRE,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR10:=REF(VARRF,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR11:=REF(VARR10,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR12:=REF(VARR11,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR13:=REF(VARR12,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR14:=REF(VARR13,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR15:=REF(VARR14,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR16:=REF(VARR15,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR17:=REF(VARR16,1) AND CLOSE&=REF(CLOSE,1) AND CLOSE&REF(CLOSE,2);
VARR18:=REF(VARR17,1) AND CLOSE&REF(CLOSE,1) AND CLOSE&=REF(CLOSE,2);
VARR19:=REF(VARRD OR VARRE OR VARRF OR VARR10 OR VARR11 OR VARR12 OR VARR13 OR VARR14 OR VARR15 OR VARR16 OR VARR17 OR VARR18,1) AND VARR1;
DRAWICON(VARR19=1,SI-0.08,1);
VARR1A:=REF(VARR1 OR VARR2 OR VARR3 OR VARR4 OR VARR5 OR VARR6 OR VARR7 OR
VARR8 OR VARR9 OR VARRA OR VARRB OR VARRC,1) AND VARRD;
DRAWICON(VARR1A=1,X+0.08,2);
????:VARR19,COLORRED,NODRAW;
突破之图过滤:
highvoland 1-.gif (180.96 KB, 下载次数: 0)
13:01 上传
本帖最后由 十分智能 于
13:33 编辑
{见底信号}
主力: 3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
见底信号:10;
{买入准备}
主力: 3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
买入准备:IF(主力&=10,50,10);
{买入时机}
主力: 3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
买入时机:IF(CROSS(主力,见底信号),100,10);
-------------------
MA55:=MA(CLOSE,5);
MA15:=MA(CLOSE,15);
MA30:=MA(CLOSE,30);
MA60:=MA(CLOSE,60);
离散量30:=100*(MA55-(MA15+MA30)/2)/MA30;
离散量60:=100*(MA55-(MA15+MA30+MA60)/3)/MA60;
粘合K:=-2*(离散量30-离散量60);
粘合D:=EMA(粘合K,3);
主升:=BARSLAST(CROSS(粘合K,粘合D))*(粘合K&粘合D);
粘合:=ABS(粘合K)+ABS(离散量60);
VAR3:=REF(离散量30,3)&=REF(离散量30,1) AND REF(离散量30,1)&=离散量30 AND (离散量30-粘合K&2) AND 主升&0;
小牛:=IF(VAR3,1,0);
月D:=&KDJ.D&(89,3,3);
周D:=&KDJ.D&(27,3,3);
周D涨:=周D&REF(周D,1);
周D跌:=周D&REF(周D,1);
月D涨:=月D&REF(月D,1);
月D跌:=月D&REF(月D,1);
背离:=(周D涨 AND 月D跌) OR (周D跌 AND 月D涨);
同向:=周D涨 AND 月D涨 AND REF(周D跌,1) AND REF(月D跌,1) AND REF(周D跌,2) AND REF(月D跌,2) AND&&REF(周D跌,3) AND REF(月D跌,3);
暴涨兆:=背离 OR 同向;
MV3:=EMA(V,3);
MA3:=EMA(C,3);
MV3角度:=ATAN((MV3/REF(MV3,1)-1)*100)*180/3.1416;
MA3角度:=ATAN((MA3/REF(MA3,1)-1)*100)*180/3.1416;
MV5:=EMA(V,5);
MA5:=EMA(C,5);
MV5角度:=ATAN((MV5/REF(MV5,1)-1)*100)*180/3.1416;
MA5角度:=ATAN((MA5/REF(MA5,1)-1)*100)*180/3.1416;
MV10:=EMA(V,10);
MA10:=EMA(C,10);
MV10角度:=ATAN((MV10/REF(MV10,1)-1)*100)*180/3.1416;
MA10角度:=ATAN((MA10/REF(MA10,1)-1)*100)*180/3.1416;
强弱度:=(MV3角度+MA3角度+MV5角度+MA5角度+MV10角度+MA10角度)/6;
QBD:=CROSS(强弱度,50) AND COUNT(强弱度&50,7)&=3;
启爆点:=IF(QBD AND COUNT(QBD,4)=1,50,0);
悍马:= 起爆点 AND 暴涨兆 AND 小牛 AND C&MA(C,60);
STICKLINE(悍马,0,60,2,0)COLOR00FFFF;
DRAWTEXT(悍马,20,'←悍马'),COLOR00FFFF;
如7楼的内孕棒 i BAR 用EA找,用 如下方法止损:
highvoland 8STOPLOSS.gif (177.22 KB, 下载次数: 0)
破均线不出,出在X
13:20 上传
本帖最后由 十分智能 于
14:39 编辑
找 inside Bar 的&&和常见棒子级别( 非形态级别的)一个EA
先给代码,然后
给其在何处入场的图
有很多副图形
很有意思!
//+------------------------------------------------------------------+
//|& && && && && && && && && && && && && && &&&NukedBarfxfactory.mq4 |
//+------------------------------------------------------------------+
//|& && && && && && && && && && && && && &ButNakedbarTrading-exp.mq4 |
//|& && && && && && && && && && && & Nick Bilak, beluck[ |
//+------------------------------------------------------------------+
#property copyright &Copyright (C) 2007, Nick Bilak&
#property link& && &&h&
#include &stdlib.mqh&
#include &WinUser32.mqh&
extern int expertId = 1;
extern int TakeProfit1=50;
extern int TakeProfit2=150;
extern int _3bartrailpips=100;
extern int BreakEven=10;
extern int StopLoss=0;&&
extern int&&OrderPipsDiff=5;
extern bool InsideBar=
extern bool OutSideBar=
extern bool KeyReversalBar=
extern int&&KeyReversalOpenDiff=10;
extern bool TwoBarReversal=
extern int&&Open1Close2WithinPrevHLPips=10;
extern int&&Open2WithinPrevClosePips=5;
extern int&&BodyPips=10;
extern int&&PipsFromMid=10;
extern int CancelOrderBars=4;
extern double Lots = 0.1;&&
extern double MaximumRisk = 5;
extern int& & LotDigits = 1;&&
extern bool& &FixedLot =
extern int& & slippage=2;& & //slippage for market order
int& & shift=0;& &//shift to current bar,
extern int& & OrderTriesNumber=2; //to repeate sending orders when got some error
extern string& & EAName=&bblo&;
bool buysig,sellsig,closebuy,closesell,
int lastsig,last,tries,co,
double LotsR
void start()&&{
& &//---- check for history and trading
& &if(Bars&100 || IsTradeAllowed()==false)
& &co=CalculateCurrentOrders(Symbol());
& &CheckForSignals();
& &if (co&0) CheckForClose();
& &CheckForOpen();
& &co=CalculateCurrentOrders(Symbol());
& &if (mkt&0) {
& && &BreakEvenStop(BreakEven,0);
& && &Trail3Bar();
//+------------------------------------------------------------------+
//| Calculate open positions& && && && && && && && && && && && && &&&|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
& & mkt=0;
& &for(int i=0;i&OrdersTotal();i++)&&{
& && &if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
& && &if(OrderSymbol()==symbol && OrderMagicNumber()==expertId) {
& && && &ord++;
& && && &if (OrderType()==OP_BUY || OrderType()==OP_SELL) mkt++;
//---- return orders volume
& &return(ord);
//+------------------------------------------------------------------+
//| Check for open order conditions& && && && && && && && && && && & |
//+------------------------------------------------------------------+
void CheckForSignals() {
& && &//check long,short,exit signals
& && &buysig=
& && &sellsig=
& && &closebuy=
& && &closesell=
& && &remorder=
& && &int isins,isouts,iskeyrev,is2
& && &if (InsideBar) isins=IsInsideBar(shift);
& && &if (OutSideBar) isouts=IsOutSideBar(shift);
& && &if (KeyReversalBar) iskeyrev=IsKeyReversalBar(shift);
& && &if (TwoBarReversal) is2brev=IsTwoBarReversal(shift);
& && &//long entry signal condition
& && &if (isins&0 || isouts&0 || iskeyrev&0 || is2brev&0) {
& && && &buysig=
& && && &closesell=
& && &//short entry signal
& && &if (isins&0 || isouts&0 || iskeyrev&0 || is2brev&0) {
& && && &buysig=
& && && &sellsig=
& && && &closebuy=
& && &if (last&0 && (Time[0]-last)/(Period()*60)&=CancelOrderBars) {
& && && &remorder=
void CheckForOpen() {
& &int& & res,
//---- sell conditions
& &co=CalculateCurrentOrders(Symbol());
& &if(sellsig && lastsig!=-1)&&{
& && &co=CalculateCurrentOrders(Symbol());
& & if (co==0) {
& && &&&res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
& && &&&res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit2);
& & lastsig=-1;
& & last=Time[0];
//---- buy conditions
& &if(buysig && lastsig!=1)&&{
& && &co=CalculateCurrentOrders(Symbol());
& & if (co==0) {
& && &&&res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
& && &&&res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit2);
& & last=Time[0];
& & lastsig=1;
void BreakEvenStop(int BES, int BELP) {
& &//move stoploss to lock some profit
& &double StopL
& &if ( BES & 2 ) {
& && &for (int i = 0; i & OrdersTotal(); i++) {
& && && &if ( OrderSelect (i, SELECT_BY_POS) == false )&&
& && && &if ( OrderSymbol() != Symbol() || OrderMagicNumber() != expertId )&&
& && && &if ( OrderType() == OP_BUY ) {
& && && && &if ( Bid & OrderOpenPrice()+BES*Point )&&
& && && && &StopLossbr = OrderOpenPrice()+BELP*P
& && && && &if ( StopLossbr & OrderStopLoss() ) {
& && && && && && &bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLossbr, OrderTakeProfit(), 0, White);
& && &&&if (!bres) Print(&Error Modifying BUY order : &,ErrorDescription(GetLastError()));
& && && && &}
& && && &}
& && && &if ( OrderType() == OP_SELL ) {
& && && && &if ( Ask & OrderOpenPrice()-BES*Point )&&
& && && && &StopLossbr = OrderOpenPrice()-BELP*P
& && && && &if ( StopLossbr & OrderStopLoss() ) {
& && && && && && &bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLossbr, OrderTakeProfit(), 0, Gold);
& && &&&if (!bres) Print(&Error Modifying SELL order : &,ErrorDescription(GetLastError()));
& && && && &}
& && && &}
int IsInsideBar(int shiftin) {
& &//Inside Bar, The close of the inside bar should be higher than both the close and the bar midpoint The current bar must open
& &//equal or higher than the close of the inside bar a BuyStop order is to be placed at the high of the inside bar if the order
& &//is not hit within the next 4 bars cancel order. See picture below
& &//shift=0;
& &if (High[shiftin]&High[shiftin+1]) return(0);
& &if (Low[shiftin]&Low[shiftin+1]) return(0);
& &if (Close[shiftin]&Open[shiftin] && Close[shiftin]&(High[shiftin]+Low[shiftin])/2 && Open[shiftin-1]&=Close[shiftin]) return(1);
& &if (Close[shiftin]&Open[shiftin] && Close[shiftin]&(High[shiftin]+Low[shiftin])/2 && Open[shiftin-1]&=Close[shiftin]) return(-1);
& &return(false);
int IsOutSideBar(int shift) {
& &//Outside Bar, The close of the outside bar should be higher than the open and higher that the bar midpoint the open
& &//of the current bar should open equal or higher than the close of the outside bar order A Buystop order should be
& &//placed on the high of the outside bar if it is not executed within the next 4 bars cancel order. See picture below
& &//shift=0;
& &if (High[shift]&High[shift+1]) return(0);
& &if (Low[shift]&Low[shift+1]) return(0);
& &if (Close[shift]&Open[shift] && Close[shift]&(High[shift]+Low[shift])/2 && Open[shift-1]&=Close[shift]) return(1);
& &if (Close[shift]&Open[shift] && Close[shift]&(High[shift]+Low[shift])/2 && Open[shift-1]&=Close[shift]) return(-1);
& &return(false);
int IsKeyReversalBar(int shift) {
& &//Key Reversal Bar, The open of the key bar should be at least ?pips higher than the high of the previous bar.
& &//The close of the key bar should be with in the high and close of the previous bar. The open of the current bar should be
& &//lower than the close of the key bar. A SellStop order should be place on the low of the key bar if it is not executed within
& &//the next 4 bars then cancel the order. See picture below - short!
& &//shift=0;
& &if (Open[shift]&Low[shift+1]-KeyReversalOpenDiff*Point && Close[shift]&=Low[shift+1]&&&& Close[shift]&=Close[shift+1] && Open[shift-1]&Close[shift]) return(1);
& &if (Open[shift]&High[shift+1]+KeyReversalOpenDiff*Point && Close[shift]&=High[shift+1]&&&& Close[shift]&=Close[shift+1] && Open[shift-1]&Close[shift]) return(-1);
& &return(0);
int IsTwoBarReversal(int shift) {
& &//Two Bar Reversal, The open of the first bar should be near the low the previous bar and the close should be much lower and
& &//have a good size body. The open of the second bar should be very near the close of the first bar but both should be well below
& &//the midpoint of each bar with the close to be very near the low 2 bar previous. A BuyStop Order should be place at the high of
& &//the bar 1 if it is not executed within 4 bars cancel order. See picture below
& &//shift=0;
& &if (MathAbs(Open[shift+1]-Close[shift+1])&=BodyPips*Point && MathAbs(Open[shift+1]-Low[shift+2])&=Open1Close2WithinPrevHLPips*Point &&
& && & MathAbs(Close[shift]-Low[shift+2])&=Open1Close2WithinPrevHLPips*Point &&
& && & MathAbs(Open[shift]-Close[shift+1])&=Open2WithinPrevClosePips*Point &&
& && & Close[shift+1]&(High[shift+1]+Low[shift+1])/2-PipsFromMid*Point &&
& && & Open[shift]&(High[shift]+Low[shift])/2-PipsFromMid*Point)
& && && &return(1);
& &if (MathAbs(Open[shift+1]-Close[shift+1])&=BodyPips*Point && MathAbs(Open[shift+1]-High[shift+2])&=Open1Close2WithinPrevHLPips*Point &&
& && & MathAbs(Close[shift]-Low[shift+2])&=Open1Close2WithinPrevHLPips*Point &&
& && & MathAbs(Open[shift]-Close[shift+1])&=Open2WithinPrevClosePips*Point &&
& && & Close[shift+1]&(High[shift+1]+Low[shift+1])/2-PipsFromMid*Point &&
& && & Open[shift]&(High[shift]+Low[shift])/2-PipsFromMid*Point)
& && && &return(-1);
& &return(0);
int OpenStop(int mode,double lot, double prc, int SL, int TP) {
& &int& & res,tr,
& &double openprice,sl,tp,
& &tries=0;
& &stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*P
& &while (res&=0 && tries&OrderTriesNumber) {
& && &tr=0; while (tr&5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
& && &RefreshRates();
& && &if (mode==OP_SELLSTOP) {
& && && &if (prc&=Bid-stlev) openprice=
& && && &else openprice=Bid-
& && && &if (SL&0) sl=openprice+SL*P
& && && &if (TP&0) tp=openprice-TP*P
& && && &col=R
& && &} else
& && &if (mode==OP_BUYSTOP) {
& && && &if (prc&=Ask+stlev) openprice=
& && && &else openprice=Ask+
& && && &if (SL&0) sl=openprice-SL*P
& && && &if (TP&0) tp=openprice+TP*P
& && && &col=B
& && &} else return(0);
& && &Print(Ask,& &,Bid,& &,Symbol(),&&&&,mode,&&&&,lot,&&&&,openprice,&&&&,sl,&&&&,tp,&&&&);
& && &res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+&_&+expertId,expertId,0,col);
& && &tries++;
& &if (res&=0) Print(&Error opening pending order : &,ErrorDescription(GetLastError()));
& &return(res);
void CheckForClose()&&{
& &for(int i=0;i&OrdersTotal();i++)&&{
& && &if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)&&
& && &if(OrderMagicNumber()!=expertId || OrderSymbol()!=Symbol())
& && &//---- check order type
& && &if(OrderType()==OP_BUY && closebuy) {
& && && &bres=CloseAtMarket(OrderTicket(),OrderLots());
& && &if(OrderType()==OP_SELL && closesell) {
& && && &bres=CloseAtMarket(OrderTicket(),OrderLots());
& && &if(OrderType()==OP_BUYSTOP && (closebuy || remorder)) {
& && && &bres=DeletePending(OrderTicket());
& && &if(OrderType()==OP_SELLSTOP && (closesell || remorder)) {
& && && &bres=DeletePending(OrderTicket());
bool DeletePending(int ticket) {
& &bool bres=
& &tries=0;
& &while (!bres && tries&OrderTriesNumber) {
& && &bres=OrderDelete(ticket);
& && &tries++;
& && &tr=0; while (tr&5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
& &if (!bres) Print(&Error deleting order : &,ErrorDescription(GetLastError()));
& &return (bres);
bool CloseAtMarket(int ticket,double lot) {
& &//fault tolerant market order closing
& &bool bres=
& &tries=0;
& &while (!bres && tries&OrderTriesNumber) {
& && &RefreshRates();
& && &bres=OrderClose(ticket,lot,OrderClosePrice(),slippage,White);
& && &tries++;
& && &tr=0;
& && &&&while (tr&5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
& &if (bres==false) Print(&Error closing order : &,ErrorDescription(GetLastError()));
& &return(bres);
double LotsRisk(int StopLosslr)&&{
& &double lot=L
& &int SL=StopL
& &if (SL==0) SL=100;
//---- select lot size
& &if (!FixedLot)
& && &lot=AccountFreeMargin()*MaximumRisk*0.001/SL;
& &lot=NormalizeDouble(lot,LotDigits);
//---- return lot size
& &if(lot&MarketInfo(Symbol(),MODE_MINLOT)) lot=MarketInfo(Symbol(),MODE_MINLOT);
& &return(lot);
//3 bar trailing stop count back 3 bar and place a stop loss 2 pips below the lowest bar when counting back do not count the inside bars
//skip to the next bar,&&when a new bar opens perform the same task and move the trailing stop loss if able to.
//If due to broker stop loss restrictions place the stop as close as possible to the next bar target and move it until
//the next bar target is hit then repeat for each new bar
void Trail3Bar() {
& &//_3bartrailpips
& &double StopLoss3,H3,L3=99999;
& &int i=0,cnt=3;
& &while (i&=cnt) {
& && &i++;
& && &if (i&Bars-1)
& && &if (High&=High[i+1] && Low&=Low[i+1]) { cnt++; } //skip inside Bar
& && &H3=MathMax(H3,High);
& && &L3=MathMin(L3,Low);
& &L3=L3-_3bartrailpips*P
& &H3=H3+_3bartrailpips*P
& &double stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*P
& &if (L3&=Bid-stlev) L3=Bid-
& &if (H3&=Ask+stlev) H3=Ask+
& &for (i = 0; i & OrdersTotal(); i++) {
& && &if ( OrderSelect (i, SELECT_BY_POS) == false )&&
& && &if ( OrderSymbol() != Symbol() || OrderMagicNumber() != expertId )&&
& && &if ( OrderType() == OP_BUY ) {
& && && &StopLoss3 = L3;
& && && &if ( StopLoss3 & OrderStopLoss() ) {
& && && && && &bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss3, OrderTakeProfit(), 0, White);
& && & if (!bres) Print(&Error Modifying BUY order : &,ErrorDescription(GetLastError()));
& && && &}
& && &if ( OrderType() == OP_SELL ) {
& && && &StopLoss3 = H3;
& && && &if ( StopLoss3 & OrderStopLoss() || OrderStopLoss()&Point ) {
& && && && && &bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss3, OrderTakeProfit(), 0, Gold);
& && & if (!bres) Print(&Error Modifying SELL order : &,ErrorDescription(GetLastError()));
& && && &}
其中一个买 ( PA看法是 2A后 的急速回折升)
一个马上买(是?)
NKEUR20143-5.png (57.89 KB, 下载次数: 0)
EA 自动进场样子
15:13 上传
另外一个是模拟闪电取向
NKEUR SEL.png (50.36 KB, 下载次数: 0)
15:33 上传
NKEUR.png (51.22 KB, 下载次数: 0)
15:33 上传
本帖最后由 十分智能 于
15:41 编辑
这个 PA 的 EA 需要修改
改的内容 可以在贴
的72楼起追踪:
有兴趣者请看
将会有一个不错的裸K加形态的PA
本帖最后由 十分智能 于
15:45 编辑
这个 PA 的 EA 需要修改
(46.56 KB, 下载次数: 6)
15:44 上传
点击文件名下载附件
EA PA下载积分: 金钱 -1 元宝
改的内容 可以在贴
的72楼起追踪:
有兴趣者请看
良好的资金 曲线, 寒山子 论 投资:
丈夫莫守困,无钱须经纪。养得一牸牛,生得五犊子。
  犊子又生儿,积数无穷已。寄语陶朱公,富与君相似。
这么多文件,怎么用好呢。十分智能你用这个效果怎么样?
多谢了,收藏这个来学习。
mark一下,等有时间了慢慢研究
Powered by}

我要回帖

更多关于 圣杯印记有什么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信