Скачать MetaTrader 5

Советники: Классификатор на основе k-ближайших соседей.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
184294
MetaQuotes Software Corp.  

Классификатор на основе k-ближайших соседей.:

В данном эксперте рассмотрен пример использования классификатора. Может быть применён к любой другой стратегии.

Author: Артём

bobby
129
bobby  

Hi StatBars, thanks for sharing this code. This is one of the most impressive EA that I've seen, you have done an excellent job. I've made some optimization after few hours. The results are here.

MQL4 Comments
16319
MQL4 Comments  

+) Интересный подход.

Артём
16
Артём  
FION:

+) Интересный подход.

Да, мне тоже понравилось когда прочитал в книжке, кстати удивлён был почему у всех на слуху были сети, коды всевозможных сетей на мкл есть, а такой простой и в тоже время эфективной k-NN нету...

MQL4 Comments
16319
MQL4 Comments  

Оч. интересно. Неплох на Out-of-Sample, имеет неплохой начальный импульс после "обучения". Вообщем отличная пища для размышления и стапель для дальнейших эксперементов. Спасибо.

Evgeniy Uvarov
184
Evgeniy Uvarov  
Galaxy:

Оч. интересно. Неплох на Out-of-Sample, имеет неплохой начальный импульс после "обучения". Вообщем отличная пища для размышления и стапель для дальнейших эксперементов. Спасибо.


Присоединяюсь!

После своих экспериментов отпишу, конечно,если лучше станет:-)

MQL4 Comments
16319
MQL4 Comments  
StatBars:

Да, мне тоже понравилось когда прочитал в книжке, кстати удивлён был почему у всех на слуху были сети, коды всевозможных сетей на мкл есть, а такой простой и в тоже время эфективной k-NN нету...

Структура весьма чуствительна к точности работы основного фильтра, имею введу MACD, схема формирования векторов для классификатора не совсем ясна. Можете дать ссылочку на литературу?

ViDan888
152
ViDan888  

Присоеденяюсь...

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

ViDan888
152
ViDan888  

...в инете кое что нарыл, но в основном теория http://www.intuit.ru/department/database/datamining/10/datamining_10.html

...так, для общего понимания.

Артём
16
Артём  
FION:
StatBars:

Да, мне тоже понравилось когда прочитал в книжке, кстати удивлён был почему у всех на слуху были сети, коды всевозможных сетей на мкл есть, а такой простой и в тоже время эфективной k-NN нету...

Структура весьма чуствительна к точности работы основного фильтра, имею введу MACD, схема формирования векторов для классификатора не совсем ясна. Можете дать ссылочку на литературу?

Вот ссылка. Но основной источник, а точнее то что по ссылке я увидел позднее, это Хайкин С. «Нейронные сети: полный курс»(Методы Обучения).

Что неонятно в формировании векторов? Как именно это происходит в этом эксперте или общие принципы?

Если общие то лучше в литературе прочитать...
По поводу MACD - для примера я взял обычную стратегию, где входы по пикам, выход по противиположному сигналу либо TP SL.

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

Теперь у нас есть база векторов, где все вектора помечены 0/1, координаты этого вектора отношения мувингов.

Теперь заново бежим по истории, уже когда флажок Base=false.

Как только MACD даёт сигнал на покупку заполняем вектор также как и раньше в том же порядке и т.д.

вот фрагмент

veсtor[0]=iMA(Symbol(),Period(),89,0,0,5,1)/iMA(Symbol(),Period(),144,0,0,5,1);
veсtor[1]=iMA(Symbol(),Period(),144,0,0,5,1)/iMA(Symbol(),Period(),233,0,0,5,1);
veсtor[2]=iMA(Symbol(),Period(),21,0,0,5,1)/iMA(Symbol(),Period(),89,0,0,5,1);
veсtor[3]=iMA(Symbol(),Period(),55,0,0,5,1)/iMA(Symbol(),Period(),89,0,0,5,1);
veсtor[4]=iMA(Symbol(),Period(),2,0,0,5,1)/iMA(Symbol(),Period(),55,0,0,5,1);

После чего Этот вектор который, как видите, не имеет метки 0/1 посылаем в базу для определения его метки(его класса).

Prob_win=Euclidean_Metric(base_buy,veсtor,numbers_of_vectors_buy);

base_buy - база векторов buy позиций, я специально разделил короткие и длинные позиции, нельзя мешать всё в кучу.

veсtor - текущий вектор

numbers_of_vectors_buy - количество векторов в базе

Функция возвращает вероятность принадлежности этого вектора к классу 1(выигрышной).

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

Артём
16
Артём  

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

Просто данный брались однообразные( все координаты примерно в одном интервале) поэтому нет...

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий