77范文网 - 专业文章范例文档资料分享平台

MT4策略精讲:Zigzag.带解读

来源:网络收集 时间:2020-06-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

//[i]Zigzag.带解读 //指标属性设置

#property indicator_chart_window // 主窗口进行指标显示 #property indicator_buffers 1 // 指标运用到数值的个数 #property indicator_color1 Yellow // 指标显示颜色 //三个参数

extern int 跨期 = 12; // 用于设置高低点是相对与过去多少个Bars。默认是12

extern int ExtDeviation = 5; // 用于设置重新计算高低点时,与前一高低点的相对点差(默认值是5), 也就是说如果

// A)当前高点>上个高点+ 5 , 或者

// B)当前低点<上个低点 – 5的情况下,则会对之前计算过的ExtBacksteps个Bars值的高低点进行重新计算。

extern int ExtBackstep = 3; // 用于设置回退计算的Bars的个数 //指标的数值存储变量

double 之字折线组[]; // 拐点

double 选择性极高[]; // 高点的临时变量数组 double 选择性极低[]; // 低点的临时变量数组 int level = 3; // 最近已知的三个拐点 bool downloadhistory = false; // 是否第一次计算

//+-------------------------------------------------------------------------------+ int init() {

IndicatorBuffers(3); // 对于缓冲储存器分配记忆应用自定义指标计算 SetIndexStyle(0, DRAW_SECTION); // 划线的风格 为线段

SetIndexBuffer(0, 之字折线组); // 将数组之字折线组 对应到索引号为0的缓存上 SetIndexBuffer(1, 选择性极高); // 将数组选择性极高 对应到索引号为1的缓存上 SetIndexBuffer(2, 选择性极低); // 将数组选择性极低 对应到索引号为1的缓存上

//--设置图表划线空值, 只是不显示, 但0当作基准用. SetIndexEmptyValue(0, 0); //--设置指标的简称。

IndicatorShortName(\跨期+\

return(0); }

//+------------------------------------------------------------------+ int start() {

//--对临时变量定义 int i;

int 已计 = IndicatorCounted();

int limit; // limit:算法中所谓的开始计算位置; int counterZ; // counterZ:临时变量;

int 关注方向; // 关注方向:用于标识当前计算的是高点或者低点 int shift; // int back; // int lasthighpos; // int lastlowpos; // double 所取极端值; // double res; // double curlow; // double curhigh; // double lasthigh; // double lastlow; //

//--指标载入时已计为0,而downloadhistory为false,将在下一次价格变化时进行 if(已计==0 && downloadhistory){ ArrayInitialize(之字折线组, 0); ArrayInitialize(选择性极高, 0); ArrayInitialize(选择性极低, 0); }

//--初期化,第一次运行时limit为去掉跨期个图形最初的部分。(算法1.1) if(已计==0){

limit= Bars-跨期;

downloadhistory= true; }

// 如果之前已经计算过,找到最近已知的三个拐点(高点或低点),将计算位置设置为倒数第三个拐点。(算法1.2) if(已计>0){

while(counterZ

counterZ++; i++; }

// 在上面while中最后一次找到的时候进行+1,所以要-1才能得到真正第三个拐点处。 i--;

//--计算位置赋值 limit= i;

//--如果倒数第三个拐点是低点 (目标是为了寻找高点)

if(选择性极低[i]!=0){ curlow= 选择性极低[i]; 关注方向= 1; } else{

curhigh= 选择性极高[i]; 关注方向= -1; }

//--清空第三个拐点后的数值,准备重新计算最后的拐点 for(i=limit-1; i>=0; i--){ 之字折线组[i]= 0; 选择性极低[i]= 0; 选择性极高[i]= 0; } }

//--算法Step2部分:计算高低点 for(shift=limit; shift>=0; shift--){ //--2.1计算跨期区间内的低点

所取极端值= Low[iLowest(NULL, 0, MODE_LOW, 跨期, shift)];

if(所取极端值==lastlow) 所取极端值= 0; else{

lastlow= 所取极端值; // 如果该低点是当前低点,

//--是否比上个低点还低ExtDeviation,不是的话则不进行回归处理 if(Low[shift]-所取极端值>ExtDeviation*Point) 所取极端值= 0; //--找到一个新的低点 else{

for(back=1; back<=ExtBackstep; back++){

res= 选择性极低[shift+back]; // 回退ExtBackstep个Bar,把比当前低点高的纪录值给清空 if(res!=0 && res>所取极端值) 选择性极低[shift+back]= 0; } } }

//--将新的低点进行记录 if(Low[shift]==所取极端值)

选择性极低[shift]= 所取极端值; else

选择性极低[shift]= 0; //--high

所取极端值= High[iHighest(NULL, 0, MODE_HIGH, 跨期, shift)]; if(所取极端值==lasthigh) 所取极端值= 0; else{

lasthigh= 所取极端值;

if((所取极端值-High[shift])>(ExtDeviation*Point)) 所取极端值= 0; else{

for(back=1; back<=ExtBackstep; back++){ res= 选择性极高[shift+back]; if(res!=0 && res<所取极端值) 选择性极高[shift+back]= 0; } } }

if(High[shift]==所取极端值)

选择性极高[shift]= 所取极端值; else

选择性极高[shift]= 0; }

//--final cutting if(关注方向==0){ lastlow= 0; lasthigh= 0; } else{

lastlow= curlow; lasthigh= curhigh; }

//--算法step3.定义指标的高低点 for(shift=limit;shift>=0;shift--){ res= 0;

switch(关注方向){

//--初期化的情况下,尝试找第一个峰值或谷值 case 0: if(lastlow==0 && lasthigh==0){ //--发现高点

if(选择性极高[shift]!=0){ // (lastlow,lasthigh之前已经初始化,再次判断以保证正确性?)

lasthigh= High[shift]; lasthighpos= shift;

关注方向= -1; // 下个寻找目标是低点 之字折线组[shift]= lasthigh; res= 1; }

//--发现低点

if(选择性极低[shift]!=0){ lastlow= Low[shift]; lastlowpos= shift; 关注方向= 1;

之字折线组[shift]= lastlow; res= 1; } } break;

//--如果在上个低点和下个高点间发现新的低点,则把上个低点抹去,将新发现的低点作为最后一个低点

case 1: if(选择性极低[shift]!=0 && 选择性极低[shift]

之字折线组[lastlowpos]= 0; lastlowpos= shift;

lastlow= 选择性极低[shift]; 之字折线组[shift]= lastlow; res= 1; }

if(选择性极高[shift]!=0 && 选择性极低[shift]==0){ lasthigh= 选择性极高[shift]; lasthighpos= shift;

之字折线组[shift]= lasthigh;

关注方向= -1; // 下一个目标将是寻找低点 res= 1; }

break;

//--寻找低点

case -1: if(选择性极高[shift]!=0 && 选择性极高[shift]>lasthigh && 选择性极低[shift]==0){

之字折线组[lasthighpos]= 0; lasthighpos= shift;

lasthigh= 选择性极高[shift]; 之字折线组[shift]= lasthigh; }

if(选择性极低[shift]!=0 && 选择性极高[shift]==0){ lastlow= 选择性极低[shift]; lastlowpos= shift;

之字折线组[shift]= lastlow; 关注方向= 1; } break;

default: return; } }

return(0); }

//+------------------------------------------------------------------+

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MT4策略精讲:Zigzag.带解读在线全文阅读。

MT4策略精讲:Zigzag.带解读.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1104462.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: