ВОЛНОВОЙ АЛГОРИТМ ФОРЕКС

Лучшие Форекс брокеры 2021:

Волновой анализ Форекс: Индикаторы и советники, Волны Вулфа

Волновой анализ форекс – это анализ на основе обнаружения структурированных формаций на валютных инструментах. Его начали массово применять после 2000 года, когда рынок начал изменяться. Форекс стал более динамичным, на нем не было уже сильных движений. Объем торгов вырос с нескольких сотен миллиардов долларов до триллионов долларов как сейчас. Вместе с изменением структуры рынка изменились и виды анализа, к примеру, на бирже форекс, волновая теория работает лучше всего на самых популярных парах – евро/доллар, фунт/доллар и другие.

Программное обеспечение для волнового анализа

При торговле волновой анализ forex осуществляется с помощью специальных программ – это:

А) Индикаторы. Простые программы, волновые индикаторы форекс, которые можно использовать для обнаружения волновых элементов финансовых инструментов.

  1. Автоматические: программы, которые используются для автоматического обнаружения и анализа элементов волновой теории рынка.
  2. Полуавтоматические: программы, похожие на автоматические, но требующие внимания трейдера для открытия сделок по предложенным вариантам.

Исходя из видов анализа, перед тем как провести волновой анализ рынка forex, следует определиться с индикаторами и стратегиями, которые будут использованы для его проведения.

Индикаторы использовать достаточно просто, в них заложен готовый алгоритм распознавания ценовых моделей. Проводя волновой анализ рынка форекс, даже при наличии торговой стратегии и индикаторов, для заработка обязательно нужны знания о поиске целей по волновым моделям.

Для того чтобы понять волновой анализ форекс, как делать его, следует применять торговые стратегии и индикаторы, которые не мешают друг другу. Большинство новичков часто считает, что волновой индикатор зиг-заг – это уже прогноз. На самом деле это не так. Сам по себе индикатор ничего не дает, а вот совместное применение анализа с автоматическим торговым советником может расширить представление о рынке.

Рейтинг Форекс брокеров:

Индикаторы для анализа.

Так как волновой прогноз форекс может быть сделан по различным волновым теориям, то нужно выделить основные индикаторы и типы прогнозов.

Волновой индикатор – Elliott Wave Prophet. Этот индикатор показывает возможный ход цены согласно волновой теории Эллиотта. Суть торговли заключается в поиске входа в третью волну Эллиотта. Этот метод очень эффективен как для скальпинга, так и для среднесрока. Эта теория работает на трендовом рынке. Рассмотрим саму теорию пятиволновки Эллиотта:

Согласно его закону – цена движется по принципу приливов и отливов. После тренда всегда идет откат. Пятиволновка состоит из трех трендовых волн и 2 коррекционных. Каждая из подволн пятиволновки состоит из еще меньших подволн второго порядка. Вход осуществляется по окончанию второй волны. Выход из сделки следует по завершению третьей волны и начала четвертой волны Эллиотта.

Кроме волн Эллотта, также, часто используют Волны Вульфа. Чтобы проводить волновой анализ форекс, обучение нужно начинать с фракталов и трендов, а заканчивать непосредственно волновыми теориями. Эту стратегию форекс, волновая теория которой Волны Вульфа, можно применять на любом торговом графике, на всех временных интервалах. Кроме того, все волновые стратегии отлично работают на фьючерсах, товарах и индексах. Акции крупных компаний на временных интервалах Д1-В1 имеют множество гармоничных волновых моделей.

Волновая стратегия форекс на основе Волн Вульфа позволяет заработать по тренду от точки окончания отката.

Сама структура волны состоит из пяти точек. Тока 6 – наша цель при торговле по тренду.

Рейтинг Форекс платформ:

Волна 1 – основание модели WW

Волна 2 – одна из значимых вершин. Выход за максимум точки 1 необязателен.

Волна 3 – новый экстремум. Эта волна всегда должна быть минимум волны 1.

Волна 4 – всегда выходит за минимум точки 2, но никогда не должна выходить за максимум второй волны.

Волна 5 – обновление минимума, выходит за минимум волны 3.

Волна 6 – самая мощная из волн модели, начинается точкой 5 и заканчивается точкой 6.

Для торговли на форекс, волновая теория Вульфа подходит тем, кто не привык или не научился еще скальпировать или торговать интрадей.

