gann levels.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gann levels.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой индикатор для платформы MetaTrader 4, который отображает уровни Ганна на графике цены. Для каждого нового торгового дня на основе цены открытия рассчитываются и отрисовываются горизонтальные уровни в виде трендовых линий, формируя сетку потенциальных ценовых зон.
Индикатор поддерживает настройку количества отображаемых дней, что позволяет ограничить глубину анализа. Также доступен режим отображения текстовых подписей уровней и параметр масштабирования, влияющий на числовые коэффициенты расчёта уровней.
При удалении индикатора с графика все созданные объекты (линии и текстовые метки) корректно удаляются. Уровни окрашиваются в разные цвета для визуального разделения, а линии отрисовываются как пунктирные трендовые объекты на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| drowDays | Количество дней отрисовки — Задаёт количество дней, для которых отрисовываются уровни на графике. |
| showText | Отображение подписей уровней — Переключатель отображения или скрытия текстовых подписей уровней на графике. |
| order | Масштабирование уровней — Числовой коэффициент масштабирования, применяемый к константам уровней при их расчёте. |
Поиск по коду файла
#property indicator_buffers 0
#property indicator_chart_window
extern int drowDays = 5;
extern bool showText = false;
extern double order = 0.001;
double level1 = 1.25;
double level2 = 2.50;
double level3 = 3.33;
double level4 = 5;
double level5 = 6.66;
double level6 = 7.5;
double level7 = 10;
int init() {
// код доступен только после оплаты
}
int deinit() {
ObjectsDeleteAll(0,OBJ_TREND);
ObjectsDeleteAll(0,OBJ_TEXT);
}
int start() {
// код доступен только после оплаты
}
int indicatorCounted = IndicatorCounted();
if (indicatorCounted < 0) {
return (-1);
}
if(indicatorCounted > 0) {
indicatorCounted--;
}
int limit = Bars - indicatorCounted;
int days = 0;
for(int i = 0; i < limit; i++) {
if(TimeDay(Time[i]) != TimeDay(Time[i+1])) {
double openDay = Open[i];
datetime openTime = Time[i];
datetime closeTime = Time[i] + 60 * 60 * 24;
double level = openDay;
string levelName = "level0" + TimeDay(Time[i]);
ObjectCreate(levelName, OBJ_TREND, 0, openTime, level, closeTime, level);
ObjectSet(levelName, OBJPROP_COLOR, BlueViolet);
ObjectSet(levelName, OBJPROP_WIDTH, 0);
ObjectSet(levelName, OBJPROP_BACK, true);
ObjectSet(levelName, OBJPROP_RAY, false);
ObjectSet(levelName, OBJPROP_STYLE, STYLE_DASH);
double level1Up = MathPow((MathSqrt(openDay) + level1), 2);
string level1UpName = "level1Up" + TimeDay(Time[i]);
ObjectCreate(level1UpName, OBJ_TREND, 0, openTime, level1Up, closeTime, level1Up);
ObjectSet(level1UpName, OBJPROP_COLOR, Green);
ObjectSet(level1UpName, OBJPROP_WIDTH, 2);
ObjectSet(level1UpName, OBJPROP_BACK, true);
ObjectSet(level1UpName, OBJPROP_RAY, false);
double level1Down = MathPow((MathSqrt(openDay) - level1), 2);
string level1DownName = "level1Down" + TimeDay(Time[i]);
ObjectCreate(level1DownName, OBJ_TREND, 0, openTime, level1Down, closeTime, level1Down);
ObjectSet(level1DownName, OBJPROP_COLOR, Green);
ObjectSet(level1DownName, OBJPROP_WIDTH, 2);
ObjectSet(level1DownName, OBJPROP_BACK, true);
ObjectSet(level1DownName, OBJPROP_RAY, false);
double level2Up = MathPow((MathSqrt(openDay) + level2), 2);
string level2UpName = "level2Up" + TimeDay(Time[i]);
ObjectCreate(level2UpName, OBJ_TREND, 0, openTime, level2Up, closeTime, level2Up);
ObjectSet(level2UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level2UpName, OBJPROP_WIDTH, 0);
ObjectSet(level2UpName, OBJPROP_BACK, true);
ObjectSet(level2UpName, OBJPROP_RAY, false);
double level2Down = MathPow((MathSqrt(openDay) - level2), 2);
string level2DownName = "level2Down" + TimeDay(Time[i]);
ObjectCreate(level2DownName, OBJ_TREND, 0, openTime, level2Down, closeTime, level2Down);
ObjectSet(level2DownName, OBJPROP_COLOR, Orange);
ObjectSet(level2DownName, OBJPROP_WIDTH, 0);
ObjectSet(level2DownName, OBJPROP_BACK, true);
ObjectSet(level2DownName, OBJPROP_RAY, false);
double level3Up = MathPow((MathSqrt(openDay) + level3), 2);
string level3UpName = "level3Up" + TimeDay(Time[i]);
ObjectCreate(level3UpName, OBJ_TREND, 0, openTime, level3Up, closeTime, level3Up);
ObjectSet(level3UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level3UpName, OBJPROP_WIDTH, 0);
ObjectSet(level3UpName, OBJPROP_BACK, true);
ObjectSet(level3UpName, OBJPROP_RAY, false);
double level3Down = MathPow((MathSqrt(openDay) - level3), 2);
string level3DownName = "level3Down" + TimeDay(Time[i]);
ObjectCreate(level3DownName, OBJ_TREND, 0, openTime, level3Down, closeTime, level3Down);
ObjectSet(level3DownName, OBJPROP_COLOR, Orange);
ObjectSet(level3DownName, OBJPROP_WIDTH, 0);
ObjectSet(level3DownName, OBJPROP_BACK, true);
ObjectSet(level3DownName, OBJPROP_RAY, false);
double level4Up = MathPow((MathSqrt(openDay) + level4), 2);
string level4UpName = "level4Up" + TimeDay(Time[i]);
ObjectCreate(level4UpName, OBJ_TREND, 0, openTime, level4Up, closeTime, level4Up);
ObjectSet(level4UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level4UpName, OBJPROP_WIDTH, 2);
ObjectSet(level4UpName, OBJPROP_BACK, true);
ObjectSet(level4UpName, OBJPROP_RAY, false);
double level4Down = MathPow((MathSqrt(openDay) - level4), 2);
string level4DownName = "level4Down" + TimeDay(Time[i]);
ObjectCreate(level4DownName, OBJ_TREND, 0, openTime, level4Down, closeTime, level4Down);
ObjectSet(level4DownName, OBJPROP_COLOR, Orange);
ObjectSet(level4DownName, OBJPROP_WIDTH, 2);
ObjectSet(level4DownName, OBJPROP_BACK, true);
ObjectSet(level4DownName, OBJPROP_RAY, false);
double level5Up = MathPow((MathSqrt(openDay) + level5), 2);
string level5UpName = "level5Up" + TimeDay(Time[i]);
ObjectCreate(level5UpName, OBJ_TREND, 0, openTime, level5Up, closeTime, level5Up);
ObjectSet(level5UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level5UpName, OBJPROP_WIDTH, 0);
ObjectSet(level5UpName, OBJPROP_BACK, true);
ObjectSet(level5UpName, OBJPROP_RAY, false);
double level5Down = MathPow((MathSqrt(openDay) - level5), 2);
string level5DownName = "level5Down" + TimeDay(Time[i]);
ObjectCreate(level5DownName, OBJ_TREND, 0, openTime, level5Down, closeTime, level5Down);
Показано первые 50% кода (символов: 8646)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.