设为首页收藏本站

 找回密码
 注册
查看: 15772|回复: 21
打印 上一主题 下一主题

求助管理员或编系统高手把下面公式移植成TB公式 [复制链接]

Rank: 2

精华
0
UID
4107
积分
112
帖子
15
主题
4
阅读权限
30
注册时间
2009-4-13
最后登录
2009-9-3
跳转到指定楼层
1#
发表于 2009-7-30 18:15:25 |只看该作者 |倒序浏览
目前世界上最先进的交易系统--------全脑交易(Brain Trading)系统
本部分设定了隐藏,您已回复过了,以下是隐藏的内容如何使用全脑交易(Brain Trading)系统
BT系统由四个主要指标:BT1, BT1Stop, BT2, BT2Stop。
         四个辅助指标:BT1Sig, BT1StopLine, BT2Sig, BT2StopLine。
重要前提!BT系统的优先指标组合如下:
BT1,BT1Sig,BT1Stop,BT1StopLine
BT2,BT2Sig,BT2Stop,BT2StopLine
BT1,BT1Sig,BT1Stop,BT1StopLine, BT2Sig,BT2Stop,BT2StopLine(无BT2)

BT1和BT2 是市场方向指标。上升趋势柱线蓝色,下跌趋势柱线红色,平衡市柱线绿色。这两个指标可以用于任何时间图。
重要提示:不要将BT1和BT2同时用于同一张图上。BT1作为主要指标,BT2在另一张图上作为确认指标。

BT1Sig和BT2Sig是半系统指标,与时间确认的BT交易规则组合而产生买卖信号。
BT1Sig在条件具备时产生一个蓝色或洋红色大圆点买卖信号,而该圆点值就是原始止损位。
BT2Sig在条件具备时产生一个蓝色或红色的箭头买卖信号,而该箭头值就是原始止损位。

BT1Stop和BT2Stop是趋势止损指标,显示为各色小点。
重要提示:BT1StopLine和BT2StopLine意义与BT1Stop和BT2Stop完全相同,只是表现形式为线形,可用可不用。
BT1Stop和BT2Stop首先必须要确认了趋势才会出现。所以有时看不到这种信号。
蓝色小点表示:1)市场正处于上升趋势。 2)这些点位就是做多的保护性止损位。
红色小点表示:1)市场正处于下跌趋势。 2)这些点位就是做空的保护性止损位。

很多研究显示,知道如何离市比如何入市更难。如果知道如何离市的话,就可以在任何时候入市。BT1Stop和BT2Stop是由市场自身的价格的精确而客观地确认的。你可以用历史数据测试。可以用BT1Stop和BT2Stop入市,并用其作为跟踪止损。

BT1Stop和BT2Stop的作用相似,但是其趋势定义和止损的计算有区别。BT2Stop比BT1Stop敏感30%。建议使用BT1Stop在当前时间图上入市,而用BT2Stop在15分钟以下的小时间结构图中作为跟踪止损。
同时也建议在30分钟以上的大时间图中使用BT1Stop作为入出市工具,而只用BT2Stop作为不明市场的辨认器。
在出现矛盾的止损信号时不要交易。等待BT1Stop和BT2Stop出现在柱线的同侧。如果看到太多的信号时,就把图变换到更大的时间图上,此时就用BT1Stop作为信号,而BT2Stop作为止损。我们有着无风险的指标使用规则:看到BT1Stop点时就在该根K线上买卖!!!(但是建议在30分钟以上图中使用此规则)。

BT系统止损的美妙之处就在于,止损失是随着市场变化的。止损值是由市场价格客观地决定的。当你一旦入市,这些止损信号就连续地指出最佳止损点,用来来锁定利润,从而一步一步地获取最大利润。

BT系统的入市规则
A.        趋势Stop入市
此方法适用于日内、短线及长线波段交易。
        打开两张图:一张用BT1,BT1Sig,BT1Stop,BT1StopLine
               一张用BT2,BT2Sig,BT2Stop,BT2StopLine
        第一张图上显示大蓝点和蓝K线,而第二根K线还是蓝色加小蓝点,市价买入。
        第一张图上显示大粉点和粉K线,而第二根K线还是粉色加小粉点,市价卖出。
        这种入市胜率极高,特别是对波段交易者而言,因为有四个单独计算的指标来确认:BT1、BT2、BT1Stop、BT2Stop。
        对于那些寻求趋势早期阶段的人来说,在出现蓝色柱线和BT1Stop点时市价买入,在出现粉色柱线和粉色BT1Stop点时市价卖出。

B.        短线和长线结合入市法
        对于日内交易,如果小时图和30分钟图柱线颜色相同,15分钟图的柱线变成与小时图和30分钟图的K线同色,而此时5分钟图的BT1Stop点向上(或者向下)移动一档,就可以入市了。
       对于采用日收市数据的波段交易,则只做与周柱线相同方向的交易。如果周柱线为蓝色,而日柱线为绿色或红色,则需等待日柱线变蓝时才可入多。另外,如果周柱线和日柱线都为蓝色,则需要等待BT1Stop点向上移动一步时才可入多。反向交易同理。

C. 低风险入市
        BT系统的一个特色就是永远也不会错过大的趋势。当一个大的趋势在运行当中,BT系统的止损点可以很好地保障利润,并且一直处于趋势当中,知道趋势何时结束。
如果想要测试,打开一张图就可以发现BT系统在过去的大趋势中是如何运行的。如果你的参数安装适当,你也会得到同样的结论,即,BT永远也不会失去任何一个大趋势。了解到这一事实,你就可以大大提高操作的杠杆能力。
       低风险入市的最佳时机是在趋势刚刚产生时。例如,在一个上升趋势中,随着市场上行,你可以看到蓝色柱线和蓝色的点。突然,市场反走,接近了蓝色和浅蓝色的止损点,但是柱线仍然是蓝色。此时一旦发现又继续上行,就可以采用低风险入市法入市,或者增加一手多单。由于75%的BT系统止损都不会被触及,你的胜率极高。
使用BT系统止损作为保护性止损。用此法入市风险大大减小。许多时候,你甚至可以见到日内交易仅有200美元的止损,而波段交易则可能会仅有500美元的止损。
反过来讲,下跌趋势也同样。

Rank: 2

精华
0
UID
4107
积分
112
帖子
15
主题
4
阅读权限
30
注册时间
2009-4-13
最后登录
2009-9-3
2#
发表于 2009-7-30 18:18:28 |只看该作者

第二部分

日内交易,建议采用30分钟或小时图。
        波段交易,建议采用周图、日图或4小时图,直接用BT系统止损点。
        如果失去在趋势早期阶段入市的机会,还可以用低风险入市法,并且根据BT1Stop和BT2Stop的点设置止损。如果你的早期单子有了一些浮赢,你还可以在此点以小风险加码。事实上,这没有什么风险,以为你的第一个单子的浮赢已经掩盖了第二个单子的微小止损。请记住,一个好的交易人会利用方向和持续的优势。趋势在没有启动之前并不是一个趋势。要跟着市场行动,而不要猜测市场会怎样行动。
在浅蓝色点向上移动并且价格距离这个浅蓝色止损点较近的时候入市买进,反过来说,在粉色点向下移动并且价格接近这个粉色止损点较近的时候卖出。此法的特色就是风险很小,你很快就会知道你的入市是对了还是错了。

D.        BT系统的信号
        BT1Sig和BT2Sig产生的买卖信号只是BT系统规则的一部分。要取得最佳交易效果,与 BT1Sig或BT2Sig同时使用其它BT系统指标来确认交易。
        在一个较长时间图(30分钟以上图)中,BT系统大浅蓝点或蓝箭头,这就是一个买入的前提条件。此时转入更小时间图,等待回调以便入市。如果你使用日收盘数据,那么次日BT系统给出大浅蓝点或蓝箭头时买入,你可以在市场往这些点回调时拿到好价格。
       在一个较长时间图(30分钟以上图)中出现BT系统大粉点或红箭头,这就是一个卖出的前提条件。此时转入较小时间图,等待反弹以便入市。如果你使用日收盘数据,那么次日BT系统给出大粉点或红箭头时卖出,你可以在市场往这些点回调时拿到好价格。这就是过滤BT系统指标假信号的方法。
       入市点也受到时间结构的影响。时间结构越大,准确度越高。时间结构也控制了交易的频率。如果你采用日收盘数据,你就可以用日K线图进行波段交易。如果你有时间跟踪市场,可以使用60-120分钟图来找到更好的价位。15-30分钟图一般是做日内交易来决定方向的。
