Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Классификатор на основе k-ближайших соседей. - эксперт для MetaTrader 4

Просмотров:
6951
Рейтинг:
(17)
Опубликован:
2009.01.06 07:05
Обновлен:
2016.11.12 14:08
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Реализация машины с памятью на основе k-ближайших соседей. Данный подход не дал мне желаемого результата, возможно из-за того что мало времени с ним возился (что скорее всего), возможно из-за нехватки каких-то знаний. В общем я решил выложить подход для обсуждения и может быть это даст свои плоды.

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

Функция Euclidean_Metric – представляет собой классификатор. Функция по имеющейся базе векторов описывающих либо сделки, либо ситуации на рынке определяет принадлежность входного вектора к какой-либо группе векторов из базы. Вектора на группы разделяете Вы, в моём примере просто: Если сделка закрылась с положительным результатом то это класс 1, если с отрицательным результатом то класс 0. Поиск ближайших соседей многомерного вектора производиться при помощи евклидова расстояния. Затем просчитываем сколько из этих k-векторов принадлежат к классу 1, после чего делим это число на общее количество соседей(т.е. на k) и получаем вероятность принадлежности данного вектора к классу 1. Из-за “плохих” выбранных координат векторов мы не можем доверять полностью( просто выше 0,5 или ниже 0,5) классификации, поэтому дополнительно я ввёл пороговое значение, т.е. если вероятность прибыльности будущей сделки выше, допустим, 0,7 то входим в рынок. В качестве измерений(координат) векторов я взял отношения мувингов, предположив что отношения стационарны и раз расклассифицировав вектора(сделки) можно будет использовать такую классификацию и на форварде. Но не всё так просто :) . Почему именно k-ближайших соседей? Просто потому что если взять 1-го ближайшего соседа то это может оказаться аномальным выбросом случайной величины который и будет выбран для классификации, не учитывая что рядом скопление противоположных(по группе) векторов. Подробное описание Хайкин С. «Нейронные сети: полный курс»(Методы Обучения).

Проблемы классификатора 2:

1) Найти стационарные данные описывающие рыночные ситуации(или будущие сделки) с требуемой точностью или с требуемым уровнем правильной классификации.

2) Большой объём мат.операций следствие – долго считается…(кстати говоря в сравнении с PNN немного меньше)

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

Теперь конкретно о реализации.

Base - true пишем файл с базой векторов, false торгуем с классификацией…

buy_threshold=0.6 порог на все Buy позиции

sell_threshold=0.6 аналогично на sell

inverse_position_open_?=true; А вот это интересный момент, Если у нас вероятность прибыльной сделки очень мала, то почему бы нам не зайти в рынок с инвертированной позицией? Ну вот этот флажок включает такие позиции.

invers_buy_threshold=0.3 порог, когда вероятность прибыльной Buy позиции меньше то входим на селл

invers_sell_threshold=0.3; аналогично

fast=12 параметры MACD

slow=34;

tp=40; Тэйк

sl=30; Стоп

close_orders=false; флажок включает закрытие по противоположному сигналу, только если ордер в прибыли…

Используем так: Сначала флажок Base - true, ставим sl=tp и прогоняем по истории (1 раз!) записывается файл векторов. Следующий раз ставим Base - false и пороги желательно оптимизировать, на априорно я выбираю глядя на 1-й отчёт(без классификации) если вероятность выигрыша = 0,5 то пороги 0,6 и 0,4(на инвертированные позиции)

Ещё раз повторюсь это пример, таким же образом классификатор может применяться и к другим ТС, с другими входными данными

До классификации:

После, с оптимизацией порогов.

Источник tradexperts.ru 

chaos 2.0 chaos 2.0

Сигнальный индикатор на основе сигнала Ао и АС - изменение цвета гистограммы.

Информационный индикатор Информационный индикатор

Указывает на уровни: SPREAD и STOPLEVEL-минимально допустимый уровень стоп-лосса/тейк-профита в пунктах. Информирует при изменении этих величин.

Parabolic_standart2 Parabolic_standart2

Улучшенная версия индикатора Parabolic.

Индикатор пиковых значений цен. Индикатор пиковых значений цен.

Индикатор пиковых значений цен.