mql-for-begginers/Indicators/Examples/Canvas/FlameChart.mq5
2025-07-22 18:30:17 +03:00

73 lines
3.4 KiB
MQL5

//+------------------------------------------------------------------+
//| FlameChart.mq5 |
//| Copyright 2000-2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#include <Canvas\FlameCanvas.mqh>
//+------------------------------------------------------------------+
//| Indicator properties |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Input parameters |
//+------------------------------------------------------------------+
input int InpFuturefBars =50;
//+------------------------------------------------------------------+
//| global variables |
//+------------------------------------------------------------------+
CFlameCanvas ExtCanvas;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(!ExtCanvas.FlameCreate("FlameChart",TimeCurrent(),InpFuturefBars,0))
return(INIT_FAILED);
//--- succeed
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
datetime xb1=time[rates_total-1];
double yb1=high[rates_total-1];
datetime xe1=xb1+InpFuturefBars*PeriodSeconds();
double ye1=ChartGetDouble(0,CHART_PRICE_MAX);
datetime xb2=xb1;
double yb2=low[rates_total-1];
datetime xe2=xe1;
double ye2=ChartGetDouble(0,CHART_PRICE_MIN);
//--- "nozzle" is defined using two lines: ((xb1,yb1),(xe1,ye1)) and ((xb2,yb2),(xe2,ye2))
ExtCanvas.FlameSet(xb1,yb1,xe1,ye1,xb2,yb2,xe2,ye2);
//--- result
return(rates_total);
}
//+------------------------------------------------------------------+
//| Custom indicator chart's event handler |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
ExtCanvas.ChartEventHandler(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+