![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
leonid553 |
![]()
Сообщение
#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 |
![]()
Сообщение
#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 ---------------------------- |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 14.3.2025, 13:19 |