查看: 1270|回复: 12

[MT4指标] mt4通道修改版

[复制链接]
发表于 2014-4-11 19:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
mt4通道修改版
基于类似的MetaTrader通道的原则/ /设计
/ / LSQ线拟合的样本数。
/ /该趋势线是在合适的引导点;
/ /乐队的计算有所不同,检查下面的数学和适应
/ /你自己的需要适当
/ /也点估计是由几何平均值给出
/ / MathPow(HCCC,.025)(见功能“get_avg」一节),而不是
/ /更标准的估计。
/ /这是计算相当密集
GRFLeadingEdge.jpg

  1. #property copyright "Copyleft ? 2007, GammaRatForex"
  2. #property link      "http://www.gammarat.com/Forex/"
  3. //design based on the principles similar to the MetaTrader STD Channel
  4. // LSQ line fitting to the a number of samples.
  5. // The trendline is the leading point in the fit;
  6. // the bands are calculated somewhat differently, check the math below and adapt to
  7. // your own needs as appropriate
  8. // also the point estimate is given by the geometric mean
  9. // MathPow(HCCC,.025) (see function "get_avg" below) rather than
  10. // more standard estimates.
  11. // It's computationally fairly intensive
  12. //
  13. //#property indicator_separate_window
  14. //#property indicator_minimum 0
  15. //#property indicator_maximum 100
  16. #property indicator_chart_window
  17. #property indicator_buffers 5
  18. #property indicator_color1 Aqua
  19. #property indicator_color2 Aqua
  20. #property indicator_color3 Aqua
  21. #property indicator_color4 Red
  22. #property indicator_color5 Red
  23. #property indicator_style1 0
  24. #property indicator_style2 2
  25. #property indicator_style3 2
  26. #property indicator_style4 2
  27. #property indicator_style5 2

  28. //---- input parameters
  29. extern int  Samples=60;
  30. extern int  LookAhead = 0;
  31. extern double StdLevel1 = 2;
  32. extern double  StdLevel2 =4.;
  33. //---- buffers
  34. double LeadingEdgeBuffer[];
  35. double LeadingEdgeBufferPlus1[];
  36. double LeadingEdgeBufferNeg1[];
  37. double LeadingEdgeBufferPlus2[];
  38. double LeadingEdgeBufferNeg2[];


  39. //+------------------------------------------------------------------+
  40. //| Custom indicator initialization function                         |
  41. //+------------------------------------------------------------------+
  42. int init()
  43.   {
  44. //---- indicators
  45.    if(LookAhead <0)LookAhead=0;
  46.    SetIndexStyle(0,DRAW_LINE);
  47.    SetIndexBuffer(0,LeadingEdgeBuffer);
  48.    SetIndexShift(0,LookAhead);
  49.    SetIndexDrawBegin(0,LookAhead+Samples+1);
  50.    SetIndexLabel(0,"LeadingEdge Trend");
  51.    if(MathAbs(StdLevel1) > 0) {
  52.       SetIndexStyle(1,DRAW_LINE);
  53.       SetIndexBuffer(1,LeadingEdgeBufferPlus1);
  54.       SetIndexShift(1,LookAhead);
  55.       SetIndexDrawBegin(1,LookAhead+Samples+1);
  56.       SetIndexLabel(1,"LeadingEdge +" + DoubleToStr(StdLevel1,1)  + " STD");
  57.       SetIndexStyle(2,DRAW_LINE);
  58.       SetIndexBuffer(2,LeadingEdgeBufferNeg1);
  59.       SetIndexShift(2,LookAhead);
  60.       SetIndexDrawBegin(2,LookAhead+Samples+1);
  61.       SetIndexLabel(2,"LeadingEdge -" + DoubleToStr(StdLevel1,1) + " STD");
  62.     }
  63.    if(MathAbs(StdLevel2) > 0){
  64.       SetIndexStyle(3,DRAW_LINE);
  65.       SetIndexBuffer(3,LeadingEdgeBufferPlus2);
  66.       SetIndexShift(3,LookAhead);
  67.       SetIndexDrawBegin(3,LookAhead+Samples+1);
  68.       SetIndexLabel(3,"LeadingEdge +" + DoubleToStr(StdLevel2,1) + " STD");
  69.       SetIndexStyle(4,DRAW_LINE);
  70.       SetIndexBuffer(4,LeadingEdgeBufferNeg2);
  71.       SetIndexShift(4,LookAhead);
  72.       SetIndexDrawBegin(4,LookAhead+Samples+1);
  73.       SetIndexLabel(4,"LeadingEdge -" + DoubleToStr(StdLevel2,1) + " STD");
  74.    }
  75.    
  76.    //compute();

  77. //----
  78.    return(0);
  79.   }
  80. //| Point and figure                                |
  81. //+------------------------------------------------------------------+
  82. int start()
  83. {
  84.    compute();
  85.    return(0);
  86. }
  87. int compute(){

  88.    int    i,j,counted_bars=IndicatorCounted();
  89.    static double a[2][2],b[2][2];
  90.    double base_det,c0,c1,v1,v2,alpha,beta;
  91.    static int a_loaded=0;
  92.    double s0,s1;
  93.    double c01,c11;
  94. //----
  95.    if(Bars<Samples) return(0);
  96.    if(counted_bars == Bars) return(0);
  97.    if(a_loaded==0){
  98.       for(i=0;i<2;i++){
  99.          for(j=0;j<2;j++){
  100.             a[i][j]=0;
  101.          }
  102.       }
  103.       for(i=0;i<Samples;i++){
  104.          a[0][0] += i*i;
  105.          a[0][1] += i;
  106.          a[1][0] += i;   
  107.          a[1][1] += 1;
  108.       }   
  109.       a_loaded = 1;
  110.    }   
  111.    base_det = det2(a);
  112.    
  113.    for(i=Bars-counted_bars; i>=0;i--){
  114.       if(i >=Bars-Samples){
  115.          continue;
  116.       }
  117.       c0 = 0;
  118.       c1 = 0;
  119.       for(j=0;j<Samples;j++){
  120.          c0 = c0+j*get_avg(i+j);
  121.          c1 = c1+get_avg(i+j);
  122.       }
  123.       ArrayCopy(b,a);
  124.       b[0][0] = c0;
  125.       b[1][0] = c1;
  126.       alpha = det2(b)/base_det;
  127.       ArrayCopy(b,a);
  128.       b[0][1] = c0;
  129.       b[1][1] = c1;
  130.       beta = det2(b)/base_det;
  131.       
  132.       LeadingEdgeBuffer[i] = (alpha*(-LookAhead)+beta)*Point;
  133.       c0 = 0;
  134.       c1 = 0;
  135.       c11 =0;
  136.       c01=0;
  137.       for(j=0;j<Samples;j++){
  138.          s0 = get_avg(i+j);
  139.          s1 = j*alpha+beta;
  140.          if(s0<s1){
  141.             c0 += MathPow(s0-s1,2);
  142.             c01 += 1;
  143.          }else{
  144.             c1 += MathPow(s0-s1,2);
  145.             c11 += 1;
  146.          }   
  147.       }
  148.       if(c01 == 0) c01=1;
  149.       if(c11== 0) c11 = 1;
  150.       
  151.       c01=MathSqrt(1./(0.5/MathPow(Samples,2) +0.5/c01/c01));
  152.       c11=MathSqrt(1./(0.5/MathPow(Samples,2) +0.5/c11/c11));
  153.       //c0 = MathSqrt(c0/(Samples-1));
  154.       c0 = MathSqrt(c0/c01);//MathSqrt(c01*Samples));
  155.       //c1 = MathSqrt(c1/(Samples-1));
  156.       c1=MathSqrt(c1/c11);//MathSqrt(c11*Samples));
  157.       if(MathAbs(StdLevel1)>0){
  158.          LeadingEdgeBufferPlus1[i] = LeadingEdgeBuffer[i]+StdLevel1*c0*Point;
  159.          LeadingEdgeBufferNeg1[i] = LeadingEdgeBuffer[i]-StdLevel1*c1*Point;
  160.       }
  161.       if(MathAbs(StdLevel2)>0){   
  162.          LeadingEdgeBufferPlus2[i] = LeadingEdgeBuffer[i]+StdLevel2*c0*Point;
  163.          LeadingEdgeBufferNeg2[i] = LeadingEdgeBuffer[i]-StdLevel2*c1*Point;
  164.       }   

  165.    }
  166. }
  167. double get_avg(int k){
  168.    return(MathPow((High[k]*Low[k]*Close[k]*Close[k]),1/4.)/Point);
  169. }        
  170. double det2(double a[][]){
  171.    
  172.    return (a[0][0]*a[1][1]-a[1][0]*a[0][1]);
  173. }
  174. //+------------------------------------------------------------------+
