//+------------------------------------------------------------------+
//|                                                   绘制蜡烛图.mq4 |
//|                                          Copyright 2023, 100w123 |
//|                                              https://100w123.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, 100w123"
#property link      "https://100w123.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 clrDodgerBlue
#property indicator_width1 1
#property indicator_color2 clrRed
#property indicator_width2 1
#property indicator_color3 clrLightBlue
#property indicator_width3 3
#property indicator_color4 clrLightPink
#property indicator_width4 3
double blue_shadow[];
double red_shadow[];
double blue_body[];
double red_body[];
//+------------------------------------------------------------------+
int OnInit() {
    SetIndexBuffer(0, blue_shadow);
    SetIndexStyle(0, DRAW_HISTOGRAM);
    SetIndexBuffer(1, red_shadow);
    SetIndexStyle(1, DRAW_HISTOGRAM);
    SetIndexBuffer(2, blue_body);
    SetIndexStyle(2, DRAW_HISTOGRAM);
    SetIndexBuffer(3, red_body);
    SetIndexStyle(3, DRAW_HISTOGRAM);
    return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
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[]) {
    int i, limit;
    if (prev_calculated == 0)
        limit = rates_total - 1;           // 没有计算时是最左侧第一根
    else
        limit = rates_total - prev_calculated; // 从左侧新增的 bar 开始
    for (i = limit; i >= 0; i--) {         // 从左往右开始处理
        blue_body[i] = Close[i];
        red_body[i] = Open[i];
        if (Open[i] < Close[i]) {
            blue_shadow[i] = High[i];
            red_shadow[i] = Low[i];
        } else {
            red_shadow[i] = High[i];
            blue_shadow[i] = Low[i];
        }
    }
    return(rates_total);
}
//+------------------------------------------------------------------+
					暂无评论
			
