![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
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 раз(а) ![]() |
Андрей!
По вопросу защиты текущей прибыли в момент подтягивания стоплосса. Назовем идею - ОТСЕЧКОЙ Я всё-таки думаю, - что проще будет сделать так: Самая Первая сделка советника - пусть идет так, как заложено в алгоритме советника. А уже далее пусть советник начинает реализовывать ОТСЕЧКУ - причем не двумя сделками - как мы вчера планировали, - а лотами ! Вот смотри : ---------------------------------------------------------------------------------------------------------------- /* long position is opened -длинная позиция открылась далее проверяется условие - ЕСЛИ НА МОМЕНТ ОТКРЫТИЯ НОВОГО БАРА ПОЛУЧЕННЫЙ ПРОФИТ БОЛЬШЕ РАЗМЕРА СТОПЛОССА И ЗНАЧЕНИЕ ПЕРЦЕПТРОНА <0 - ПЕРЕВОРАЧИВАЕМСЯ */ // check profit if(Bid > (OrderStopLoss() + (sl * 2 + spread) * Point)) { if(perceptron() < 0) { // reverse ticket = OrderSend(Symbol(), OP_SELL, lots * 2, Bid, 3, Ask + sl * Point, 0, "F1", MagicNumber, 0, Red); ------------------------------------------------------------------------------------------------------------------ Обрати внимание, - что переворот здесь реализуется удвоенным лотом (lots * 2)- в результате чего -текущая длинная позиция закрывается а встречная короткая открывается! Так зачем нам вводить лишнюю сделку, - когда мы можем реализовать ОТСЕЧКУ здесь же, - если заменим (lots * 2) на (lots * 3) ! Далее вводим дополнительное условие - ЕСЛИ НА МОМЕНТ ОТКРЫТИЯ НОВОГО БАРА ПОЛУЧЕННЫЙ ПРОФИТ БОЛЬШЕ РАЗМЕРА подтянувшегося СТОПЛОССА - закрываем один лот из текущих двух! Но лучше конечно закрыть его ,по тейку. Причем предусмотреть ТП во внешних параметрах! - Для экспериментов по оптимизации. Так возможно будет проще... Ещё есть мысль использовать трехступеньчатую систему выходов Виктора, - описанную и реализованную в советнике Игоря Кима, - но это в перспективе.... |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 7.5.2025, 21:40 |