Обнаружить такую модель Вульфа иногда нелегко. Все дело в том, что для ее обнаружения паттерна нужно проанализировать хотя бы 10-20 из них. Когда трейдер научится распознавать волны по определенным шаблонам, можно торговать уже и без них.

Обнаружение Волн Вульфа.

Идентифицировать волну Вульфа можно только тогда, когда сформированы первые четыре волны, а торговать лучше всего только ход цены к точке 6. Вся работа с формацией Вульфа проходит именно в 6-й волне. Перед открытием сделки, для поиска волны, следует подождать формирование точек 1, 2, 3 и 4. Далее необходимо провести две линии, которые будут считаться основными, базовыми. Первая трендовая линия проводится с точки 1 через точку 4. На луче 1-4 следует искать точку 6. Второй трендовый луч проводится по минимальным точкам коррекции 1 и 3. На этом лучше расположится точка 5, которая послужит началом шестой волны, в конце которой будет точка 6 – наша цель. Если цена перешла точку 5, то это называется вход в Свит-зону, в которой сделку можно совершить еще выгоднее. Если точка 5 не находится на луче 1-3, то такую ВВ торговать не стоит, если между точками 3 и 5 нету дивергенции.

Для начала торговли в 6 волне нужно получить подтверждение о ее начале. Это может быть какой-либо разворотный сигнал по нескольким последним временным интервалам, а может быть сигнал от какого-то индикатора. Для подтверждения можно использовать такую среднюю скользящую, которая сможет послужить поддержкой точки 5. Для этого нужно подобрать необходимый период. Не обязательно, чтобы средняя скользящая была экспоненциальной. Как альтернатива – проведение горизонтального уровня, на котором будет лежать вершина 5-й волны. Еще один вариант: образование молота или обратного молота в вершине 5-й волны, а также, достижение точкой 5 значимого уровня Мюррея или скользящей средней, о которой можно почитать выше.

Индикаторы для Волн Вульфа работают плохо, часто алгоритм сбивается. Однако, волновой индикатор форекс, WolfWave nen может помочь искать подобные волны, упрощая визуализацию с помощью индикатора зиг-заг.

Еще несколько слов про волновой анализ. Чем больше временной интервал, тем более верным окажется волновой анализ форекс. На Н4 и Д1 волны отрабатываются замечательно, но ждать придется долго. На мелких временных интервалах волновых паттернов много, на них много шумов и торговать их сложно, но общая прибыль может быть выше за счет использования принципа Мартингейла, то есть увеличение лота в случае убытка.

Волновой анализ Форекс

Все движение на форексе не является беспорядочным хаосом и его можно условно разделить на:

  • тренд – в волновом анализе – импульс;
  • флет – коррекция (откат) старшего ТФ.

Волновая теория дает алгоритм движения валютных пар:

  • тренд (волны импульса) имеет 5-ти волновую структуру (волны обозначаются цифрами 1,2,3,4,5, А,В,С) и состоит из волн импульса и коррекции;
  • волны импульса – 1,3,5 – длиннее волн коррекции и показывают направление тренда;
  • волны коррекции – 2 и 4, каждая из которых имеет 3-х волновую структуру (а-в-с) и показывает направление, противоположное текущему тренду.

Значение волн Эллиота для трейдера:

  • чтобы работать по тренду, необходимо видеть НАПРАВЛЕНИЕ тренда – волны импульса, которые длиннее волн коррекции;
  • волновой анализ позволяет видеть в какой точке движения находятся валютные пары с точки зрения структуры волнового движения (начинается тренд или уже заканчивается);
  • становятся очевидными цели движения волн тренда (если пробита вершина 1-й волны, тогда 3-я волна дойдет как минимум до 162%).

Структура подволн в тренде

  • 1-я, 3-я, 5-я волны импульса имеют 5-ти волновую структуру своих подволн;
  • волны коррекции (2 и 4) имеют 3-х волновую структуру и обозначаются А-В-С.

Характеристика каждой волны:

  • 2 волна = 0.382 – 0.618 длины 1-й волны;
  • 3 волна = 1.618 – 2.618 длины 1-й волны;
  • 4 волна = 0.382-0.5 длины 3-й волны;
  • 5 волна = 0.382-0,618 длины 3-й волны (5-я растянутая волна = расстояние от начала волны 1 до вершины волны 3 помноженное на 1,618).

A = 1 или 0.618-0.5 длины Волны 5;