总的来说,用大时间图来决定方向,用小时间图来找寻入市点。
分别地讲,出现以下条件时买进:
1.        当前大时间图柱线是蓝色;
2.        当前小时间图柱线由绿色或红色刚刚转变成蓝色;
3.        前几根K线的回调没有击破BT系统的止损;
4.        小时间图的柱线的低点高于前一根柱线的低点;
5.        用RSI或其他你所钟爱的震荡指标来确认;
6.        在前一根柱线的低点之下设止损。
反之亦然。
例如,日内交易,可以用小时图指引方向,30分钟图入出市。等待市场回调但不能击破BT系统的止损。
可以利用迟到的数据在波段交易中回调介入。此法在波段交易中有很大的优势得到更好的价位。用较长时间图(如4小时图)来决定方向,用较短时间图(如小时图或30分钟图)来决定入市点。例如,如果4小时图柱线是蓝色,就准备买入,但是得等待1小时或30分钟图的柱线变红。推算市场的正常回调的持续时间。如果正常回调在30分钟图上应该是4根柱线,那就等4根红色柱线,而如果第4根柱线没有打破BT系统的止损点,则市价买入。由此你就获得了好的价格,并且因为市场在正常回调期间没触发止损而处于有利的市场位置。

回调还是反转?
当前的拉回是回调还是反转?这是决定是否入市的关键。30分钟图上BT1Stop可以帮助辨认。在15分钟图形成了一个Pivot低点后,转回30分钟图看其BT1Stop是否还继续存在。如果30分钟图的BT1Stop消失了,市场很可能反转,而如果还继续存在,则可能是回调。要测试这个现象,打开带有BT1Stop的30分钟图,看看趋势早期阶段,就可以发现BT1Stop在区分反转还是回调方面表现出色。何种时间框架最适合市场检验是反转还是回调?简单的测试就行。在30分钟图历史走势上变换时间结构,察看趋势早期阶段,就可以发现哪个时间图最适合分辨回调还是反转。

使用BT系统的确认规则
知道如何持仓比知道如何入市更难。
       是否继续持有?
        是否现在退出或等到其它什么时候?
        是否现在获利走人,还是再等会儿?
        是否现在就把持仓单打开,或何时打开?
在我们入市后的任何时刻,这些问题都在无时不刻地困扰着我们。我们希望听到直接从市场传来的答案。这里每一个BT系统指标都是单独计算得出的。有时候在拐点附近或者在盘整市道中,可以看到很多互相矛盾的信号,比如蓝色柱线上方出现红色止损点,或者红色柱线没带有任何止损点,或者在同一根柱线上下方出现红蓝止损点等。在真实交易中,时间代表一切。我们无法等待这一切指标来互相确认之后才入市。因此,“入市规则”与“确认规则”有所不同。你需要根据上面所述的“入市规则”带有点风险入市。一旦建仓,下面就要严密监视指标的确认。如果在实际时间内没有得到后面所述的确认规则之一的确认,就应该考虑退出市场了。什么叫做实际时间?这根据不同的市场、根据是日内交易还是波段交易、根据时间框架等而有所不同。你需要自己来确定,尽管一般最佳时限是4-8根柱线。即使在得到长期图确认的短期图上有了买入信号,也不可在波浪高点或长期阻力线附近买入。
对于现有持仓有4个简单的确认规则:
1.        趋势与趋势止损确认:如果持有买单,关注蓝色柱线下方的蓝色点,如持有空单,关注红色K线上方的红色点。这对此确认规则至关重要。
2.        短期图与长期图确认:短期为30分钟图。长期为1小时图。上升趋势伊始,在小时图仍然是红色的时候,30分钟图首先变蓝。如果1小时图开始变蓝,这就是长期K线对上升趋势的确认。反之亦然。可用习惯的震荡指标,如MACD确认。
3.        趋势止损移动确认:持有买单,蓝色点上移确认。持卖单,红点下移确认。
4.        相关市场间相互确认:例如与瑞郎关联最大的就是欧元和英镑。不必等待相关市场都显示同色才入市。但是。如果交易方向正确,应该能很快从其它市场得到确认。

入市后市场转为盘整怎么办?
当你看到绿色柱线时,就关注止损点的情况。绿色柱线表示盘整市道。我么并不知道市场将往哪里去。可以有两种方式对待:
1.        有一些浮赢,或者至少持平时,尝试用BT止损来持仓。然后看长时间K线来帮助确认市场的方向。
2.        无利时,很简单,退出市场。
就盈利而言,你不必成为这些规则的专家。开始使用一个最适合你的一条规则,并且集中精力仅使用这一条规则。建立你对它的信心。然后再依次增加一条规则。一旦你掌握了能够使你获胜的规则,你就可以不断地重复。

如何避免盘整市?
日内交易的关键是知道何时不能交易。BT系统及全部指标能够显示盘整市道。
如何定义盘整市?如果前几根柱线不断变换颜色,价格处于小区域,趋势止损信号混杂,这就是盘整市。要在盘整市中辨认出重要的趋势变化,需使用长时间K线。例如,如果你平时常用30分钟图来操作日内交易,那么在盘整市时就应该使用1小时图(不能再长了)。
当盘整市结束时,你会发现市场突然击破静态的窄幅区域,打破BT1Stop和BT2Stop。这就表示市场苏醒了。跟着市场突破的方向走。在你入市单成交后,立即根据BT1Stop和BT2Stop来设定保护性止损。
因为红色点和蓝色点是由市场自身的价格引发的,所以价格向突破方向行进的概率很大。
以下是有关规则;
1.        柱线为绿色时不要交易。有时会出现几个合适的信号,但柱线还是绿色。
2.        同时出现矛盾的BT止损信号时不要交易。
3.        大柱线对立时不要交易。
4.        柱线颜色不断变化时不要交易。
5.        不要在波动小的时段交易。

使用道具 举报

Rank: 2

精华
0
UID
4107
积分
112
帖子
15
主题
4
阅读权限
30
注册时间
2009-4-13
最后登录
2009-9-3
3#
发表于 2009-7-30 18:19:16 |只看该作者

第三部分

交易的一些细节
这里作介绍的交易细节意于提高你的胜利可能性。任何交易系统,根据市场的不同、所使用的确认条件不同、使用的时间框架的不同等,而都有其一定的局限性。你需要在你所交易的市场中对这些规则系统进行测试之后,才能将其投入实际交易。根据不同市场的特点来使用BT交易系统是十分重要的。
BT系统对日内交易和波段交易都很理想。BT系统帮助你把焦点集中于市场最根本的信息上。BT系统的指标指出了出市场的方向,告诉你趋势和止损,提供出的买卖信号。使用BT系统,你可以马上接通信息流,从而知道主要趋势的变化、买卖信号、止损和市场的大数字标志。BT系统革命了交易的自然面目。人们在手头没有信息、不了解他们缺失了什么的状况下生活了这么长时间了。而有了BT系统,你就拥有了甚至以前某些专业交易人士都不可想象的能力。
A.        BT1、BT1Stop、BT1Sig组合入市规则
1.        BT1、BT1Stop、BT1Sig条件
1)        BT1蓝柱线买,BT1红柱线卖。
2)        BT1Stop红点买,BT1Stop蓝点卖。
3)        BT1Sig大蓝点买,BT1Sig大红点卖。
2.        突破当前5-9根柱线的窄幅整理区
B.        BT2、BT2Stop、BT2Sig入市规则
1.        BT2、BT2Stop、Bt2Sig条件
1)        BT2蓝柱线买,Bt2红柱线卖。
2)        BT2Stop蓝点买,Bt2Stop红点卖。
3)        BT2Sig大蓝点买,BT2Sig大红点卖
2.        突破当前4-6根柱线的窄幅整理区
C.        BT1、BT1Stop、BT1Sig、BT2、BT2Stop、BT2Sig入市规则
1.        BT1、BT1Stop、BT1Sig、BT2Stop、BT2Sig条件
1)        BT1蓝柱线买,BT1红柱线卖
2)        BT1Stop蓝点买,BT2Stop蓝点买;BT1Stop红点卖,BT2Stop红点卖
3)        BT1Sig大蓝点和BT2Sig蓝箭头买,BT1Sig大红点和BT2Sig红箭头卖
4)        在出现矛盾信号时不要交易。
2.        突破当前4-6根柱线的窄幅整理区
注释:如果刚使用,分不清楚不同的指标,可以每一种指标作一个图。

