Полезно, спасибо! Было бы здорово видеть не только среднюю линию, но и промежуточные (условно 75% и 25%).
П.С. С вашего позволения добавил сам:
// ---------------------------------------------------------------------------
// Классический канал Дончиана - по экстремумам за N дней.
//
// Буферы индикатора:
// 0 - Верхняя граница.
// 1 - Нижняя граница.
// 2 - Середина канала.
// 3 - Верхняя четверть канала.
// 4 - Нижняя четверть канала.
// ---------------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Blue
#property indicator_color2 Blue
#property indicator_color3 DarkViolet
#property indicator_style3 STYLE_DOT
#property indicator_color4 DarkViolet
#property indicator_style4 STYLE_DOT
#property indicator_color5 DarkViolet
#property indicator_style5 STYLE_DOT
// Длина рассматриваемой истории.
extern int HISTORY_DEPTH = 24;
// Буферы индикатора.
double buf_up[], buf_dn[], buf_md[], buf_um[], buf_dm[];
// Инициализация.
int init() {
IndicatorShortName(StringConcatenate(
"AZZX - DONCHIAN CHANNEL v1.1 (", HISTORY_DEPTH, ")"));
IndicatorDigits(Digits);
SetIndexBuffer(0, buf_up);
SetIndexBuffer(1, buf_dn);
SetIndexBuffer(2, buf_md);
SetIndexBuffer(3, buf_um);
SetIndexBuffer(4, buf_dm);
SetIndexLabel(0, "UPPER BOUND");
SetIndexLabel(1, "LOWER BOUND");
SetIndexLabel(2, "MIDDLE LINE");
SetIndexLabel(3, "UP_MIDDLE LINE");
SetIndexLabel(4, "DOWN_MIDDLE LINE");
return(0);
}
// Главный цикл.
int start() {
int i;
for(i = Bars - IndicatorCounted() - 1; i >= 0; i--) {
buf_up[i] = High[iHighest(NULL, 0, MODE_HIGH, HISTORY_DEPTH, i)];
buf_dn[i] = Low [iLowest (NULL, 0, MODE_LOW, HISTORY_DEPTH, i)];
buf_md[i] = 0.5 * (buf_up[i] + buf_dn[i]);
buf_um[i] = 0.5 * (buf_up[i] + buf_md[i]);
buf_dm[i] = 0.5 * (buf_dn[i] + buf_md[i]);
}
return(0);
}
Для промежуточных, которые мне тоже регулярно хочется видеть (хоть бы раз пригодилось!) использую такой простой индикатор, цепляемый "поверх" этого:
// --------------------------------------------------------------------------- // Вспомогательный индикатор, показывающий уровни внутри канала Дончиана. // --------------------------------------------------------------------------- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Violet #property indicator_color2 Violet #property indicator_style1 STYLE_DOT #property indicator_style2 STYLE_DOT // Имя основного индикатора. #define IND_NAME "azzx_donchian_1_0" // Параметры индикатора. extern int CHANNEL_LENGTH = 16; // Расстояние от центра до границ. extern double SIZE_MULTIPLIER = 0.75; // Буферы индикаторов. double buf_up[], buf_dn[]; // Рабочий период индикатора. int work_period; // Инициализация. int init() { IndicatorShortName(StringConcatenate("_donchian_levels v1.0 (", CHANNEL_LENGTH, ")")); SetIndexBuffer(0, buf_up); SetIndexBuffer(1, buf_dn); SetIndexEmptyValue(0, -1); SetIndexEmptyValue(1, -1); work_period = Bars - CHANNEL_LENGTH; return(0); } // Главный цикл. int start() { int i; double u, d, m; for(i = Bars - IndicatorCounted() - 1; i >= 0; i--) { if(i < work_period) { u = iCustom(NULL, 0, IND_NAME, CHANNEL_LENGTH, 0, i); d = iCustom(NULL, 0, IND_NAME, CHANNEL_LENGTH, 1, i); m = iCustom(NULL, 0, IND_NAME, CHANNEL_LENGTH, 2, i); u = 0.5 * SIZE_MULTIPLIER * (u - d); buf_up[i] = m + u; buf_dn[i] = m - u; } else { buf_up[i] = -1; buf_dn[i] = -1; } } return(0); }
как это нет в кодебазе? один из самых первых на сайте, и вариаций за это время появилось масса
http://codebase.mql4.com/ru/446
просто его обычно называют по другому.
как это нет в кодебазе? один из самых первых на сайте, и вариаций за это время появилось масса
http://codebase.mql4.com/ru/446
просто его обычно называют по другому.
Несколько вариаций я видел, да. :) А что называют по другому - тоже, кстати, своеобразный недостаток.
Это именно классическая реализация без свистелок и перделок, а главное - простая, как топор.
уж очень похоже на PriceChannel
ЗЫ: ГЫЫЫ, он и есть )
ЗЫЗЫ: не за горами изобретение индикатора ишимоку )
уж очень похоже на PriceChannel
ЗЫ: ГЫЫЫ, он и есть )
ЗЫЗЫ: не за горами изобретение индикатора ишимоку )
Угу. Назвать тока как-то надо по своему. :)
у меня индикатор не отображается на графике...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Канал Дончиана.:
Author: Лёха