B = 0.382-0.5 длины Волны A;

C = 1.618 или 0.618-0.5 длины Волны A.

  • во 2 волне А=В=С, или А=0,618*1 волну, В=0,618*А волну, С= 0,618*В волну, тоесть сходящийся треугольник;
  • в 4 волне А=С или А=0,618*3 волну, В=0,618*А волну, С= 0,618(или на 1,618)*В волну;
  • в 4 волне В= 0,236*А волну.

Удлиненные и усеченные волны.

Классический вариант, когда импульсивные 1, 3, 5 волны состоят из 5-ти подволн, встречается не всегда. 1, 3, 5 волны могут быть удлиненными или усеченными.

  • Удлиненные волны. Волновые удлинения – это растянутые импульсы с расширенной волновой структурой (вместо 5-ти волн – 7, 9, 11 и т.д.). Удлинение волны происходит лишь в одной из импульсивных волн (в 1, 3 или 5. Обычно в 3-й волне).
  • Усеченные волны. 5-я усеченная волна не пробивает пик 3-й волны. Критерии усеченной 5-й волны: имеет 5-ти волновую структуру; усечение обычно происходит после чрезвычайно сильной 3-й волны.

Фибоначчи и волны.

Последовательность Фибоначчи – это цифры, в которых каждая последующая цифра равна сумме двух предыдущих 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 и т.д.

Уровни Фибоначчи (Золотая пропорция):

  • После первых нескольких чисел в последовательности, отношение любого числа к следующему старшему равна примерно 0.618, а к соседнему младшему – приблизительно 1.618.
  • Соотношение между числами, расположенными через одно в последовательности, приблизительно равно 0.382, что является инверсией от 2.618 (1 : 2.618).

Это соотношение и используется в волновом анализе для расчета целей движения волн импульса и отката.

Волна импульса = уровням расширения Фибоначчи (162%-362% от 1-й волны).
Волна коррекции = 23%-76% от предыдущей волны.

а) цели импульсных (3 и 5-й) волн тренда лежат в пределах от 1,62% до 2,62% от 1 волны (иногда и больше):

б) цели коррекции (2 и 4 волны) от предыдущей волны:

  • 2-я волна = по классике 38%-76% от 1-й волны,
    4-я волна = по классике 38%-50% от 3-й волны.

Дополнительные критерии волн

а) 2-я волна не может заходить за основание (точку старта) 1-й волны:

б) 4-я волна не может заходить в зону 1-й волны.

в) 3-я волна не может быть самой короткой в 5-ти волновом импульсе

Значение для трейдера аксиом волнового анализа и форс мажоров, отменяющих импульс:

  • Если отменяется импульс – нет продолжения тренда;
  • Валюта на месте стоять не будет (если не может идти вверх, значит пойдет вниз).

Типичные ошибки трейдеров

а) открытие сделки против тренда

б) открытие сделки по тренду в конце волны

Волновые уровни.

  • рынок движется по законам волновой теории нескольких волновых уровней;
  • один волновой уровень = 5-ть волн импульса и 3 волны коррекции;
  • полный цикл из 5-ти волн импульса и 3 волны коррекции – это всего лишь одна волна более высокого уровня;
  • эта волна более высокого уровня – всего лишь подволна следующего за ним уровня.

Структура волн нескольких волновых уровней

Принцип чередования моделей коррекции по глубине и структуре на 2-й и 4-й волне

Если 2-я волна является резкой коррекцией, то 4-я волна будет боковой коррекцией и наоборот.

Форекс индикатор WATL – лучший индикатор волновой разметки Эллиотта

Форекс индикатор WATL (Wave AutoTrendLines) предназначен для построения на ценовом графике валютной пары волновой разметки Эллиотта. Для расчета импульсных волн старшего и младшего порядков индикатор WATL использует уникальный алгоритм, учитывающий их уровни. По мнению многих трейдеров-волновиков, форекс индикатор WATL — лучший индикатор волновой разметки Эллиотта.

Волновой анализ — разбор

Котировки финансовых инструментов всегда находятся в движении, развивающемся волнообразно. Понимая принципы рыночной динамики, можно формировать высоко вероятные прогнозы, и хорошо зарабатывать на них. В этой статье мы разберем, что такое Волновой анализ рынка Форекс, и как его использовать в торговле.

Введение