复制代码
韬客外汇社区www.talkfx.co
回复

使用道具 举报

发表于 2015-4-20 19:56 | 显示全部楼层
缺钱,灌水赚通宝,谢谢分享!!
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-4-21 23:46 | 显示全部楼层
双布林带通道么?
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-5-26 11:17 | 显示全部楼层
看看再说
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-6-1 00:20 | 显示全部楼层
太牛了,祝贺你。
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-6-4 21:23 | 显示全部楼层
谢谢分享!!
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-6-21 16:14 | 显示全部楼层
kkkkkkkkkkkk
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-6-21 18:13 | 显示全部楼层
如果是双布林通道类型,直接添加两次就可以了
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-6-27 13:29 | 显示全部楼层
修正版的布林通道!
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2015-7-1 18:52 | 显示全部楼层
感谢分享
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2016-9-20 02:07 | 显示全部楼层
谢谢分享
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2016-9-20 22:49 | 显示全部楼层
怎么个用法呢
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

发表于 2021-1-14 08:08 | 显示全部楼层
hhhhhhhhhhhhhhhhhhhhh
韬客外汇社区www.talkfx.co
回复 支持 反对

使用道具 举报

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

本版积分规则

AXI FPMARKETS thinkmarkets XM FXPRO EXNESS tickmill 欧福 嘉盛
 
【论坛栏目】   外汇论坛    交易社区    汇市讨论    汇商动态    外汇行情    分析大咖    外汇中长线     交易大神      【友情链接】
返回顶部快速回复上一主题下一主题返回列表手机访问

论坛导航|手机版|小黑屋|反馈|联系我们 Email: [email protected]|

GMT+8, 2021-1-19 11:11 , Processed in 0.083191 second(s), 23 queries , Gzip On.

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;
2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;
3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;
4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;
5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。
投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

Copyright talkfx.com All rights reserved.