WmiFor
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wmifor30_v1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
WmiFor — это пользовательский индикатор для MetaTrader 4, предназначенный для аналитического прогнозирования ценовых движений. Он анализирует исторические данные цены, ищет ранее встречавшиеся паттерны, похожие на текущую динамику, и на основе найденных аналогов строит прогнозные зоны и отображает их на графике.
Индикатор рисует несколько буферов: прогнозную облачную зону (верхняя и нижняя границы и средняя линия), линию средней цены прошлого периода, а также визуализацию наилучшего найденного паттерна (открытие, закрытие, максимум, минимум). Все элементы отрисовываются на графике с настраиваемыми цветами и позиционированием.
Дополнительно индикатор может отображать торговые сигналы с указанием уровней Take Profit и Stop Loss, а также выводить текстовые подсказки прямо на графике. Встроенная система диагностики позволяет записывать данные расчётов в лог-файл для отладки.
Настройки пользователя позволяют управлять смещением анализируемых баров, глубиной прошлого и прогноза, количеством сравниваемых альтернатив, отображением отдельных элементов и цветовым оформлением.
Настройки программы
| Настройка | Описание |
|---|---|
| ?????????????? ???? ? ??????? ????? (IsTopCorner) | Верхний угол — Переключатель размещения информационных меток в верхнем или нижнем углу графика. |
| ???????? ????????? ??????? ? ????? (??? ???????? ?????????? ????????) [1..] (OffsetInBars) | Смещение в барах — Количество баров смещения от текущего момента, определяющее точку начала анализа ценовых данных. |
| ??????????? ?? ?????? ??????? (IsOffsetStartFixed) | Начальная граница зафиксирована — Переключатель фиксации начальной границы анализируемого сегмента. При активации начальная граница не сдвигается автоматически при поступлении новых баров. |
| ?????????? ?? ????? ??????? (IsOffsetEndFixed) | Конечная граница зафиксирована — Переключатель фиксации конечной границы анализируемого сегмента. При активации конечная граница не сдвигается автоматически при поступлении новых баров. |
| ?????? ??????? ? ?????, ??????? ?????? ?? ??????? [3..] (PastInBars) | Прошлое в барах — Количество баров прошлого периода, используемого для формирования анализируемого ценового сегмента. |
| ???????? ???????? ? ????? ????-????? [0..] (VarShiftInBars) | Сдвиг вариации в барах — Диапазон сдвига в барах, в пределах которого индикатор ищет вариации паттернов при сравнении с текущим сегментом. |
| ?? ??????? ????? ?????? ?????? ??????? [1..] (ForecastInBars) | Прогноз в барах — Количество баров, на которые индикатор строит прогнозное смещение. Определяет горизонт прогнозирования ценовых данных. |
| ??????????? ??????? ???????? ? ???? [1..] (MaxAgeInDays) | Максимальный возраст в днях — Максимальный возраст в днях исторических данных, которые индикатор рассматривает при поиске подходящих паттернов. |
| ???????????? ??????????? ? ?????? ????????? ? ????????? [0..100] (MaxVarInPercents) | Максимальная вариация в процентах — Максимально допустимое отклонение в процентах между найденными паттернами, используемое для фильтации неподходящих альтернатив. |
| ???????????? ????? ????????? ????????? [1..] (MaxAlts) | Максимальное количество альтернатив — Максимальное количество альтернативных найденных паттернов, которые индикатор сохраняет для сравнения и прогноза. |
| ?????????? ?? ??????? ??????? (ShowPastAverage) | Показать среднее прошлого — Переключатель отображения линии средней цены за прошлый анализируемый период на графике. |
| ?????????? ?? ??????? ??????? (ShowForecastAverage) | Показать среднее прогноза — Переключатель отображения средней линии прогнозной облачной зоны на графике. |
| ?????????? ?? ??????????? ??????? ??????? (?????? ???????) (ShowBestPattern) | Показать лучший паттерн — Переключатель отображения визуализации наилучшего найденного паттерна на графике, включая уровни открытия, закрытия, максимума и минимума. |
| ?????????? ?? ???????? ????? (ShowTip) | Показать подсказки — Переключатель отображения текстовых торговых подсказок и сигналов прямо на графике. |
| ???? ??????? ??????? (IndicatorPastAverageColor) | Цвет средней цены прошлого — Цвет линии средней цены за прошлый анализируемый период. |
| ???? ?????? ??????? ????????? (IndicatorCloudColor) | Цвет прогнозного облака — Цвет прогнозной облачной зоны, отображающей диапазон возможных значений цены в прогнозном периоде. |
| ???? ?????? ???????? ??????? (IndicatorBestPatternColor) | Цвет лучшего паттерна — Цвет отображения визуального представления наилучшего найденного ценового паттерна на графике. |
| ???? ???????????? ?????-?????? ??????? (IndicatorVLinesColor) | Цвет вертикальных линий — Цвет вертикальных линий, обозначающих границы анализируемого сегмента на графике. |
| ???? ?????? ???.????? (IndicatorTextColor) | Цвет текста — Цвет текстовых подписей и информационных меток, выводимых на график. |
| ???? TakeProfit (IndicatorTakeProfitColor) | Цвет уровней Take Profit — Цвет горизонтальных линий Take Profit и Stop Loss, отображаемых на графике при наличии торгового сигнала. |
| ?????? ???.????? ?????????? ?? ?????? ??????? ??????? (XCorner) | Позиция X угла — Горизонтальное расстояние в пикселях от выбранного угла графика до размещения информационных меток. |
| ?????? ???.????? ?????????? ?? ??????? ??????? ??????? (YCorner) | Позиция Y угла — Вертикальное расстояние в пикселях от выбранного угла графика до размещения информационных меток. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_style1 STYLE_DOT
#property indicator_width1 1
#property indicator_color1 Sienna
#property indicator_style2 STYLE_DOT
#property indicator_width2 1
#property indicator_color2 Sienna
#property indicator_style3 STYLE_SOLID
#property indicator_width3 2
#property indicator_color3 Sienna
#property indicator_style4 STYLE_SOLID
#property indicator_width4 2
#property indicator_color4 DarkKhaki
#property indicator_style5 STYLE_SOLID
#property indicator_width5 3
#property indicator_color5 DodgerBlue
#property indicator_style6 STYLE_SOLID
#property indicator_width6 3
#property indicator_color6 DodgerBlue
#property indicator_style7 STYLE_SOLID
#property indicator_width7 1
#property indicator_color7 DodgerBlue
#property indicator_style8 STYLE_SOLID
#property indicator_width8 1
#property indicator_color8 DodgerBlue
#include <stdlib.mqh>
#include <stderror.mqh>
extern bool IsTopCorner = true; // ?????????????? ???? ? ??????? ?????
extern int OffsetInBars = 1; // ???????? ????????? ??????? ? ????? (??? ???????? ?????????? ????????) [1..]
extern bool IsOffsetStartFixed = false; // ??????????? ?? ?????? ???????
extern bool IsOffsetEndFixed = false; // ?????????? ?? ????? ???????
extern int PastInBars = 12; // ?????? ??????? ? ?????, ??????? ?????? ?? ??????? [3..]
extern int VarShiftInBars = 4; // ???????? ???????? ? ????? ????-????? [0..]
extern int ForecastInBars = 4; // ?? ??????? ????? ?????? ?????? ??????? [1..]
extern int MaxAgeInDays = 365; // ??????????? ??????? ???????? ? ???? [1..]
extern double MaxVarInPercents = 95; // ???????????? ??????????? ? ?????? ????????? ? ????????? [0..100]
extern int MaxAlts = 10; // ???????????? ????? ????????? ????????? [1..]
extern bool ShowPastAverage = true; // ?????????? ?? ??????? ???????
extern bool ShowForecastAverage = true; // ?????????? ?? ??????? ???????
extern bool ShowBestPattern = true; // ?????????? ?? ??????????? ??????? ??????? (?????? ???????)
extern bool ShowTip = true; // ?????????? ?? ???????? ?????
extern color IndicatorPastAverageColor = White; // ???? ??????? ???????
extern color IndicatorCloudColor = White; // ???? ?????? ??????? ?????????
extern color IndicatorBestPatternColor = White; // ???? ?????? ???????? ???????
extern color IndicatorVLinesColor = Aqua; // ???? ???????????? ?????-?????? ???????
extern color IndicatorTextColor = White; // ???? ?????? ???.?????
extern color IndicatorTakeProfitColor = Aqua; // ???? TakeProfit
extern int XCorner = 5; // ?????? ???.????? ?????????? ?? ?????? ??????? ???????
extern int YCorner = 15; // ?????? ???.????? ?????????? ?? ??????? ??????? ???????
string IndicatorName = "WmiFor";
string IndicatorVersion = "3.0";
string IndicatorAuthor = "(w***b*@hotmail.com)";
bool Debug = true;
datetime OffsetStart, OffsetEnd;
bool IsRedraw;
datetime LastRedraw;
double PastAverage[];
double ForecastCloudHigh[];
double ForecastCloudLow[];
double ForecastCloudAverage[];
double ForecastBestPatternOpen[];
double ForecastBestPatternClose[];
double ForecastBestPatternHigh[];
double ForecastBestPatternLow[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
RemoveOurObjects();
return (0);
}
int start()
{
// код доступен только после оплаты
}
bool IsNewBar()
{
static datetime prevTime = 0;
datetime currentTime = iTime(NULL, 0, 0);
if (prevTime == currentTime)
{
return (false);
}
prevTime = currentTime;
return (true);
}
void RemoveOurObjects()
{
for (int index = 0; index < ObjectsTotal(); index++)
{
if (StringFind(ObjectName(index), IndicatorName) == 0)
{
ObjectDelete(ObjectName(index));
index--;
}
}
}
void ChangeOffset(int newOffset)
{
OffsetInBars = newOffset;
for (int indexIndicator = 0; indexIndicator < 6; indexIndicator++)
{
SetIndexShift(indexIndicator, ForecastInBars - OffsetInBars);
}
}
double Distance(double value1, double value2)
{
double value = MathAbs(value1 - value2);
return (value);
}
double DTWDistance(double& s[], double& t[])
{
int slenght = ArraySize(s);
int tlenght = ArraySize(t);
double dtw[100][100];
int i, j;
dtw[0, 0] = 0.0;
for (j = 1; j <= tlenght; j++)
{
dtw[0, j] = 1000000.0;
}
for (i = 1; i <= slenght; i++)
{
dtw[i, 0] = 1000000.0;
}
for (i = 1; i <= slenght; i++)
{
for (j = 1; j <= tlenght; j++)
{
dtw[i, j] = Distance(s[i], t[j]) + MathMin(dtw[i - 1, j], MathMin(dtw[i, j - 1], dtw[i - 1, j - 1]));
}
}
return (dtw[slenght, tlenght]);
}
void ReCalculate()
{
datetime currentTime = TimeCurrent();
if ((currentTime - LastRedraw) < 1)
{
return;
}
LastRedraw = currentTime;
IsRedraw = false;
if (Bars < 100)
{
return;
}
int handleLog;
if (Debug)
{
handleLog = FileOpen(IndicatorName + ".log", FILE_WRITE);
if (handleLog < 1)
{
Print ("handleLog = ", handleLog, ", error = ", GetLastError());
}
}
datetime xtime = iTime(NULL, 0, OffsetInBars);
datetime minDate = xtime - (MaxAgeInDays * 60 * 60 * 24);
int baseHour = TimeHour(xtime);
int baseMinute = TimeMinute(xtime);
double x[];
ArrayResize(x, PastInBars);
double x0 = iClose(NULL, 0, OffsetInBars);
if (Debug)
{
FileWrite(handleLog, "xtime", TimeToStr(xtime));
FileWrite(handleLog, "minDate", TimeToStr(minDate));
FileWrite(handleLog, "baseHour", baseHour);
FileWrite(handleLog, "baseMinute", baseMinute);
FileWrite(handleLog, "x0", x0);
}
for (int indexBar = OffsetInBars; indexBar < (OffsetInBars + PastInBars); indexBar++)
{
x[indexBar - OffsetInBars] = x0 - iClose(NULL, 0, indexBar);
if (Debug)
{
FileWrite(handleLog, "x", indexBar - OffsetInBars, x[indexBar - OffsetInBars]);
}
}
int foundAlts = 0;
int iAlt[];
ArrayResize(iAlt, MaxAlts);
double dAlt[];
ArrayResize(dAlt, MaxAlts);
int patternscount = 0;
for (int indexShift = ForecastInBars + OffsetInBars + 1; indexShift < Bars; indexShift++)
{
datetime ytimebase = iTime(NULL, 0, indexShift);
if (ytimebase < minDate)
{
break;
}
if ((indexShift + PastInBars + VarShiftInBars) >= Bars)
{
Показано первые 50% кода (символов: 15829)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.