1.        由于在你到达重要的支撑/阻力位之前,BT1/1Stop/1Sigzai指引相对短期的趋势,在有多仓时,只要柱线一直是蓝色,就努力持有。或者有空单时,只要柱线一直是红色,也应继续持有空单。当看到绿色柱线时,就缩紧止损。
2.        侧重于在出现同色K线,即,在一根大的红柱线之后,出现数条绿线,然后又出现红柱线。此时如果该红柱线击穿前期的支撑/阻力,那么就意义重大。蓝柱线也同此。
3.        侧重于在一个快速移动的市场中形成的强势形态后的BT1/1Stop/1Sig信号。例如,在双顶后的BT1/1Stop/1Sig信号。
4.        侧重于最初的BT1Stop信号(比如上升趋势中前几个上移点,或者下跌趋势中前期的几个下移的点),而略为忽略一系列BT1Stop点的后期部分的点。
5.        由于BT1Stop的点十分精确,请不要与这些点的方向逆势下单,除非出现了一个强劲的走势(即在重要支撑/阻力处出现了巨量和形态的反应)。
6.        在长期窄幅横盘期的尾声采取积极的交易(平走后期出现的BT1/1Stop/1Sig组合信号最佳),而在市场重大动作之后则采取保守的交易策略。
7.        在上午和下午时段(相当于欧亚时段“14:00—18:00”和欧美时段20:00—24:00—自注)交易量上升时采取极为激进的交易。而在午饭时间,特别是在出现了重大价格运动之后,则应采取相对保守的策略。
8.        一般来说上升趋势一浪高过一浪,下跌趋势一波低过一波。
9.        交易量可以符合一些潜在的趋势。在一组柱线中价升量升、价跌量减是上升趋势。但是只有单独一根柱线带有相对大量则可能误导人,因为最终结果并不确定。如果突破时有量的支持,而且后续发展也有量的支持就较为理想。
10.        不要怕丢掉某次机会,因为前方机会有的是。你需要在最佳时间入市。你也需要控制情绪、制定计划,执行纪律。
11.        如果你感到受到市场价格运动驱使(而不是按照自己的计划)去交易时,千万不要交易。如果短时间内出现连续失利就要停止交易(冷静下来),如果量没有与趋势发展配合就要停止交易。没有看清趋势不要交易。整理区突破时没有BT1/1Stop/1Sig组合信号时不要交易。

基本退市规则
A.        在主要支撑/阻力线上获利退出。对于日内交易而言,在上午(欧亚)时段,昨日高、低、中、收都可能是今日的支撑或阻力。在下午(欧美)时段,上午的高、低、中都可能成为支撑或阻力。对于波段交易来说,上周或月的支撑和阻力都是退市的好位置。(周月PIVOT)
B.        一半退出,让另一半自己走。可以在支撑/阻力线退出一半仓位,而让另一半自行发展。此法首先保持不亏损,然后才让利润增长。一般来说,你可以拿到一个好价位,并持仓更久,而且更加客观。
C.        当市场进入调整而无利润时退场。入市后,如果市场盘整3-4根柱线,还没有利润,甚至略为亏损,退出。
D.        跟踪止损。这是许多专业交易人经常选择使用的有效退市策略。它通过不断调整止损来跟踪市场的发展。如果市场继续趋势发展,此法就会不断锁定更多的利润。

使用道具 举报

Rank: 4

精华
0
UID
2423
积分
402
帖子
17
主题
6
阅读权限
50
注册时间
2008-9-22
最后登录
2019-3-30
4#
发表于 2009-7-30 21:07:39 |只看该作者
快快快快快快快快快含含糊糊

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
53
积分
765
帖子
121
主题
31
阅读权限
60
注册时间
2007-7-26
最后登录
2011-5-11
5#
发表于 2009-8-3 20:10:26 |只看该作者
广告帖?
BT系统由四个主要指标:BT1, BT1Stop, BT2, BT2Stop。
         四个辅助指标:BT1Sig, BT1StopLine, BT2Sig, BT2StopLine
没有具体说明指标的算法,人家怎么帮?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
6#
发表于 2009-8-4 09:18:37 |只看该作者

回复 3# 83857729 的帖子

请简易说明

使用道具 举报

Rank: 1

精华
0
UID
6021
积分
47
帖子
14
主题
3
阅读权限
10
注册时间
2009-11-30
最后登录
2010-2-22
7#
发表于 2009-12-18 00:38:25 |只看该作者
呵呵,已经有人在请教这个问题了。
这个程序时这样的:

使用道具 举报

Rank: 1

精华
0
UID
6021
积分
47
帖子
14
主题
3
阅读权限
10
注册时间
2009-11-30
最后登录
2010-2-22
8#
发表于 2009-12-18 00:38:39 |只看该作者
//+------------------------------------------------------------------+
//|                                                  BrainTrend2.mq4 |
//|                                                www.forex-tsd.com |
//|                                                Nick Bilak        |
//+------------------------------------------------------------------+
#property copyright "BrainTrading Inc."
#property link      "www.forex-tsd.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int       NumBars=500;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double spread;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexArrow(0,233);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexArrow(1,234);
   spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
        //----
   
        int       artp=7;
        double    dartp=7.0;
        double    cecf=0.7;
        int       satb=0;
        int       Shift=0;
        bool      river=True;
        double    Emaxtra=0;
        double    widcha=0;
        double    TR=0;
        double    Values[100];
        int       glava=0;
        double    ATR=0;
        int       J=0;
        double    Weight=0;
        double    r=0;
        double    r1=0;
        int       p=0;
        int       Curr=0;
        double    Range1=0;
        double    s=2;
        double    f=10;
        double    val1=0;
        double    val2=0;
        double    h11=0;
        double    h12=0;
        double    h13=0;
        double    const=0;
        double    orig=0;
        double    st=0;
        double    h2=0;
        double    h1=0;
        double    h10=0;
        double    sxs=0;
        double    sms=0;
        double    temp=0;
        double    h5=0;
        double    r1s=0;
        double    r2s=0;
        double    r3s=0;
        double    r4s=0;
        double    pt=0;
        double    pts=0;
        double    r2=0;
        double    r3=0;
        double    r4=0;
        double    tt=0;


   if( Bars < NumBars) satb = Bars; else satb = NumBars; //如果图上的k线个数小于规定的,就按图上的走,如果大于,则按给定的计算
   if( Close[satb - 2] > Close[satb - 1]) river = True; else river = False;// 当
   Emaxtra = Close[satb - 2];//将Emaxtra的值用k线-2的方式赋予
   Shift=satb-3;//用k线-3来赋值给计算
   while(Shift>=0)      //开始循环
   {//while开始
      TR = spread+ High[Shift] - Low[Shift]; //最高价-最低价+点差。 得出净值
      if( MathAbs(spread+ High[Shift] - Close[Shift + 1]) > TR ) TR = MathAbs(spread+ High[Shift] - Close[Shift + 1]);//
      if( MathAbs(Low[Shift] - Close[Shift + 1]) > TR)  TR = MathAbs(Low[Shift] - Close[Shift + 1]);
      if (Shift == satb - 3 )
       {
         for(J=0;Shift<=artp-1;J++)
          {
                 Values[J] = TR;
            }
       }//if结束   
                Values[glava] = TR;
      ATR = 0;
      Weight = artp;
      Curr = glava;
      for (J = 0;J<=artp - 1;J++)
         {
            ATR += Values[Curr] * Weight;
            Weight -= 1.0;
            Curr--;
         if (Curr == -1) Curr = artp - 1;
         }
      ATR = 2.0 * ATR / (dartp * (dartp + 1.0));
      glava++;
      if (glava == artp) glava = 0;
      widcha = cecf * ATR;
      if (river && Low[Shift] < Emaxtra - widcha)
         {
            river = False;
            Emaxtra = spread+ High[Shift];
         }
      if (!river && spread+ High[Shift] > Emaxtra + widcha)
         {
            river = True;
            Emaxtra = Low[Shift];
         }
      if (river && Low[Shift] > Emaxtra)  
         {
            Emaxtra = Low[Shift];
         }
      if (!river && spread+ High[Shift] < Emaxtra )
       {
         Emaxtra = spread+ High[Shift];
       }
         Range1 = iATR(NULL,0,10,Shift);
         val1 = 0;
         val2 = 0;
      if (river)
       {
         if (p != 1) r1 = Low[Shift] - Range1 * s / 3.0;
         if (p == 1) r1 = -1.0;
         if (r1 > 0)
            {
               val1 = r1;
               val2 = 0;
            }
            else
               {
                  val1 = 0;
                  val2 = 0;
               }
         ExtMapBuffer1[Shift]=val1;
         p = 1;
        }
      
      else {
         if (p != 2) r1 = spread+ High[Shift] + Range1 * s / 3.0;
         if (p == 2) r1 = -1.0;
         if (r1 > 0) {
            val1 = 0;
            val2 = r1;
         } else {
            val1 = 0;
            val2 = 0;
         }
         ExtMapBuffer2[Shift]=val2;
         p = 2;
      }
      Shift--;
   }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

