在副图上显示最近的点差图和其平均值-MT4指标 - MetaTrader 4脚本
该指标基于记录每一Tick点差变动而实现的,走势类似于报价图表。最新的点差值在右边,价格刷新数据向左推移,黄色线显示的是平均点差。
输入的时候,“ExtSize”表示你想显示的最大数量,0代表用当前窗口K线数。
下图是输入ExtSize=100时的黄金点差:
主要代码计算部分:
static MqlTick last_tick; int size = prev_calculated; if(iRefreshRates(last_tick))//last_tick.bid!=Bid { if(size<Showbars && size<rates_total) size+=1; if(size>1) ArrayCopy(SpreadBuffer,SpreadBuffer,1,0,size-1); double mspread=MarketInfo(_Symbol,MODE_SPREAD); if(mspread<=0) mspread=(last_tick.ask-last_tick.bid)/_Point; SpreadBuffer=mspread; //--- double sum=0.0; for(int i=0; i<size; i++) sum+=SpreadBuffer; // Summation for the double if(size<=4) SpreadMapBuffer=size>0?(sum/size):SpreadBuffer; // Just divide the sum by the number else //--- now, get the highest value itself in the array { double terminal=SpreadBuffer+SpreadBuffer; SpreadMapBuffer=(sum-terminal)/(size-2); } ArrayInitialize(SpreadMapBuffer,SpreadMapBuffer); ObjectMove(SpreadMapName, 0, last_tick.time, SpreadMapBuffer);//修改移动 }
程序包含两个文件,可以分别使用,就是计算方法有些区别。
感谢楼主分享!!!! {:1_181:} 两个指标有什么不一样?? {:1_186:} 顶下 {:1_181:} 顶下 支持下 {:1_179:}