73 строки
3,4 КиБ
MQL5
73 строки
3,4 КиБ
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);
| |||
}
| |||
//+------------------------------------------------------------------+
|