Волновой анализ рынка позволит вам лучше понять механику изменения цены финансовых активов. Движение котировок включает три фазы:

  1. Трендовая.
  2. Флэтообразная.
  3. Разворотная.

Курсы валют редко двигаются линейно. Для них больше характерна волнообразная структура. Она включает два вида волн: импульсные и коррекционные. Первые идут по тренду, а вторые против него. Таким образом движение цены происходит зигзагообразно: импульс-коррекция-импульс.

Суть Волнового Анализа

Волновой анализ Эллиотта — теория, которая активно используется трейдерами по всему миру. Ее суть достаточно простая. Импульсные волны состоят из пяти подволн. Три из них также являются импульсными, а оставшиеся две — коррекционные. При этом коррекционные волны состоят из трех подволн.

На первый взгляд все просто. Однако некоторые трейдеры скептически воспринимают Волновой анализ Форекс. Поскольку каждый аналитик видит волновую структуру по-своему. В результате возникает путаница. Однако Волновой анализ является составной частью технического анализа. Без его понимания не получится результативной торговли. Поэтому очень важно научится использовать эту методику.

Пример Волнового Анализа

Оптимальным инструментом проведения Волнового анализа считается индикатор ZigZag. Некоторые трейдеры предпочитают находить формации по пунктам изменения цены. Рекомендуем попробовать оба метода.

Волну считают сформированной, если она достигает некоторого значения в пунктах. К примеру: 150, 125, 100, 75 и т. д. Все зависит от выбранного таймфрейма. Второй принцип определения волн следующий: «импульс всегда больше коррекции».

Алгоритм торговли

В трейдинге Волновой анализ Евро, или любой другой валюты, выполняется по определенному алгоритму. Сначала осуществляется поиск зигзагообразной формации на графике актива. Вход в рынок выполняется после окончания коррекционного движения, или на пробой локального минимума или максимума.

Ордер «Стоп Лосс» ставится за локальным экстремумом. «Тейк Профит» определяют по сетке Фибоначчи. Также рекомендуется использовать уровни поддержки и сопротивления при формировании торговой стратегии. Опытные трейдеры ориентируются на поиск волн размером от 75 до 250 пунктов, увеличивая потенциальную прибыль от сделки.

Итоги

Волновой анализ USD или любого другого актива позволит вам оптимизировать свою торговую стратегию. Это мощный инструмент, который используют успешные трейдеры по всему миру.

Добавить комментарий Отменить ответ

Курс биткоина

Начните торговать на рынке форекс онлайн на сайте лучшего брокера, торгуйте и зарабатывайте!

Brexit — широко распространенное название процесса и самого выхода Великобритании из Европейского Союза. Британцы приняли решение о выходе из этой ситуации на референдуме 23 июня 2022 года. 52% британцев проголосовали за выход из Евросоюза. Он состоится не позднее 31 декабря 2022 года.

На протяжении многих лет в Соединенном Королевстве существует большая группа людей, которые требовали покинуть Европейский Союз. В 2022 году тогдашний премьер-министр Дэвид Кэмерон пообещал провести референдум, если Консервативная партия сохранит свою власть на выборах и сдержит свое слово.

После объявления результатов референдума премьер-министр Дэвид Кэмерон, выступавший за сохранение Великобритании в Европейском союзе, подал в отставку. Тереза Мэй создала правительство, которое ведет переговоры с ЕС об условиях выпуска брекситов.

За это время была достигнута договоренность о переходном периоде. Датой выхода также была указана дата — это должно произойти до 31 декабря 2022 года.

Доступное объяснение алгоритма коллапса волновой функции

Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.

Чаще всего он используется для создания изображений, но может также строить города, скейтпарки и писать ужасные стихи.

Коллапс волновой функции — это очень независимо мыслящий алгоритм, не требующий практически никакой помощи или инструкций извне. Вам нужен только пример стиля, которого нужно достичь, а всё остальное он сделает сам. Несмотря на свою самодостаточность, он на удивление прост. Он не использует никаких нейронных сетей, случайных лесов или чего-то другого, похожего на машинное обучение. Если разобраться с идеей, он станет для вас очень понятным и интуитивным.

Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.

Давайте начнём с истории.

Свадьба

Представьте, что вы планируете свою свадьбу. Кроме подбора украшений и музыки вам нужно создать план рассаживания гостей для обеда. Ваша семья любит поспорить и капризничать, поэтому это может оказаться сложным. Отец не может сидеть ближе чем в двух столах от матери. Двоюродной сестре становится одиноко, если она не сидит с другой двоюродной сестрой. А дядю Роя лучше не сажать рядом с экологически настроенными членами семьи вашего партнёра. Осталось всего 5 часов до прибытия еды, поэтому вы решаете атаковать эту упрямую задачу при помощи алгоритма коллапса волновой функции.

Вы начинаете с длинного списка правил и пустого плана рассаживания гостей.

Вы создаёте исходную волновую функцию плана. Она привязывает каждый стул к списку людей, которые на нём могут сидеть. Пока на любой стул может сесть любой человек. Волновая функция рассаживания гостей начинается с полной суперпозиции (понятие заимствовано из квантовой физики) каждой возможной схемы.

Кот Шрёдингера был одновременно мёртвым и живым, пока кто-нибудь не откроет ящик и не проверит; ваш план одновременно является каждой возможной схемой, пока вы не наведёте в нём порядок. Полная суперпозиция — полезная теоретическая конструкция, но она не поможет вашей бабушке разобраться, где ей нужно сидеть. Вам нужно привести волновую функцию расположения гостей к единственному определённому состоянию, которую потом можно превратить в обычные, неквантовые карточки с именами.

Начинаем мы это делать, выполняя коллапс волновой функции для одного стула. Выбираем стул, смотрим на список людей, которые могут на нём сидеть, и случайным образом назначаем его одному из них. При этом волновая функция стула становится коллапсированной.

Этот выбор имеет последствия, распространяющиеся на волновые функции остальных стульев. Если дядя Рой будет сидеть за столом 2, то кузен Фрэнк и Мишель Обама (друг семьи вашего партнёра) точно не будут рядом с ним. А если Мишель не сядет за стол 2, то Барака за ним тоже не будет. Мы обновляем волновую функцию плана расположения, вычёркивая людей из списков возможных кандидатов.

Как только колебания устоятся, мы повторяем этот процесс. Выбираем ещё один стул с несколькими возможными кандидатами и коллапсируем его волновую функцию, случайным образом выбирая одного из допустимых для него людей. Снова распространяем колебания, вызванные этим выбором, на весь остальной план, удаляя из волновой функции стула людей, если они больше не могут на нём сидеть.

Мы повторяем этот процесс или пока волновая функция не коллапсирует (то есть в ней не останется ровно 1 сидящий человек), или пока мы не достигнем противоречия. Противоречие — это стул, на котором не может сидеть никто, потому что всех их исключили из-за предыдущих выборов. Противоречие делает невозможность коллапс всей волновой функции.

Если вы достигли противоречия, то проще всего будет начать сначала. Отбросить всю предыдущую работу, найти новый пустой план и запустить алгоритм заново, выполнив коллапс волновой функции для другого случайного стула. Можно также реализовать систему возврата назад, позволяющую отменять отдельный выбор, а не отказываться сразу от всего («что если пересадить Шейлу на стул 54?»).

После нескольких фальстартов вы наконец достигнете полностью коллапсированного состояния, в котором каждый стул назначен ровно одному человеку и соблюдены все правила. Готово!

От свадьбы к битовым картам

Это не теоретический пример. Вы действительно можете реализовать вариант коллапса волновой функции, который будет создавать план рассаживания гостей для свадьбы. Однако в более традиционном Wavefunction Collapse мы обычно пытаемся не рассадить людей на свадьбе, а расставить пиксели на выходящем изображении. Тем не менее, процесс будет очень похожим. Мы обучаем алгоритм набору правил, которым должны удовлетворять выходные данные. Инициализируем волновую функцию. Выполняем коллапс одного элемента и распространяем последствия на остальную часть волновой функции. И продолжаем так делать, или пока волновая функция полностью не коллапсирует, или пока мы не достигнем противоречия.

Традиционный коллапс волновой функции отличается от свадебного коллапса тем, как мы обучаем алгоритм правилам, которые он должен соблюдать. В свадебной версии нам пришлось записывать правила самостоятельно. Но в традиционной версии мы просто даём алгоритму изображение-пример, и исходя из него алгоритм создаёт всё остальное. Он парсит пример, анализирует его паттерны и выясняет, как должны выстраиваться пиксели или тайлы.

