#Хейкен Аши[mod].mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «#Хейкен Аши[mod].mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор отображает на графике свечи Хейкен Аши с возможностью сглаживания ценовых данных различными методами скользящих средних. Свечи окрашиваются в зелёный или красный цвет в зависимости от направления, а также могут отображаться тени (включаемая настройка).
Индикатор поддерживает работу на разных таймфреймах, включая мультитаймфреймовый режим с интерполяцией данных. Предусмотрена кнопка на графике для быстрого включения и отключения отображения индикатора без необходимости перезапуска терминала.
Настройки позволяют гибко управлять периодами и методами сглаживания, шириной тел и теней свечей (в том числе автоматической подстройкой под масштаб графика), цветовой схемой и параметрами интерактивной кнопки.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, на котором рассчитывается индикатор. Доступны варианты от текущего таймфрейма до третьего старшего. |
| note1 | Текстовый разделитель для блока настроек Хейкен Аши (не влияет на расчёт). |
| MaPeriod | Период сглаживания для расчёта скользящей средней цены. |
| MaMetod | Метод сглаживания для расчёта скользящей средней цены. |
| MaPeriod2 | Период сглаживания для расчёта свечей Хейкен Аши. |
| MaMetod2 | Метод сглаживания для расчёта свечей Хейкен Аши. |
| note2 | Текстовый разделитель для блока настроек отображения (не влияет на расчёт). |
| showHA | Переключатель отображения теней (фитилей) свечей Хейкен Аши. |
| Clean_chart | Переключатель очистки графика от стандартных свечей при отображении индикатора. |
| WickWidth | Ширина теней (фитилей) свечей Хейкен Аши. |
| BodyWidth | Ширина тела свечи при отключённой автоматической ширине (в пикселях). |
| UseAutoWidth | Автоматическая подстройка ширины тела свечи в зависимости от масштаба графика. |
| candleUP | Цвет бычьих свечей Хейкен Аши. |
| candleDN | Цвет медвежьих свечей Хейкен Аши. |
| Interpolate | Переключение интерполяции данных при работе в мультитаймфреймовом режиме. |
| ButtonName | Текст, отображаемый на кнопке управления видимостью индикатора. |
| ButtonWidth | Ширина кнопки управления видимостью индикатора в пикселях. |
| ButtonHeight | Высота кнопки управления видимостью индикатора в пикселях. |
| ButtonFont | Шрифт текста на кнопке управления видимостью индикатора. |
| FontSize | Размер шрифта текста на кнопке управления видимостью индикатора. |
| ButtonBgColor | Цвет фона кнопки управления видимостью индикатора. |
| ButtonTextColor | Цвет текста на кнопке управления видимостью индикатора. |
| ButtonBorderColor | Цвет рамки кнопки управления видимостью индикатора. |
| ButtonX | Горизонтальная позиция кнопки управления видимостью индикатора от правого верхнего угла графика. |
| ButtonY | Вертикальная позиция кнопки управления видимостью индикатора от правого верхнего угла графика. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 6
#property strict
enum enTimeFrames
{
tf_cu = PERIOD_CURRENT, // Текущий таймфрейм
tf_m1 = PERIOD_M1, // 1 минута
tf_m5 = PERIOD_M5, // 5 минут
tf_m15 = PERIOD_M15, // 15 минут
tf_m30 = PERIOD_M30, // 30 минут
tf_h1 = PERIOD_H1, // 1 час
tf_h4 = PERIOD_H4, // 4 часа
tf_d1 = PERIOD_D1, // Дневной
tf_w1 = PERIOD_W1, // Недельный
tf_mn1 = PERIOD_MN1, // Месячный
tf_n1 = -1, // Первый старший таймфрейм
tf_n2 = -2, // Второй старший таймфрейм
tf_n3 = -3 // Третий старший таймфрейм
};
enum enMaTypes
{
ma_sma, // Простое скользящее среднее
ma_ema, // Экспоненциальное скользящее среднее
ma_smma, // Сглаженное скользящее среднее
ma_lwma, // Линейно-взвешенное скользящее среднее
ma_linr // Метод наименьших квадратов
};
extern enTimeFrames TimeFrame = tf_cu; // Таймфрейм
extern string note1 = ".........Настройки Хейкен Аши.........";
extern int MaPeriod = 5; // Период сглаживания цены
extern enMaTypes MaMetod = ma_smma; // Метод сглаживания цены
extern int MaPeriod2 = 2; // Период сглаживания HA
extern enMaTypes MaMetod2 = ma_smma; // Метод сглаживания HA
extern string note2 = ".........Настройки отображения.........";
extern bool showHA = false; // Показывать тени Хейкен Аши?
input bool Clean_chart = true; // Очищать график?
input int WickWidth = 1; // Ширина теней свечи
input int BodyWidth = 2; // Ширина тела свечи (если автоширина выключена)
input bool UseAutoWidth = true; // Автоматическая ширина тела свечи
extern color candleUP = clrLime; // Цвет бычьей свечи
extern color candleDN = clrRed; // Цвет медвежьей свечи
input bool Interpolate = true; // Интерполяция в мультитаймфрейм режиме вкл/выкл?
input string ButtonName = "HA Вкл/Выкл"; // Текст на кнопке
input int ButtonWidth = 95; // Ширина кнопки в пикселях
input int ButtonHeight = 20; // Высота кнопки в пикселях
input string ButtonFont = "Arial"; // Шрифт текста
input int FontSize = 10; // Размер шрифта
input color ButtonBgColor= clrDarkRed; // Цвет фона кнопки
input color ButtonTextColor= clrWhite; // Цвет текста
input color ButtonBorderColor= clrBlack; // Цвет рамки
input int ButtonX = 800; // Позиция по X
input int ButtonY = 10; // Позиция по Y
double ExtMapBuffer1[],ExtMapBuffer2[],ExtMapBuffer3[],ExtMapBuffer4[],ExtMapBuffer5[],ExtMapBuffer6[],ExtMapBuffer7[],ExtMapBuffer8[],trendha[],count[];
double bckg1[],bckg2[];
int candlewidth=0;
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,note1,MaPeriod,MaMetod,MaPeriod2,MaMetod2,note2,showHA,Clean_chart,WickWidth,BodyWidth,UseAutoWidth,candleUP,candleDN,_buff,_ind)
string ButtonID; // Идентификатор кнопки
bool IndicatorVisible = true; // Флаг видимости индикатора
string IndicatorName; // Имя индикатора
string IndicatorObjPrefix; // Префикс объектов
string GenerateIndicatorName(const string target) {
string name = target;
int try = 2;
while (WindowFind(name) != -1) {
name = target + " #" + IntegerToString(try++);
}
return name;
}
void CreateButton() {
ButtonID = IndicatorObjPrefix + "ToggleButton";
ObjectDelete(0, ButtonID); // Удаляем кнопку, если она уже существует
ObjectCreate(0, ButtonID, OBJ_BUTTON, 0, 0, 0); // Создаем кнопку
ObjectSetInteger(0, ButtonID, OBJPROP_COLOR, ButtonTextColor);
ObjectSetInteger(0, ButtonID, OBJPROP_BGCOLOR, ButtonBgColor);
ObjectSetInteger(0, ButtonID, OBJPROP_BORDER_COLOR, ButtonBorderColor);
ObjectSetInteger(0, ButtonID, OBJPROP_BORDER_TYPE, BORDER_RAISED);
ObjectSetInteger(0, ButtonID, OBJPROP_XDISTANCE, ButtonX);
ObjectSetInteger(0, ButtonID, OBJPROP_YDISTANCE, ButtonY);
ObjectSetInteger(0, ButtonID, OBJPROP_XSIZE, ButtonWidth);
ObjectSetInteger(0, ButtonID, OBJPROP_YSIZE, ButtonHeight);
ObjectSetString(0, ButtonID, OBJPROP_FONT, ButtonFont);
ObjectSetString(0, ButtonID, OBJPROP_TEXT, ButtonName);
ObjectSetInteger(0, ButtonID, OBJPROP_FONTSIZE, FontSize);
ObjectSetInteger(0, ButtonID, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, ButtonID, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, ButtonID, OBJPROP_HIDDEN, true);
ObjectSetInteger(0, ButtonID, OBJPROP_STATE, false);
}
void HandleButtonClick() {
if (ObjectGetInteger(0, ButtonID, OBJPROP_STATE)) {
ObjectSetInteger(0, ButtonID, OBJPROP_STATE, false);
IndicatorVisible = !IndicatorVisible;
GlobalVariableSet(IndicatorObjPrefix+"Visibility", IndicatorVisible ? 1 : 0);
UpdateIndicatorVisibility();
ChartRedraw();
}
}
void UpdateIndicatorVisibility() {
SetIndexStyle(0, IndicatorVisible ? DRAW_HISTOGRAM : DRAW_NONE, NULL, candlewidth, candleDN);
SetIndexStyle(1, IndicatorVisible ? DRAW_HISTOGRAM : DRAW_NONE, NULL, candlewidth, candleUP);
SetIndexStyle(2, IndicatorVisible ? DRAW_HISTOGRAM : DRAW_NONE, NULL, candlewidth, (color)ChartGetInteger(0,CHART_COLOR_BACKGROUND));
SetIndexStyle(3, IndicatorVisible && showHA ? DRAW_HISTOGRAM : DRAW_NONE, NULL, WickWidth, candleDN);
SetIndexStyle(4, IndicatorVisible && showHA ? DRAW_HISTOGRAM : DRAW_NONE, NULL, WickWidth, candleUP);
SetIndexStyle(5, IndicatorVisible ? DRAW_HISTOGRAM : DRAW_NONE, NULL, candlewidth, (color)ChartGetInteger(0,CHART_COLOR_BACKGROUND));
}
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll(ChartID(), IndicatorObjPrefix); // Удаляем все объекты индикатора
GlobalVariableDel(IndicatorObjPrefix+"Visibility"); // Удаляем глобальную переменную
}
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if (id == CHARTEVENT_OBJECT_CLICK && sparam == ButtonID)
{
HandleButПоказано первые 50% кода (символов: 11825)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.