PriceHistgram_channel
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «price histogram channel .mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор PriceHistgram_channel рассчитывает и отображает аналитические уровни на основе гистограммы ценовых диапазонов в рамках платформы MetaTrader 5. Он строит уровни поддержки и сопротивления (R1, S1, R2, S2), а также верхний уровень TOP и три линии пиков на графике цен.
Расчёт основывается на данных внутридневного таймфрейма M5 с использованием весовой оценки объёмных данных. Индикатор определяет пиковые зоны гистограммы и вычисляет соответствующие ценовые уровни, которые обновляются при формировании новых часовых баров в заданное время.
Индикатор отрисовывает восемь буферов в окне графика: гистограммные уровни R1 и S1, центральный уровень TOP, дальние уровни R2 и S2, а также три линии пиков разной ширины и стиля. Уровни сохраняются между обновлениями, что обеспечивает непрерывность отображения.
Настройки программы
| Настройка | Описание |
|---|---|
| Calculation Time(hour) (InpCalcTime) | Время расчёта (час) — Час, используемый для расчёта (Calculation Time, час). |
| Histogram Period(day) (InpDayPeriod) | Период гистограммы (день) — Период гистограммы в днях (Histogram Period, день). |
Поиск по коду файла
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_type3 DRAW_LINE
#property indicator_type4 DRAW_LINE
#property indicator_type5 DRAW_LINE
#property indicator_type6 DRAW_LINE
#property indicator_type7 DRAW_LINE
#property indicator_type8 DRAW_LINE
#property indicator_color1 YellowGreen
#property indicator_color2 YellowGreen
#property indicator_color3 Red
#property indicator_color4 Green
#property indicator_color5 Green
#property indicator_color6 DodgerBlue
#property indicator_color7 DodgerBlue
#property indicator_color8 DodgerBlue
#property indicator_label1 "R1"
#property indicator_label2 "S1"
#property indicator_label3 "Top"
#property indicator_label4 "R2"
#property indicator_label5 "S2"
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 1
#property indicator_width5 1
#property indicator_width6 2
#property indicator_width7 2
#property indicator_width8 2
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT
#property indicator_style3 STYLE_SOLID
#property indicator_style4 STYLE_DASH
#property indicator_style5 STYLE_DASH
#property indicator_style6 STYLE_SOLID
#property indicator_style7 STYLE_SOLID
#property indicator_style8 STYLE_SOLID
input int InpCalcTime = 4; // Calculation Time(hour)
input int InpDayPeriod = 3; // Histogram Period(day)
int BinRangeScale=2;
double InpBinRange=5;
double LtBinRange=InpBinRange*BinRangeScale;
int d1_period=24*12; // for 5min
int st_period=InpDayPeriod*24*12; // for 5min
int min_rates_total;
double TOPBuffer[];
double R1Buffer[];
double S1Buffer[];
double R2Buffer[];
double S2Buffer[];
double Peak1Buffer[];
double Peak2Buffer[];
double Peak3Buffer[];
int OnInit()
{
// код доступен только после оплаты
}
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,first;
if(rates_total<=min_rates_total)
return(0);
ArraySetAsSeries(TOPBuffer,false);
ArraySetAsSeries(R1Buffer,false);
ArraySetAsSeries(S1Buffer,false);
ArraySetAsSeries(R2Buffer,false);
ArraySetAsSeries(S2Buffer,false);
ArraySetAsSeries(Peak1Buffer,false);
ArraySetAsSeries(Peak2Buffer,false);
ArraySetAsSeries(Peak3Buffer,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);
ArraySetAsSeries(time,false);
first=min_rates_total-1;
if(first+1<prev_calculated) first=prev_calculated-2;
for(i=first; i<rates_total && !IsStopped(); i++)
{
bool is_update=false;
MqlDateTime tm0,tm1;
TimeToStruct(time[i],tm0);
TimeToStruct(time[i-1],tm1);
if(tm1.hour!=tm0.hour && tm0.hour==InpCalcTime)
{
int j;
int m5peaks[];
int m5hist[];
int offset,limit;
bool ok=generate_histgram(offset,limit,m5peaks,m5hist,time[i]);
if(ok)
{
int m5peak_cnt=ArraySize(m5peaks);
if(m5peak_cnt>0)
{
double up,dn;
TOPBuffer[i]=(offset+m5peaks[0]*InpBinRange+InpBinRange/2)*_Point;
calc_range(dn,up,m5hist,m5peaks[0],offset,InpBinRange,0.9);
S2Buffer[i]=dn;
R2Buffer[i]=up;
calc_range(dn,up,m5hist,m5peaks[0],offset,InpBinRange,0.6);
S1Buffer[i]=dn;
R1Buffer[i]=up;
Peak1Buffer[i-1] = EMPTY_VALUE;
Peak2Buffer[Показано первые 50% кода (символов: 6893)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.