Давайте начнём исследование реального коллапса волновой функции с рассмотрения простого особого случая, который ExUtumno (создатель алгоритма) называет простой тайловой моделью (Simple Tiled Model).

Simple Tiled Model

В модели Simple Tiled Model входящие и выходящие изображения строятся из небольшого количества заранее определённых тайлов, и каждый квадрат в выходящем изображении ограничивается только его четырьмя ближайшими соседями. Например, предположим, что мы генерируем случайные миры для двухмерной игры с видом сверху. У нас могут быть тайлы для суши, побережья и моря, а также набор правил вида «побережье может находиться рядом с морем», «суша может быть рядом с побережьем» и «море может быть рядом с другим морем».

Simple Tiled Model учитывает симметрию и поворот своих тайлов. Например, суша может находиться рядом с побережьем, но только в правильной ориентации.

Эта обработка симметрии обеспечивает более качественные выходные изображения, но усложняет код. Чтобы не усложнять, давайте рассмотрим ещё более простой вид коллапса волновой функции, который я назвал Even Simpler Tiled Model.

Even Simpler Tiled Model

Even Simpler Tiled Model («ещё более простая тайловая модель») похожа на Simple Tiled Model, но её тайлы не имеют свойств симметрии. Каждый тайл — это один пиксель одного цвета, то есть мы никак не сможем перепутать их края.

Правила Even Simpler Tiled Model определяют, какие тайлы можно размещать рядом друг с другом и в какой ориентации. Каждое правило представляет собой кортеж из трёх элементов (3-tuple): двух тайлов и направления. Например, (SEA, COAST, LEFT) означает, что тайл SEA (море) может размещаться СЛЕВА от тайла COAST (побережье). Это правило должно сопровождаться другим правилом, описывающим ситуацию с точки зрения COAST — (COAST, SEA, RIGHT) .

Если вы хотите, чтобы тайлы SEA могли располагаться не только СЛЕВА , но и СПРАВА от тайлов COAST . то им нужны дополнительные правила: (SEA, COAST, RIGHT) и (COAST, SEA, LEFT) .

Как я сказал выше, нам не нужно создавать список всех этих правил самостоятельно. Коллапс волновой функции может создать набор правил для Even Simpler Tile Model парсингом изображения-примера и собиранием списка всех 3-tuple, которые в нём содержатся.

Исследовав показанный выше пример изображения, Even Simpler Tiled Model замечает, что тайлы моря могут быть только под или сбоку от тайлов побережья, или в любом месте рядом с другими тайлами моря. Также она замечает, что тайлы побережья могут располагаться рядом с сушей, морем или другими тайлами побережья, но только над тайлами моря и под тайлами суши. Она не пытается вывести никакие более сложные правила, например «тайлы моря должны быть рядом по крайней мере с одним тайлом моря» или «каждый остров должен содержать как минимум один тайл суши». Ни один из тайлов не может влиять на то, что какие-то типы тайлов могут или не могут располагаться в двух или более квадратах от них. Это похоже на модель плана свадьбы, в которой единственное правило: «X может сидеть рядом с Y».

При анализе входящего изображения нам также нужно записывать частоту, с которой встречается каждый из тайлов. Позже мы используем эти числа как веса при выборе волновой функции квадрата, коллапс которой нужно выполнить, а также при выборе тайла, назначаемого квадрату при его коллапсировании.

Узнав правила, которых должно придерживаться выходящее изображение, мы готовы к построению коллапсированию волновой функции выходящего изображения.

Коллапс

Как и в примере со свадьбой, мы начинаем процесс коллапсированя с волновой функции, в которой каждый квадрат выходящего изображения находится в суперпозиции каждого типа тайла.

Начнём с выбора квадрата, волновую функцию которого будем коллапсировать. В примере со свадьбой этот выбор делался случайно. Однако, как заметил ExUtumno , люди обычно подходят к таким задачам иначе. Вместо этого они ищут квадраты с наименьшей энтропией. Энтропия — это мера неопределённости и беспорядка. В общем случае квадрат с высокой энтропией — это квадрат со множеством возможных тайлов, оставшихся в его волновой функции. Пока очень непонятно, к какому тайлу он в конечном итоге коллапсирует. Квадрат с низкой энтропией — это квадрат с малым количеством возможных тайлов в волновой функции. Набор тайлов, к одному из которых он в результате коллапсирует, уже очень ограничен.

