//---以下是均线填充源码
//---mt5实现思路
首先画两条均线 用copybuffer 绑定数组
用ArrayCopy 绑定filling 完成区块填充
//---mt4实现思路
首先画两条均线 用copybuffer 绑定数组
DRAW_HISTOGRAM 用均线给他赋值
上区块 画上柱 下区块画下柱
//---mql4//---mql4//---mql4
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if(prev_calculated==0)
for(int i=0; i<rates_total; i++)
{
Label1Buffer=iMA(Symbol(),PERIOD_CURRENT,ma20_period,0,MODE_EMA,PRICE_CLOSE,i);
Label2Buffer=iMA(Symbol(),PERIOD_CURRENT,ma60_period,0,MODE_EMA,PRICE_CLOSE,i);
if(Label1Buffer> Label2Buffer)
{
Label3Buffer=Label1Buffer;
Label4Buffer=Label2Buffer;
}
else
{
Label5Buffer=Label1Buffer;
Label6Buffer=Label2Buffer;
}
}
else
for(int i=0; i<2; i++)
{
Label1Buffer=iMA(Symbol(),PERIOD_CURRENT,ma20_period,0,MODE_EMA,PRICE_CLOSE,i);
Label2Buffer=iMA(Symbol(),PERIOD_CURRENT,ma60_period,0,MODE_EMA,PRICE_CLOSE,i);
if(Label1Buffer> Label2Buffer)
{
Label3Buffer=Label1Buffer;
Label4Buffer=Label2Buffer;
}
else
{
Label5Buffer=Label1Buffer;
Label6Buffer=Label2Buffer;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//---mql5//---mql5//---mql5
int OnCalculate(const int32_t rates_total,
const int32_t prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int32_t &spread[])
{
//---
CopyBuffer(ma20_h,0,0,rates_total,Label1Buffer);
CopyBuffer(ma60_h,0,0,rates_total,Label2Buffer);
ArrayCopy(Label3Buffer1,Label1Buffer,0,0,rates_total);
ArrayCopy(Label3Buffer2,Label2Buffer,0,0,rates_total);
return(rates_total);
}
//+------------------------------------------------------------------+
|