PDA

View Full Version : Советник FXO.Volatility



artamir
08-20-2014, 12:32 PM
Советник был заказан в этом посте (http://forum.fxopen.ru/showthread.php?99949-otdam-sovetnik-indikator-ili-skript-za-ideju&p=2033546&viewfull=1#post2033546)

Техзадание на написание советника.
45035

Версия 1.40
Посмотреть изменения и скачать советника можно в этом сообщении (http://forum.fxopen.ru/showthread.php?103468-sovetnik-fxo-volatility&p=2119634&viewfull=1#post2119634)

Версия 1.30
Посмотреть изменения и скачать советника можно в этом сообщении (http://forum.fxopen.ru/showthread.php?103468-sovetnik-fxo-volatility&p=2119603&viewfull=1#post2119603)

Версия 1.20
Посмотреть изменения и скачать советника можно в этом сообщении (http://forum.fxopen.ru/showthread.php?103468-sovetnik-fxo-volatility&p=2119024&viewfull=1#post2119024)

Версия 1.10
Посмотреть изменения и скачать советника можно в этом сообщении (http://forum.fxopen.ru/showthread.php?103468-sovetnik-fxo-volatility&p=2118469&viewfull=1#post2118469)

Версия 1.00
Пробная версия

Настройки:
Использованные в советнике названия параметров немного отличаются от заданных в техзадании.

TPFix - Фиксированный тейкпрофит в пунктах.
SLFix - Фиксированный стоплосс в пунктах.

Delta_Time - Разница во времени в секундах между открытием позиций сетки.
Delta_Pips - Разница в пунктах между открытием позиций сетки.

VTYWeeksCount - Количество недель для расчета среднечасовой волатильности. Волатильность расчитывается по часовому таймфрейму.
VTYRecheckPeriod - Таймфрейм для указания частоты пересчета среднечасовой волатильности. Советник будет пересчет с появлением нового тика нового бара заданного таймфрейма.
VTYRangePercent - Рабочий диапазон среднечасовой волатильности в процентах от максимальной. Советник будет открытвать позиции только если среднечасовая волатильность текущего дня недели+часа не менее заданного процента от максимальной волатильности.

Сигналы на открытие позиций.
KTrendSize1 - Процент текущей тиковой волатильности для открытие первой позиции сетки в зависимости от среднечасовой волатильности текущего дня+часа.
KTrendSize2 - Тоже самое, что и предыдущий пункт, но зависит от рассчитанной волатильности предыдущего пункта.
TrendTime - Время в секундах для расчета тиковой волатильности.

- - - Добавлено - - -

Расчет среднечасовой волатильности по дням недели и часам.

Советник налету формирует двухмерный массив с среднесчасовой волатильностью по дням недели следующим образом:

Если новый расчет среднечасовой волатильности должен начаться в понедельник в 15:00 (время начала ближайшего часового бара), то сов. начнет собирать данные с 15 часов понедельника VTYWeeksCount недель назад.

Отладочная информация в левом верхнем углу терминала:
MaxVTY - Максимальная волатильность результирующей таблицы.
MinVTY - Минимальный порог часовой волатильности, при котором советник будет работать.
VTY - Волатильность текущего дня недели+часа из результирующей таблицы.
TickVTY - Текущая тиковая волатильность.
KTS1 - Нижняя граница тиковой волатильности для открытия первой позиции сетки. Расчитывается как VTY*KTrendSize1.
KTS2 - Нижняя граница тиковой волатильности для открытия новых позиций сетки при условии, что была открыта первая позиция. Расчитывается как VTY*KTrendSize2;

Если TickVTY > KTS1, то будем считать, что мы получаем основной сигнал.
Если TickVTY > KTS2, то будем считать, что мы получаем дополнительный сигнал.

last_main_sig - префикс данных последнего зарегистрированного основного сигнала+данные текущей сетки.

last_main_sig.time - Время поступления сигнала, при TickVTY > KTS1.
last_main_sig.type - тип сигнала. 0-нет сигнала, 1-основной сигнал, 2-дополнительный сигнал.
last_main_sig.cmd - тип позиции для открытия. 0-бай, 1-селл.
last_main_sig.price - цена открытия самой высокой позиции бай сетки и самой низкой позиции селл сетки.
last_main_sig.last_time - время открытия последней позиции сетки.

тоже самое относится для префикса sig.

AnriAn009
08-20-2014, 05:37 PM
Спасибо. начинаем тестить.
Когда и если появится желание заняться следующим проектом - скажи.

AnriAn009
08-22-2014, 10:09 AM
Я так и не смог добиться появления отладочной информации на экране.
Что будет, если запустить на двух парах одновременно?
TR_TwiseLots - это что такое?
Как учитывается количество знаков у ДЦ?
***********************************************
Было бы вообще классно закоментить пояснения к параметрам.

AnriAn009
08-22-2014, 12:55 PM
Инфо появилось. Хорошо.
Пересчет должен быть не только по заданным параметрам, но и при перегрузке, дисконнекте и т.д.
Поясните это:
VTY - Волатильность текущего дня недели+часа из результирующей таблицы.

AnriAn009
08-22-2014, 02:52 PM
Открыл на 10 парах. Сначала пошли ордера по 0.1 лота. Так и не изменился объем лота последующих ордеров. Хотя по логике должен увеличиваться.

artamir
08-22-2014, 08:25 PM
Еще раз обращаю Ваше внимание, что сов находится в стадии разработки!
И реализована только часть техзадания.

AnriAn009
08-22-2014, 10:16 PM
Еще раз обращаю Ваше внимание, что сов находится в стадии разработки!
И реализована только часть техзадания.
Без проблем. Это понятно. Я выдаю мысли и идеи - может что-то интересное попадется.
Вот уже очень интересное, судя по первым тестам. Ввести инверсию. То есть по сигналу иметь возможность открывать ордер в противоположном направлении. Нам же надо вытащить такой вариант сова, который статистически даст больше прибыльных сделок.
Ввести что-нить типа:
Invers=0 // Выставление ордера на пробой (как и есть в настоящее время)
=1 // Выставление ордера на откат (это как бы и есть инверсия)

AnriAn009
08-26-2014, 12:44 AM
Предлагаю пока не вводить режим мульти.
надо протестить сам сигнал на пробой и откат и посмотреть\оценить его качество

artamir
08-28-2014, 10:28 AM
Предлагаю пока не вводить режим мульти.
надо протестить сам сигнал на пробой и откат и посмотреть\оценить его качество

К сожалению уже ввел этот режим.

Но его можно не использовать, присвоив переменной KMulty=1. Т.е. будет происходить умножение объема предыдущей сетки на 1.

Версия 1.10

Добавленные настройки:
LotFix - Задает объем первого ордера сетки при условии что предыдущая сетка закрылась без убытка.

KMulty - Коэффициент увеличения объема первого ордера сетки по сравнению с объемом первого ордера предыдущей сетки при условии, что предыдущая сетка закрылась с убытком.

exp.profit - с каким результатом закрылась предыдущая сетка.
exp.last_lot - объем первого ордера предыдущей сетки.

aTO - Информация нужная мне для отладки.
aOE - Информация нужная мне для отладки.

AnriAn009
08-28-2014, 02:45 PM
А как насчет режима инверсии? Он там присутствует?

artamir
08-29-2014, 08:28 AM
Еще нет. :)

AnriAn009
08-29-2014, 02:40 PM
Еще раз привет. Задвину тут свое очередное рассуждение :)
Главная суть логики - попытаться сдвинуть случайное распределение вероятностей, выражающееся в отношении прибыльных\убыточных сделок с значения 48\52 (примерно, при ТП=СЛ) в нашу сторону. Для этого в советнике сделано главное допущение, выражающееся в том, что отслеживание колебаний рынка за определенное время (так называемый "рывок", или индикатор "тренд" в сове) позволит выявить нужные нам условия.
Причем в общем-то абсолютно не важно, в какую сторону в большинстве случаев пойдет рынок после того, как будет получен сигнал индюка. Главное - сместить 48\52 в нашу сторону.
Для этого и нужен режим реверса.
А дополнительные плюшки в виде режима "мульти" или использование серии вместо одиночных ордеров - это все вторично. И будет иметь смысл, если только индюк будет иметь смысл.
А значит главное на сегодня - реверс.
Сорь за такую длинную речь. Главное же - донести :)

artamir
09-01-2014, 07:47 AM
Версия 1.20

Добавлена инверсия сигнала.
InversSignal = true - включает режим использования инверсированного сигнала.

AnriAn009
09-01-2014, 06:23 PM
вопрос. если включен сигнал инверс (т.е. на откат), что с серией ордеров? по сути при таком варианте должен выставляться только один ордер? или как?

artamir
09-02-2014, 07:15 AM
Почему? Инвертируется вся серия ордеров.
Т.е. если поступил сигнал на бай, то вместо бай будет открыт селл ордер.
По крайней мере так задумывалось

AnriAn009
09-02-2014, 09:17 AM
1. не могу присоединить сова к графику. пишет:
'B_Start' - wrong parameters count eFXO.Volatility_1.20.mq4 113 4
2. хотелось бы иметь возможность выставления только по одному ордеру. пока не закроется - новый не открывается. после активного тестирования и нахождения диапазона "правильного" сигнала на открытие - иметь возможность подключать открытие серии ордеров.

artamir
09-03-2014, 07:08 AM
1. не могу присоединить сова к графику. пишет:
'B_Start' - wrong parameters count eFXO.Volatility_1.20.mq4 113 4
2. хотелось бы иметь возможность выставления только по одному ордеру. пока не закроется - новый не открывается. после активного тестирования и нахождения диапазона "правильного" сигнала на открытие - иметь возможность подключать открытие серии ордеров.
2. Можно выставить настройку KTrendSize2 в 10000. Тогда будет срабатывать только настройка KTrendSize1, а следовательно будет отрабатываться только сигнал на выставление первого ордера сетки.
1. Обновил советника. У меня на демке запустился.

AnriAn009
09-03-2014, 01:52 PM
2. Можно выставить настройку KTrendSize2 в 10000. Тогда будет срабатывать только настройка KTrendSize1, а следовательно будет отрабатываться только сигнал на выставление первого ордера сетки.
Понял.

1. Обновил советника. У меня на демке запустился.
И здесь понятно в чем проблема. Для тестирования запускаю сова на 13 парах сразу. И на каждой проставлять параметры входные - муторно. Можно конечно сохранить их на первой паре в сет файл, а потом из него копировать на остальные пары. Но еще удобнее в самом советнике их пменять сразу на такие как нужно. Потом скомпилировать и все. Так вот компиляция и не проходит. Пишет ошибку в одной и той же строчке. Пришлось через сет файл делать.

artamir
09-03-2014, 02:54 PM
Для правильной компиляции сова нужно обновить файлы в папке Include. Есть в архиве советника. :)

AnriAn009
09-03-2014, 03:05 PM
http://i67.fastpic.ru/big/2014/0903/4f/54529a648bda17f60c79073a6c171a4f.jpg
http://i66.fastpic.ru/big/2014/0903/f3/023abbe36ed5ed5d1c717cc0b4a9f9f3.jpg
Как видно, 2-ой и 3-ий ордера неправильного объема. При KMulti=2

artamir
09-04-2014, 08:41 AM
Версия 1.3
Скорректирован учет профита советником и контроль увеличения объемов первого ордера сетки.

AnriAn009
09-04-2014, 09:50 AM
45202
Как видно по скрину, 4-ый ордер вывел серию (суммарный убыток от 1, 2 и 3-го ордеров) в плюс, в результате чего глобальная переменная (ГП) должна была обнулиться.
Следующий 5-ый ордер дает убыток. Этот убыток вновь заносится в ГП. А значит, 6-ой ордер должен быть объемом не 0.1, как на скрине, а 0.15 (как и 2-ой ордер).
Значит логика неверна.

artamir
09-04-2014, 10:41 AM
Спасибо, исправил

Версия 1.4
Добавлено обнуление общего профита при достижении глобальной переменной expert_info.profit значения больше нуля.

AnriAn009
09-04-2014, 12:21 PM
Все работает как надо. Тестирую.