Например, в модели Even Simpler Tile Model квадрат без информации об окружающих его квадратах ничем не ограничен и может стать любым тайлом. Следовательно, он имеет очень высокую энтропию. Но квадрат, вокруг которого уже коллапсировало несколько квадратов, может иметь на выбор всего 2 тайла.

Волновая функция центрального квадрата на рисунке выше не полностью коллапсировала, но мы уже знаем, что она не может быть тайлом суши. Тем не менее, она уже ограничена, а значит, имеет энтропию ниже, чем у правого верхнего квадрата, который всё ещё может быть сушей, морем или побережьем.

Именно на такие ограниченные тайлы с низкой энтропией обычно и обращают внимание люди, когда вручную решают подобные задачи. Даже если вы не пользуетесь коллапсом волновой функции для создания плана размещения гостей на свадьбе и будете составлять его самостоятельно, то всё равно сосредоточитесь на тех областях плана, в которых уже есть наибольшее количество ограничений. Вы не будете сажать Дуэйна за стол 1, а затем случайным образом перепрыгивать, чтобы посадить Кэти за стол 7 (который пока пуст). Вы сначала посадите Дуэйна, потом разберётесь, кто может сидеть рядом с ним, затем кто может сидеть рядом с этим человеком, и так далее. Я пока не видел обоснований этого, но моя интуиция говорит, что при использовании этой эвристики минимальной энтропии скорее всего будет получаться меньше противоречий, чем при случайном выборе квадратов для коллапсирования.

В качестве формулы энтропии в алгоритме коллапса волновой функции применяется формула Шеннона. В ней используются веса тайлов, которые мы спарсили из входящего изображения на предыдущем этапе:

Вычислив квадрат волновой функции с наименьшей энтропией, мы коллапсируем её волновую функцию. Мы делаем это, случайным образом выбирая один из тайлов, пока ещё доступных для квадрата, взвешенный на веса тайлов, которые мы спарсили из входящего изображения. Веса используются потому, что это обеспечивает более реалистичное изображение на выходе. Допустим, волновая функция квадрата сообщает, что он может быть сушей или побережьем. Мы не всегда должны выбирать один из вариантов с вероятностью 50%. Если во входящем изображении больше тайлов суши, чем побережья, то нам стоит отразить этот перевес и в выходном изображении. Реализуется это при помощи простых глобальных весов. Если в примере изображения есть 20 тайлов суши и 10 тайлов побережья, то квадрат коллапсирует в сушу с вероятностью 2/3 , а в побережье — с оставшейся вероятностью 1/3 .

Затем мы распространяем последствия выбора на остальную волновую функцию выходных данных («если тот тайл оказался морем, то этот не может быть сушей, то есть этот не может быть побережьем»). Когда все эти сотрясения улягутся, мы повторяем процесс, используя эвристику минимальной энтропии для выбора следующего коллапсирующего тайла. Повторяем этот цикл коллапсирования-распространения, или пока вся волновая функция выходного изображения полностью не коллапсирует и мы сможем вернуть результат, или пока мы не достигнем противоречения и вернём ошибку.

В итоге мы создали мир (или ошибку).

Куда двигаться дальше

Разобравшись с моделью Even Simpler Tiled Model, вы готовы подниматься выше по лестнице мощности и сложности алгоритма. Начните с Simple Tiled Model, которую мы упоминали в начале этого поста, затем перейдите к полной Overlapping Model. В Overlapping Model тайлы или пиксели влияют друг на друга издалека. Если вы понимаете в таких вещах, то ExUtumno замечает, что Simple Tiled Model схожа с цепью Маркова порядка-1, а более сложные модели напоминают цепи большего порядка.

Wavefunction Collapse даже может учитывать дополнительные ограничения, например «этот тайл должен быть морем» или «этот пиксель должен быть красным» или «в выходных данных может быть только один монстр». Обо всё этом рассказывается README основного проекта. Также можно изучить оптимизации скорости, внесённые в полную реализацию. Необязательно повторно вычислять энторпию каждого квадрата в каждой итерации, а распространение информации по волновой функции можно сделать значительно быстрее. Эти аспекты становятся важнее при увеличении размеров выходящих изображений.

Коллапс волновой функции — это красивый и мощный инструмент, который стоит освоить. Вспомните об этом, когда в следующий раз будете планировать свадьбу или генерировать процедурный мир.

Честные Форекс брокеры этого года:
Оцените статью
Сайт любителей Форекса