智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 1914|回复: 5

发个背离的源码,旧版的,调试可头痛死了,目前调试发现的大部分是大小写问题,请交流

[复制链接]
发表于 2014-10-19 18:32:44 | 显示全部楼层 |阅读模式
//+------------------------------------------------------------------+
//|                                                      KDJ背离预警.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
#property copyright "Copyright? 2010.Sin.Petric"
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_color3 Green
#property indicator_color4 Black
#property indicator_color5 Red
#property indicator_color6 Blue
#property indicator_level1 0
#property indicator_level2 20
#property indicator_level3 80
#property indicator_level4 100
#property indicator_width5 2
#property indicator_width6 2
//----- input parameters
extern int nPeriod=20;
extern double factor_1=0.6666666;
extern double factor_2=0.3333333;
//------ buffers
double percentK[];
double percentD[];
double percentJ[];
double RSV[];
double UpperFr[];
double LowerFr[];
int i,k,num;

//+--------------------------------------------------------------------------------------------------------------+
//| Custom indicator initialization function                                          |
//+--------------------------------------------------------------------------------------------------------------+
int init()
  {
  //IndicatorBuffers(4);
  //-----indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,percentK);
   SetIndexLabel(0,"%K");
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,percentD);
   SetIndexLabel(1,"%D");
SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,percentJ);
   SetIndexLabel(2,"%J");
   SetIndexBuffer(3,RSV);
   SetIndexBuffer(4,UpperFr);
   SetIndexBuffer(5,UpperFr);
  //
   EstIndexEmptyValue(4,0);
   EstIndexEmptyValue(5,0);
  //
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,241);
  //-----
   
  }
//+--------------------------------------------------------------------------------------------------------------+
//| Custom indicator deinitialzation function                                         |
//+--------------------------------------------------------------------------------------------------------------+
int deinit()
  {
  //------

  //-------
    return;
  }
//+--------------------------------------------------------------------------------------------------------------+
//| Custom indicator iteration function                                              |
//+---------------------------------------------------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
//-----
   
  double Ln,Hn,Cn;
//------
   i=Bars-counted_bars-1;
   num=Bars-nPeriod;

  while(i>=0)
      {
        Cn=iClose(NULL,0,i);Ln=iClose(NULL,0,i);Hn=iClose(NULL,0,i);
        for(k=0;k<nPeriod;k++)
           {
           If (Ln>iLow(NULL,0,i+k))  Ln=iLow(NULL,0,i+k);
           If(Hn<iHigh(NULL,0,i+k))  Hn=iHigh(NULL,0,i+k);
           }

          If(Hn-Ln!=0)  RSV=(Cn-Ln)/(Hn-Ln)*100;
          else  RSV=50;

          If(i>=num)
             {
              percentK=factor_1*50+factor_2*RSV;
              percentD=factor_1*50+factor_2*percentK[I];
              }
           Else
             {
              percentK=factor_1*percentK[i+1]+factor_2*RSV;
              percentD=factor_1*percentD[i+1]+factor_2*percentK[I];
             }
       percentJ=3*percentD-2*percentK;
       if(percentJ>percentK && percentJ[i+1]<=percentK[i+1]
&& percentJ[i+1]-percentJ<10)
           {
             LowerFr=percnetJ;
             Alert(TimeToStr(CurTime(),TIME_DATE | TIME_SECONDS),",",Symbol(),",周期:",period_pros(Period()),",KDJ背离,","卖出");
           }
      If(percentJ<percentK && percentJ[i+1]>=percentK[i+1]
&& percentJ-percent[i+1]<10)
         {
           UpperFr=percentJ;
           Alert(TimeToStr(CurTime(),TIME_DATE | TIME_SECONDS),",",Symbol(),",周期:",period_pros(Period()),",KDJ背离,","买入");
         }
             i--;
      }
      Return(0);
  }

  string period_pros(int per_t)
{
string alart_string="";
switch(per_t)
   {
   case 1:alart_string="M1";break;
   case 5:alart_string="M5";break;
   case 15:alart_string="M15";break;
   case 30:alart_string="M30";break;
   case 60:alart_string="H1";break;
   case 240:alart_string="H4";break;
   case 1440:alart_string="D1";break;
   case 10080:alart_string="W1";break;
   case 43200:alart_string="MN";break;
   default:break;
   }
   Return(alart_string);
}
回复

使用道具 举报

发表于 2014-10-20 20:35:10 | 显示全部楼层
源代码 附件付上来,有问题,我们解决下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-21 00:38:09 | 显示全部楼层
传上去了,能看到吗,我改了不少了,编译也通过了,好象是计算方法不对啊

KDJ背离预警.mq4

9.49 KB, 下载次数: 213

回复 支持 反对

使用道具 举报

发表于 2017-9-9 08:32:20 | 显示全部楼层
最强大MACD背离指标(带自动报警功能)
回复 支持 反对

使用道具 举报

发表于 2017-9-10 13:58:51 | 显示全部楼层
谢谢谢谢谢谢谢谢谢谢谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-10-15 05:53 , Processed in 0.037577 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表