使用道具 举报

Rank: 1

精华
0
UID
6021
积分
47
帖子
14
主题
3
阅读权限
10
注册时间
2009-11-30
最后登录
2010-2-22
9#
发表于 2009-12-18 01:10:16 |只看该作者
//+------------------------------------------------------------------+
//|                                                  BrainTrend2.mq4 |
//|                                                www.forex-tsd.com |
//|                                                Nick Bilak        |
//+------------------------------------------------------------------+
#property copyright "BrainTrading Inc."
#property link      "www.forex-tsd.com"

#property indicator_chart_window  //在主图上显示
#property indicator_buffers 2     //定义了两个数组
#property indicator_color1 Blue   //定义了两个颜色 第一个是Blue,这个对数组1
#property indicator_color2 Red     //定义了两个颜色 第二个是Red,这个对数组2
//---- input parameters
extern int       NumBars=500;  //定义读取k线的个数。这里是算500根
//---- buffers
double ExtMapBuffer1[];//定义数组
double ExtMapBuffer2[];//定义数组
double spread;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);  //画箭头函数
   SetIndexBuffer(0,ExtMapBuffer1);//箭头条件
   SetIndexArrow(0,233);  //箭头样式
   
   SetIndexStyle(1,DRAW_ARROW);//画箭头函数
   SetIndexBuffer(1,ExtMapBuffer2);//箭头条件
   SetIndexArrow(1,234);//箭头样式
   
   spread=MarketInfo(Symbol(),MODE_SPREAD)*Point; //由于这个指标是用于外汇的,所以有个点差的概念,也可以不用理会这个参数
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted(); //IndicatorCounted() 是系统函数,用于返回已经计算过的K线,不过,这个指标好像没有用到这个东西
        //----
   //下面是定义了一堆参数
        int       artp=7;
        double    dartp=7.0;
        double    cecf=0.7;
        int       satb=0;
        int       Shift=0;
        bool      river=True;
        double    Emaxtra=0;
        double    widcha=0;
        double    TR=0;
        double    Values[100];
        int       glava=0;
        double    ATR=0;
        int       J=0;
        double    Weight=0;
        double    r=0;
        double    r1=0;
        int       p=0;
        int       Curr=0;
        double    Range1=0;
        double    s=2;
        double    f=10;
        double    val1=0;
        double    val2=0;
        double    h11=0;
        double    h12=0;
        double    h13=0;
        double    const=0;
        double    orig=0;
        double    st=0;
        double    h2=0;
        double    h1=0;
        double    h10=0;
        double    sxs=0;
        double    sms=0;
        double    temp=0;
        double    h5=0;
        double    r1s=0;
        double    r2s=0;
        double    r3s=0;
        double    r4s=0;
        double    pt=0;
        double    pts=0;
        double    r2=0;
        double    r3=0;
        double    r4=0;
        double    tt=0;


   if( Bars < NumBars) satb = Bars; else satb = NumBars; //其中 Bars 是系统函数,用于返回K线个数。  如果图上的k线个数小于规定的,就按图上的走,如果大于,则按给定的计算
   if( Close[satb - 2] > Close[satb - 1]) river = True; else river = False;// Close 是系统函数,用于返回k线的收盘价格。True是真假值。   If  else 是语法。下同
   Emaxtra = Close[satb - 2];//系统关键字: Close
   Shift=satb-3;//
   while(Shift>=0)      //while 循环
   {//while开始
      TR = spread+ High[Shift] - Low[Shift]; //系统关键字High  Low
      if( MathAbs(spread+ High[Shift] - Close[Shift + 1]) > TR ) TR = MathAbs(spread+ High[Shift] - Close[Shift + 1]);// 系统函数MathAbs() 功能求绝对值  High,Close 是系统关键字 下同
      if( MathAbs(Low[Shift] - Close[Shift + 1]) > TR)  TR = MathAbs(Low[Shift] - Close[Shift + 1]);
      if (Shift == satb - 3 ) //if条件
       {
         for(J=0;Shift<=artp-1;J++)
          {
                 Values[J] = TR;
            }
       }//if结束   
                Values[glava] = TR;
      ATR = 0;
      Weight = artp;
      Curr = glava;
      for (J = 0;J<=artp - 1;J++) //for关键字
         {
            ATR += Values[Curr] * Weight;
            Weight -= 1.0;
            Curr--;
         if (Curr == -1) Curr = artp - 1;//if
         }
      ATR = 2.0 * ATR / (dartp * (dartp + 1.0));
      glava++;
      if (glava == artp) glava = 0;//if
      widcha = cecf * ATR;
      if (river && Low[Shift] < Emaxtra - widcha) //Low 关键字
         {
            river = False;
            Emaxtra = spread+ High[Shift];//High 关键字
         }
      if (!river && spread+ High[Shift] > Emaxtra + widcha) //High 关键字
         {
            river = True;
            Emaxtra = Low[Shift]; //low 关键字
         }
      if (river && Low[Shift] > Emaxtra)  //low 关键字
         {
            Emaxtra = Low[Shift];//low 关键字
         }
      if (!river && spread+ High[Shift] < Emaxtra ) //High 关键字
       {
         Emaxtra = spread+ High[Shift]; //High 关键字
       }
         Range1 = iATR(NULL,0,10,Shift);//iATR  系统函数 下面是帮助文档
         /*double iATR( string symbol, int timeframe, int period, int shift)
            计算平均真实范围的指标并且返回它的值。
            参量:
            symbol   -   计算指标数据上的货币对名称. NULL表示当前货币对. 相当于期货的当前合约
            timeframe   -   时间周期。 可以时间周期列举任意值. 0表示当前图表的时间周期.   相当于用了那个时间周期,如1,5分钟等
            period   -   计算平均周期。
            shift   -   从显示缓冲采取的值的索引(转移相对当前柱特定相当数量期间前)。

      */
         
         
         val1 = 0;
         val2 = 0;
      if (river)//if关键字
       {
         if (p != 1) r1 = Low[Shift] - Range1 * s / 3.0;//if Low关键字
         if (p == 1) r1 = -1.0;//if 关键字
         if (r1 > 0)//if 关键字
            {
               val1 = r1;
               val2 = 0;
            }
            else//else关键字
               {
                  val1 = 0;
                  val2 = 0;
               }
         ExtMapBuffer1[Shift]=val1;
         p = 1;
        }
      
      else {//else关键字
         if (p != 2) r1 = spread+ High[Shift] + Range1 * s / 3.0;//if  High 关键字
         if (p == 2) r1 = -1.0; //if关键字
         if (r1 > 0) {  //if关键字
            val1 = 0;
            val2 = r1;
         } else {    //else关键字
            val1 = 0;
            val2 = 0;
         }
         ExtMapBuffer2[Shift]=val2;
         p = 2;
      }
      Shift--;
   }
   
//----
   return(0);//相当于end
  }
//+------------------------------------------------------------------+

使用道具 举报

Rank: 1

精华
0
UID
6021
积分
47
帖子
14
主题
3
阅读权限
10
注册时间
2009-11-30
最后登录
2010-2-22
10#
发表于 2009-12-18 01:10:49 |只看该作者
这是我写的注释,希望楼主能把这个编写成TB的指标。:)

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-2 18:04

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部