class Pattern
Структура, описывающая один ценовой паттерн: имя, количество волн, массив направлений, коэффициенты Фибоначчи, временные параметры, групповой тип, активность и коды Меррилла.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «patterndatabase.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека patterndatabase.mqh реализует базу данных ценовых паттернов для мультиволнового распознавания на платформе MQL. Она содержит предопределённые структуры, описывающие классические графические формы — двойное дно, двойная вершина, голова и плечи, а также волновые и разрывные паттерны.
Каждый паттерн задаётся набором волн с направлениями, коэффициентами Фибоначчи и временными характеристиками. Библиотека поддерживает до 65 паттернов, каждый из которых может включать до 30 волн. Паттерны сгруппированы по типам покупающих и продающих сигналов.
При инициализации глобальный массив паттернов заполняется заранее заданными значениями, и для каждого паттерна вычисляется сигнатура направлений, обеспечивающая быстрое сравнение и сопоставление с рыночными данными.
Классов: 1 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 2
class Pattern
Структура, описывающая один ценовой паттерн: имя, количество волн, массив направлений, коэффициенты Фибоначчи, временные параметры, групповой тип, активность и коды Меррилла.
int BuildDirectionSignature(char &dirs[], int waveCount)
Формирует числовую сигнатуру направлений на основе массива направлений волн, используемую для идентификации и сравнения паттернов.
void InitPatterns()
Инициализирует базу данных паттернов, заполняя глобальный массив предопределёнными значениями: двойные дны/вершины, голова и плечи, волновые паттерны и паттерны пробоя.
#ifndef __MW_PATTERN_DATABASE_MQH__
#define __MW_PATTERN_DATABASE_MQH__
#define MAX_PATTERNS 65
#define MAX_WAVES 30
struct Pattern
{
string name;
uchar waveCount;
char dirs[MAX_WAVES];
float fibs[MAX_WAVES];
float durs[MAX_WAVES];
uchar groupType;
bool active;
int merrillCode;
int directionSignature;
};
Pattern g_Patterns[MAX_PATTERNS];
int g_PatternCount = 0;
int BuildDirectionSignature(char &dirs[], int waveCount)
{
int signature = 0;
if(waveCount < 1)
return 0;
for(int i = 0; i < waveCount; i++)
{
signature <<= 1;
if(dirs[i] > 0)
signature |= 1;
}
return signature;
}
void SetPattern(
int idx,
string name,
int waves,
string dirs,
string fibs,
string durs,
int group,
int merrill = 0
)
{
if(idx < 0 || idx >= MAX_PATTERNS)
return;
g_Patterns[idx].name = name;
g_Patterns[idx].waveCount = (uchar)waves;
g_Patterns[idx].groupType = (uchar)group;
g_Patterns[idx].active = true;
g_Patterns[idx].merrillCode = merrill;
string d[];
int dc = StringSplit(dirs, ',', d);
string f[];
int fc = StringSplit(fibs, ',', f);
string r[];
int rc = StringSplit(durs, ',', r);
if(dc != waves || fc != waves || rc != waves)
{
g_Patterns[idx].active = false;
Print(
"PATTERN INIT ERROR: ",
name,
" - Expected ",
waves,
" values, got dirs=",
dc,
" fibs=",
fc,
" durs=",
rc
);
return;
}
for(int i = 0; i < waves; i++)
{
g_Patterns[idx].dirs[i] = (char)StringToInteger(d[i]);
g_Patterns[idx].fibs[i] = (float)StringToDouble(f[i]);
g_Patterns[idx].durs[i] = (float)StringToDouble(r[i]);
}
g_Patterns[idx].directionSignature =
BuildDirectionSignature(
g_Patterns[idx].dirs,
waves
);
}
void InitPatterns()
{
int idx = 0;
SetPattern(
idx++,
"W:DoubleBottom",
4,
"-1,1,-1,1",
"1,0.618,1,1.272",
"1,0.786,1,0.786",
8
);
SetPattern(
idx++,
"W:DeepBottom",
4,
"-1,1,-1,1",
"1,0.886,1,1.13",
"1,0.5,1,0.5",
8
);
SetPattern(
idx++,
"W:ShallowBottom",
4,
"-1,1,-1,1",
"1,0.382,1,1.618",
"1,1,1,1",
8
);
SetPattern(idx++, "W:W1", 6, "-1,1,-1,1,-1,1", "1,0.618,1,0.618,1,1.272", "1,0.786,1,0.786,1,0.786", 8, 54321);
SetPattern(idx++, "W:W2", 6, "-1,1,-1,1,-1,1", "1,0.786,1,0.786,1,1.272", "1,0.618,1,0.618,1,0.618", 8, 53421);
SetPattern(idx++, "W:W3", 6, "-1,1,-1,1,-1,1", "1,0.886,1,0.886,1,1.13", "1,0.5,1,0.5,1,0.5", 8, 52431);
SetPattern(idx++, "W:W4", 6, "-1,1,-1,1,-1,1", "1,0.618,1,0.618,1,1.618", "1,1,1,1,1,1", 8, 52341);
SetPattern(idx++, "W:W5", 6, "-1,1,-1,1,-1,1", "1,0.786,1,0.786,1,1.618", "1,0.786,1,0.786,1,0.786", 8, 51432);
SetPattern(idx++, "W:W6", 6, "-1,1,-1,1,-1,1", "1,0.886,1,0.886,1,1.618", "1,0.618,1,0.618,1,0.618", 8, 51342);
SetPattern(idx++, "W:W7", 6, "-1,1,-1,1,-1,1", "1,0.618,1,0.618,1,2.618", "1,0.5,1,0.5,1,0.5", 8, 41352);
SetPattern(idx++, "W:W8", 6, "-1,1,-1,1,-1,1", "1,0.786,1,0.786,1,2.618", "1,0.786,1,0.786,1,0.786", 8, 41253);
SetPattern(idx++, "W:W9", 6, "-1,1,-1,1,-1,1", "1,0.886,1,0.886,1,2.618", "1,0.618,1,0.618,1,0.618", 8, 41235);
SetPattern(idx++, "W:W10"Показано первые 50% кода (символов: 5377)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.