在副图上显示最近的点差图和其平均值-MT4指标 - MetaTrader 4脚本
yyqkorea
|
9136 人阅读
|
52 人评论
|
2022-02-19
该指标基于记录每一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[0]=mspread; //--- double sum=0.0; for(int i=0; i<size; i++) sum+=SpreadBuffer; // Summation for the double if(size<=4) SpreadMapBuffer[0]=size>0?(sum/size):SpreadBuffer[0]; // Just divide the sum by the number else //--- now, get the highest value itself in the array { double terminal=SpreadBuffer[ArrayMaximum(SpreadBuffer)]+SpreadBuffer[ArrayMinimum(SpreadBuffer)]; SpreadMapBuffer[0]=(sum-terminal)/(size-2); } ArrayInitialize(SpreadMapBuffer,SpreadMapBuffer[0]); ObjectMove(SpreadMapName, 0, last_tick.time, SpreadMapBuffer[0]);//修改移动 }
程序包含两个文件,可以分别使用,就是计算方法有些区别。
|
|
|
|
|