Здравствуйте, гость ( Вход | Регистрация )
| leonid553 |
23.3.2007, 11:29
Сообщение
#1
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) |
Yury V. Reshetov
Нейронная сеть Что такое нейронная сеть или Perceptron? Это алгоритм использующий уравнение линейного неравенства (линейного фильтра), с помощью которого можно причислить исследуемый объект к тому или иному классу или же наоборот исключить его из этого самого класса объектов. Само неравенство выглядит так: w1 * a1 + w2 * a2 + ... wn * an > d где: 1. wi - весовой коэффициент с индексом i; 2. ai - численное значение признака с индексом i исследуемого объекта; 3. d - пороговое значение, чаще всего равное 0. Дело в том, что геометрически плоскость описывается линейным уравнением. Например, в трехмерном пространстве относительно координат X, Y и Z уравнение плоскости имеет вид: A * X + B * Y + C * Z + D = 0 Координаты всех точек, расположенных по одну сторону от плоскости, в этом самом пространстве, удовлетворяют неравенству: A * X + B * Y + C * Z + D > 0 А координаты всех точек лежащих по другую сторону от плоскости, удовлетворяют неравенству: A * X + B * Y + C * Z + D < 0 Таким образом, если нам известно уравнение некой плоскости и координаты любых точек, то мы можем разделить множество всех точек пространства на два множества точек, разделяемых этой самой плоскостью. ПОСТАНОВКА ЗАДАЧИ Если мы разделим объекты на два класса: открываемые длинные позиции и короткие позиции, а в качестве признаков возьмем значения индикаторов или осцилляторов технического анализа, то остается лишь выяснить уравнение плоскости и попытаться с ее помощью произвести идентификацию. Постановка задачи ясна. Множества точек пересекаются в пространстве и провести четкую разделительную черту между ними невозможно. Единственным и приемлемым решением здесь является линия, которая будет отделять оба множества точек таким образом, чтобы с ее помощью большинство красных объектов оказалось по одну сторону, а синих по другую. На сей раз, мы имеем дело с задачей оптимизации, то есть поиском уравнения разделяющей плоскости или линии, способной максимально разделить два класса объектов друг от друга, но с вероятностью того, что часть точек, принадлежащих одному классу, будет ошибочно идентифицировано, как принадлежащих к классу другому. Попробуем теперь определиться с постановкой задачи, которую мы собираемся решить. Элементарно, что нужно знать трейдеру для прибыльной торговли - это направление движения котировок. То есть если котировки пойдут вверх, то следует открыть длинную позицию. Если вниз, то необходимо открывать позицию короткую. Следовательно, два класса объектов у нас уже есть, а именно, направление движения котировок. Для того, чтобы принять решение, следуя техническому анализу, трейдеры прибегают к исследованию так называемых технических индикаторов или осцилляторов. Мы также будем исследовать осциллятор. Поскольку технические осцилляторы - это гистограммы, значения которых отклоняются от горизонтальной линии, то соответственно и нейронная сеть нам понадобится с линейным фильтром. В качестве признаков объекта, будем брать паттерны, то есть значения осциллятора в четырех точках, взятые с шагом в семь периодов вглубь истории, начиная от текущего момента. Эскизы прикрепленных изображений |
![]() ![]() |
| leonid553 |
30.3.2007, 20:16
Сообщение
#2
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) |
Вроде так(значения х1-х4 еще не подставил):
---------------------------------------------------------------------------------------------- The PERCEPRRON - a perceiving and recognizing function | //+------------------------------------------------------------------+ double perceptron() { //---------------------------------------------------------------------- double f1 = y1 - 100.0; double f2 = y2 - 100.0; double f3 = y3 - 100.0; double f4 = y4 - 100.0; return (p_1 * f1 + p_2 * f2 + p_3 * f3 + p_4 * f4); } // --------------------------------------------------------------------------- double p_1() { double w1 = x1 - 100.0; double w2 = x2 - 100.0; double w3 = x3 - 100.0; double w4 = x4 - 100.0; double a1 = iStochastic(Symbol(), 0,Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, P_1); double a2 = iStochastic(Symbol(), 0,Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, P_2); double a3 = iStochastic(Symbol(), 0, Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN,P_3); double a4 = iStochastic(Symbol(), 0,Stochastic_period, 3,3,MODE_SMA,0,MODE_MAIN, P_4); return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4); } //----------------------------------------------------------------------------- double p_2() { double r1 = x1 - 100.0; double r2 = x2 - 100.0; double r3 = x3 - 100.0; double r4 = x4 - 100.0; double b1 = iWPR (Symbol(), 0,WPR_period, P_1); double b2 = iWPR(Symbol(), 0,WPR_period, P_2); double b3 = iWPR(Symbol(), 0, WPR_period, P_3); double b4 = iWPR(Symbol(), 0,WPR_period, P_4); return (r1 * b1 + r2 * b2 + r3 * b3 + r4 * b4); } //------------------------------------------------------------------------- double p_3() { double v1 = x1 - 100.0; double v2 = x2 - 100.0; double v3 = x3 - 100.0; double v4 = x4 - 100.0; double c1 = iCustom(NULL, 0, "Fisher_m11",RangePeriods,PriceSmoothing, IndexSmoothing,0,P_1); double c2 = iCustom(NULL, 0, "Fisher_m11",RangePeriods,PriceSmoothing, IndexSmoothing,0,P_2); double c3 = iCustom(NULL, 0, "Fisher_m11",RangePeriods,PriceSmoothing, IndexSmoothing,0,P_3); double c4 = iCustom(NULL, 0, "Fisher_m11",RangePeriods,PriceSmoothing, IndexSmoothing,0,P_4); return (v1 * c1 + v2 * c2 + v3 * c3 + v4 * c4); } //--------------------------------------------------------------------------- double p_4() { double e1 = x1 - 100.0; double e2 = x2 - 100.0; double e3 = x3 - 100.0; double e4 = x4 - 100.0; double d1 = iAC(Symbol(), 0, P_1); double d2 = iAC(Symbol(), 0, P_2); double d3 = iAC(Symbol(), 0, P_3); double d4 = iAC(Symbol(), 0, P_4); return (e1 * d1 + e2 * d2 + e3 * d3 + e4 * d4); } ------------------------------------------------------------------------------------------------- Не компиллируется! Пишет: 'p_1' - variable not defined 'p_2 ---------------------------- 'p_3 --------------------------- 'p_4 ---------------------------- |
leonid553 Perceptron 23.3.2007, 11:29
leonid553
На вышеприведенном рисунке значения ос... 23.3.2007, 11:43
leonid553 GBPJPY, H1
Тест за янв-февр-март после оптимизации... 23.3.2007, 12:03
leonid553 to NoName:
Твоя последняя версия "ST+ENV... 23.3.2007, 15:05
NoName
А я так и не смог от неё ничего путнего получить... 23.3.2007, 21:09
leonid553 "А я так и не смог от неё ничего путнего полу... 24.3.2007, 19:46
NoName
То что я состряпал - это не для сети делалось.
... 24.3.2007, 21:47
leonid553 Вот такая ещё идея .
ПО вышеприведенному советнику... 25.3.2007, 12:23
NoName Я ведь тебе предлагал уже это по аське! Можно... 25.3.2007, 12:57
leonid553 Либо подбирать индикаторы , средняя линия которых ... 25.3.2007, 13:01
leonid553 Понятно теперь стало - почему в реале советник с и... 25.3.2007, 14:04
leonid553 А вот результат оптимизации от пред. поста
Качеств... 25.3.2007, 14:52
leonid553 Не всё, однако, так хорошо!
Результат был полу... 26.3.2007, 15:40
NoName
А нельзя ли сдесь привести код функции Perceptro... 26.3.2007, 16:55
leonid553 вот так сделал для текущей buy-позиции:
int ticke... 26.3.2007, 18:18
leonid553 Похоже, я тут вообще не в кон задал
if(perceptron... 26.3.2007, 18:35
NoName
Конечно не в кон :) Я почему и попросил функцию ... 26.3.2007, 19:35
NoName Вот, модернизировал для наглядности ;)
Вверху с... 26.3.2007, 20:05
leonid553 Благодарю, Андрей.
Вставил этот кусочек кода.
чтоб... 27.3.2007, 9:49
leonid553 А Проблема вот в чем:
----------------------------... 27.3.2007, 10:08
NoName
// check for opened position
int total = Order... 27.3.2007, 10:57
leonid553 бдагодарю.
Сейчас разберусь!
Только что пришла... 27.3.2007, 11:16
NoName
ИМХО
Оптимизация уже сама по себе подразумевает ... 27.3.2007, 11:19
NoName
Я думаю что нет никакой разницы в значении весов... 27.3.2007, 11:40
leonid553 Вставил вот этот кусочек!
double a1 = iStoch... 27.3.2007, 12:49
NoName Всё правильно. Шкала и не изменится, т.к вызываетс... 27.3.2007, 12:58
leonid553 В соотв. с вышеизложенными резонами подготовил пок... 28.3.2007, 8:33
NoName
Вот это уже хороший результат! И данный сове... 28.3.2007, 9:41
leonid553 Да, пожалуй...
Но хотелось бы уж сразу многослойку... 28.3.2007, 10:35
leonid553 to NoName:
Что-то никак не подберу параметры с инд... 28.3.2007, 17:27
NoName
По ходу всё правильно.
Попробуй сделать так:
d... 28.3.2007, 19:59
leonid553 Благодарю. 28.3.2007, 20:06
leonid553 При реализации очередной идеи обнаружилось очередн... 29.3.2007, 10:01
leonid553 Причина этого несоответствия , возможно, заложена ... 29.3.2007, 10:17
leonid553 Да, действительно, - для каждого индикатора нужно ... 29.3.2007, 11:21
NoName
Честно говоря, мне тоже не понятен этот ход. 29.3.2007, 11:39
leonid553 Разберемся, надеюсь!
Главная всё-же, проблема ... 29.3.2007, 12:51
NoName Ну эту проблему можно решить с помощью трейлинга о... 29.3.2007, 15:28
leonid553 А я пытался экспериментировать с (sl * Point) в тр... 29.3.2007, 15:42
NoName
Не обязательно. В последних версиях своих советн... 29.3.2007, 16:26
leonid553 Сделал.
extern int ExpertID =1111; ... 29.3.2007, 18:05
NoName Конечно влияет!
Пришли советник, попробую попр... 29.3.2007, 18:31
leonid553 вот он: 29.3.2007, 18:54
leonid553 Поработал пока с версией советника с инд. Фишера .... 30.3.2007, 8:26
NoName Да, действительно, просадка около 2% - отличный ре... 30.3.2007, 8:50
leonid553 Благодарю! Оч. кстати!
Решил выяснить - по... 30.3.2007, 9:09
leonid553 Руки до всего не доходят! - времени не хватает... 30.3.2007, 19:35
NoName Проблема в последнем результирующем слое.
p_1, p_... 30.3.2007, 20:50
leonid553 ДА, ДЕЙСТВИТЕЛЬНО!
С р_1() всё получилось 31.3.2007, 8:43
leonid553 Вставил оптимизированные параметры для каждого инд... 31.3.2007, 9:05
leonid553 Не могу понять, в чем дело!
сделал так с индик... 31.3.2007, 9:42
leonid553 Поскольку тесты с WPR и АС соответствуют здравому... 31.3.2007, 10:10
NoName Попробовал тоже так сделать. Стохастик у меня соше... 31.3.2007, 10:11
leonid553 ОК! Понял. 31.3.2007, 10:17
leonid553 Исправил все недоработки. Система заработала так, ... 31.3.2007, 14:08
leonid553 Если нам удасться правильно организовать взаимодей... 31.3.2007, 14:24
NoName Вот идея появилась навскидку. Тоже может дать инте... 31.3.2007, 14:46
leonid553
Вот идея появилась навскидку. Тоже может дать инт... 31.3.2007, 15:54
leonid553
Вот идея появилась навскидку. Тоже может дать инт... 1.4.2007, 8:17
leonid553 но даже и в этом случае необходим фильтр - для пре... 31.3.2007, 18:30
NoName
На мой взгляд, это делается для обеспечения крас... 1.4.2007, 9:59
leonid553
На мой взгляд, это делается для обеспечения кра... 3.4.2007, 12:48
leonid553 Меня вот крайне удручают частые ситуации показанны... 1.4.2007, 10:17
leonid553 Kola:
"А чего тут всего четыре входа у перцеп... 1.4.2007, 18:49
leonid553 to NoName:
Из любопытства вставил ММ в версию стох... 2.4.2007, 10:35
NoName Ну какой же это мизер?? Советник будет курить пока... 3.4.2007, 19:35
leonid553
Ну какой же это мизер?? Советник будет курить пок... 14.4.2007, 10:36
leonid553 Да, действительно.
И сразу обнаружл то, что не сде... 4.4.2007, 9:14
NoName Сделал индикатор, который отображает значения выда... 14.4.2007, 12:02
leonid553 Благодарю!
Поставил. Оч. полезная штуковина... 14.4.2007, 17:05
NoName Дело оказалось в билде MT! На 203-м работает ... 14.4.2007, 18:08
leonid553 Благодарю! Так и случилось! Сейчас постави... 15.4.2007, 8:06
NoName
В архиве два советника: один открывает только дл... 15.4.2007, 13:01
leonid553 Поставил.
Сходу удалось получить +2550 за три год... 15.4.2007, 17:20
NoName Провёл оптимизацию советника LongOnly по фунту на ... 15.4.2007, 18:38
leonid553 Слушай!
Что-то мне "тревожно" стало ... 16.4.2007, 11:53
NoName На счёт шорта и меня стали сомнения терзать. Сейча... 16.4.2007, 12:10
leonid553 В любом случ. надо код - для ясности 16.4.2007, 12:18
NoName
Действительно, допустил ошибку. В советнике испо... 16.4.2007, 14:33
NoName Приведу, пожалуй, основной код: ShortOnly
#prope... 16.4.2007, 15:03
leonid553 Тоже исправил шкалу.
Но у меня ещё до исправления ... 16.4.2007, 16:01
NoName это не ошибка а предупреждение о том что функция S... 16.4.2007, 16:06
leonid553 никак не могу добиться в шорте профитных результат... 16.4.2007, 18:14
NoName С двухполярным стохастиком результат однозначно ху... 16.4.2007, 19:31
leonid553 Андрей!
По вопросу защиты текущей прибыли в мо... 22.4.2007, 8:29
leonid553 Ещё вот сейчас посмотрел. Кроме стохастика для реа... 22.4.2007, 9:13
leonid553 Поставил версию с Отсечкой.
Но работает некорректн... 23.4.2007, 13:24
leonid553 to NoName:
Прогнал исправленную версию с отсечкой.... 24.4.2007, 10:48
NoName
Это объясняется просто. В советнике все действия... 24.4.2007, 14:44
leonid553 Понял!
но пока сделана часть работы! Значи... 24.4.2007, 15:20
leonid553 Никак не пойму, почему не соблюдается число сделок... 25.4.2007, 12:21
NoName Вчера ночью игрался с разными версиями и заметил в... 25.4.2007, 15:52
NoName Вот на этих отчётах наглядно видно почему происход... 26.4.2007, 7:54
leonid553 Посмотрел. Вник.
Ну и ладно! С "этим дело... 27.4.2007, 6:07
leonid553 Ещё вот соображения:
Прогнал первую версию со стох... 27.4.2007, 16:30
NoName Так сходу не врублюсь, нужно малость обдумать.
... 27.4.2007, 18:36
leonid553 пожалуй, не стоит пока возиться!
По "зако... 27.4.2007, 18:52
leonid553 По версии с разумным тралом.
Взял фунт - м30.
При... 28.4.2007, 12:21
leonid553 Еще вот появились соображения.
По версии с лотами ... 28.4.2007, 17:03![]() ![]() |
|
Текстовая версия | Сейчас: 13.3.2026, 4:53 |