Профессиональный советник для торговли на валютах со cпредом в 2 пункта на минутных интервалах. Особенно хорошо проявляет себя на флетовых рынках с хорошими объемами. Релизованы собственные технологии ведения торговли: работа по кросс-курсам, автоматический расчет лотов по заданному риску, работа с несколькими валютами, автоматическое определение периода моделирования, автокорреляция величины стоп-лосс с заданным коэффициентом доверия рынку и многое другое. Советник реализует технологию пипсования, технологию определения теневого стоп-лосса...
Советник может показывать результаты от 100 до 300% в день с настройками по умолчанию. Ранее советник распространялся моей компанией только коммерческим клиентам. Сейчас я думаю, некоторые его идеи будут полезны многим. Скажу сразу - эту версию на реал не ставьте, или используйте только на флете на свой страх и риск.
GeMeL писал(а):
... В чем же в конце концов причина?
Причина - падение объемов (которые включают брокеры для борьбы
с механикой на коротких интервалах). Рецепт лечения - переход
на более высокие периоды (уменьшение профитности, но механика
становится менее чувствительна к объемам). На реалах нужно комбинировать
переходы на более высокие периоды и уменьшение риска при увеличении
депозита. Тут правда просили брокеров не обсуждать, но именно
в этом и есть причина. При обращении к брокеру вам могут рассказать
много сказок про хеджирование, рынок и т.д.. При работе на больших
периодах с про-версией идет индикатор (который в демо не включен),
позволяющий включать блокировки советника для торговли только
по рынку на больших периодах. Думаете просто так у нас появились
теневые стопы?
Доброго дня суток,
появилась вот у меня пара вопросов по поводу... Пробовыл я тестить
CyberiaTrader демо-версию на разных брокерах и на разных режимах, да
вот никак не могу получить сколько-нибудь положительный результат.
Первый эксперимент был MIG, около трех недель, М1. Вначале поднялся
довольно быстро с 10к до 60к, потом все слил к черту. Потом пробовал
на Space FX, NEXTT, FXDD с регулярным сливом. Перешел на часовые тики
- результат тот же. Один инструмент или несколько, с новостями
или без - то же самое. Только Crown с однопиповым спредом пока в
порядке, но не нравится мне он по другим причинам. Оптимизация
стопов тоже не помогает. Советник постоянно открывает ордеры
в сторону, противоположную тому, куда показывает тот же MACD, ну
и вылетает по стопу в минус. Даже CyberiaTraderPro (демо, была доступна
одно время на сайте разработчиков) делает то же самое. В чем
же в конце концов причина?
// Функцию подключить надо к EnterMarket (вход в рынок):
// Добавить в глобальные переменные
...
extern string TimeTradeHoursDisabled = "09,12,18"; // Здесь перечисляем часы, в
которые необходимо обеспечить выход из рынка и не вести торговлю.
Выходить из рынка нужно заблаговременно до выхода новостей
(приблизительно за пол часа - час)
...
// Собственно сама функция для тех, кто хочет спать спокойнее
bool CheckTradeTime ()
{
// Сохраняем серверное время (часы)
int h=TimeHour(CurTime());
string s = "";
// заносим опять в строку в нужном формате
s = DoubleToStr (h, 0);
// Если значение часа односимвольное, добавляем в начале ноль
if (h < 9)
s = StringConcatenate("0",s);
// Ищем запрещенные часы торговли
if (StringFind(TimeTradeHoursDisabled, s, 0)== -1)
// Если текущий час не входит в запрещенный период - можно торговать
return(true);
else
// иначе нет
return (false);
}
...
DIM2006 писал(а): Knocker я извиняюсь за нескромный вопрос.С каким брокером Вы работаете?Если
можно поделитесь настройками советника.Спасибо.
МТС немного постарее чем тут наворочено
CyberiaTrader (commercial edition) - релиз августа 2005 г. (брал сначала релиз,
потом исходники, кое-какие фичи дописвыал под себя, кое что поубирал.
Основную математику я не трогал. Если беглым взглядом, она не
изменилась).
Сейчас брокер - MIG:
RunPipsator=true ставлю очень редко (почти не использую), только когда
рынок спокойный. При этом отключаю динамический стоп-лосс (пркатически
не использую его вообще, так безопаснее ).
Пипсер запускаю редко со статик-стопом со смещением в 7-9 пунктов(помоему
тут по умолчанию стоит тоже 7). 7 - когда все совсем спокойно, 9
- когда волатильность повыше (смотрю по стандартным индикаторам
объемов MT).
CyberiaLogic никогда не отключаю вообще, и вам не советую. (всегда
стоит true).
Не использую одновременно пипсатор и логическую торговлю (EnableLogicTrading).
Либо одно, либо другое, но никак не вместе. Вместе они друг-другу
мешают, увеличивают просадку.
Обычную торговлю (EnableLogicTrading = true, BlockPipsator = true) веду со смещением
статик-стопа не менее 15 пунктов, но не более 20. (У меня этот параметр
по другому называется. Здесь это помоему StaticStopLoss, у меня стоит
обычно 16-17).
MoneyTrain у меня вообще нет. Насколько я знаю эта штука пока экспериментальная,
говорят прибыльная но опасная (для ловли ГЭП на новостях), ничего
не могу сказать по этому поводу.
ТаймКонтрол у меня с новой Pro-версии (кусок кода вставил сам,
сложного там ничего нет). Очень полезная штука, без нее было
бы тяжело. Просто заливаю в нее график выхода всяких засад и
сплю спокойно.
"Тормоз" также с новой Pro версии. (тот что тут я бы назвал
"без тормозов" вообще. Фигачит как сумасшедшая, моя версия
делает за день сделок раз в 5 меньше, но надежнее).
Теневого стопа у меня тоже нет - все стопы реальные (в миге в
отличии от российских кидальных брокеров этой фигней пока не
страдают).
Поскольку мозгов читать новости у этой штуки еще нет, иногда
помогаю блокировками нежелательных сделок (BlockSell = true, BlockBuy =
true)
Если коротко: пипсер и логика работают отдельно. Стопы - статик
со смещением 7 и 16 соответственно (меняю сам)
Здесь на сайте в параметрах по умолчанию включен баг - статик
стоп в 7 пунктов для пипсера, а по умолчанию врублена логика.
Не удивительно что кое-кто сливает (головой то тоже надо немного
думать).
Вот собственно и вся примудрость.
Knocker, если не очень трудно, поделись ТаймКонтролом, тоже хочу выспаться.
Заранее благодарен.
eugenk1 писал(а):
OpenStorm, еще раз привет ! Давай лучше на "ты". Увы, боюсь с вероятностями
ты ошибаешься. Смотри. Пусть есть две валюты. V1 и V2. И пусть по
V1 вероятность выигрыша P1, а по V2 - P2. Ты открываешь N позиций. Из
них N1 по V1 и N2 по V2. При этом N = N1 + N2. Положим числа N, N1, N2 достаточно
велики. Тогда число выигрышей по V1 есть P1*N1, а по V2 - P2*N2. Общее
число выигрышей будет равно P1*N1 + P2*N2 = P1*N1 + P2*(N-N1). Тогда вероятность
выигрыша P = P1*N1/N + P2(N-N1)/N. Т.е. итоговая вероятность будет не суммой,
а ВЗВЕШЕННОЙ суммой вероятностей P1 и P2. В частности, если N1=N2=N/2,
то P = (P1 + P2)/2 - т.е. среднему арифметическому двух вероятностей.
Последний случай кстати аналогичен такой задаче. Пусть есть
две урны с черными и белыми шарами. В первой урне W1 белых шаров
и B1 черных. Во второй - W2 белых и B2 черных. Ты берешь шары из двух
урн. Всего - N шаров. N/2 из первой и N/2 из второй. С тем же успехом
шары из обоих урн можно сложить в одну и взять N шаров из неё.
Вероятность вытащить белый шар при этом будет (W1+W2)/(W1+B1+W2+B2) что
ВСЕГДА меньше 100%.
Другое дело количество сделок - т.е. агрессивность. На нескольких
парах она заведомо будет выше. Хотя тут вопрос сложный. Ведь
пары коррелируют между собой...
По поводу нейронов. Возможно я и не прав. Тем не менее, скажи
об этом вашим разработчикам. Пусть попробуют взглянуть на проблему
с точки зрения архивации, а не нейронных сетей. Мне кажется это
вполне можно реализовать на mql4 с приемлемым быстродействием.
Может успеют до 25 сентября... На половину суммы приза я не претендую,
просто хочется подсказать хорошим мужикам хорошую идею. Сам
сколько раз на такое натыкался. Трахаешься неделями, расскажешь
об этом какому-то свежему челу, и он с полпинка выдает тебе решение.
.. Кстати, продолжая аналогию. Ведь архиватор это тоже самообучающаяся
система. В начале работы он не знает о файле ничего. Тем не менее
в процессе сжатия накапливает статистику. И без всяких нейронных
сетей заметь. Может это и для вас путь ?
По поводу теории хаоса. Долблю потихоньку ваш код. Тем не менее
периоды они периоды и есть. Да, у вас они определяются динамически.
Но я так же считал преобразование Фурье. Те же яйца только в
профиль. Так что и пороки метода должны быть теми же самыми,
в которые уперся в свое время я.
Ок, давай на ты. Почему не подходит метод с корзиной: дело в том,
что мы имеем дело с последовательностями, а не с произвольным
набором. Например результирующая последовательность по нескольким
инструментам будет следующая:
100000000101001101010001010000010100011100000000000110101110
+--+-----+-----+------+------+------+-----+----+-----+...
Плюсами я обозначил точки входа механики в игру. Минус - инструмент
в игре. (последовательности которые стоят над минусом - выпадают).
Сравнивать эти последовательности с корзиной где лежат все
события нельзя (где в любом случае должен быть выбран шар), потому
что после того, как ты взял шар, часть шаров из этой корзины вынимается
- время то идет и события по сигналам входа в рынок все-таки происходят.
Это скорее всего стек, из которого достаются шары и пока твой
шар у тебя в руках (инструмен в игре), остальные шары просто падают
на землю. Я бы сравнил это скорее с пушкой для тренировки игроков
в большой теннис, но никак не корзиной :)
Таким образом можно довести эффективность любой механики (ну
в которой есть хоть какой-то положительный эффект, пусть она
даже и сливает на тестере) до нужной положительной вероятности,
когда последовательности положительных сделок компенсируют
отрицательные и она сможет приносить прибыль.
Таким образом работа по нескольким валютам сразу увеличивает
вероятность проигрыша, а работа с несколькими валютами по этому
принципу уменьшает эту вероятность.
P.S.: проверено на реальных торгах. Рекомендую тебе сделать то
же самое хотя бы на демонстрационных счетах с твоим советником
(увидишь воочию). Кстати мы совсем не возражаем чтобы кто-то
выходил на чемпионат с нашим советником, пусть и модифицированным.
Единственная просьба - соблюдать лицензию и публиковать код.
Если кто-то из нашего коммунити выиграет мы будем только рады
этому.
OpenStorm, еще раз привет ! Давай лучше на "ты". Увы, боюсь с вероятностями
ты ошибаешься. Смотри. Пусть есть две валюты. V1 и V2. И пусть по
V1 вероятность выигрыша P1, а по V2 - P2. Ты открываешь N позиций. Из
них N1 по V1 и N2 по V2. При этом N = N1 + N2. Положим числа N, N1, N2 достаточно
велики. Тогда число выигрышей по V1 есть P1*N1, а по V2 - P2*N2. Общее
число выигрышей будет равно P1*N1 + P2*N2 = P1*N1 + P2*(N-N1). Тогда вероятность
выигрыша P = P1*N1/N + P2(N-N1)/N. Т.е. итоговая вероятность будет не суммой,
а ВЗВЕШЕННОЙ суммой вероятностей P1 и P2. В частности, если N1=N2=N/2,
то P = (P1 + P2)/2 - т.е. среднему арифметическому двух вероятностей.
Последний случай кстати аналогичен такой задаче. Пусть есть
две урны с черными и белыми шарами. В первой урне W1 белых шаров
и B1 черных. Во второй - W2 белых и B2 черных. Ты берешь шары из двух
урн. Всего - N шаров. N/2 из первой и N/2 из второй. С тем же успехом
шары из обоих урн можно сложить в одну и взять N шаров из неё.
Вероятность вытащить белый шар при этом будет (W1+W2)/(W1+B1+W2+B2) что
ВСЕГДА меньше 100%.
Другое дело количество сделок - т.е. агрессивность. На нескольких
парах она заведомо будет выше. Хотя тут вопрос сложный. Ведь
пары коррелируют между собой...
По поводу нейронов. Возможно я и не прав. Тем не менее, скажи
об этом вашим разработчикам. Пусть попробуют взглянуть на проблему
с точки зрения архивации, а не нейронных сетей. Мне кажется это
вполне можно реализовать на mql4 с приемлемым быстродействием.
Может успеют до 25 сентября... На половину суммы приза я не претендую,
просто хочется подсказать хорошим мужикам хорошую идею. Сам
сколько раз на такое натыкался. Трахаешься неделями, расскажешь
об этом какому-то свежему челу, и он с полпинка выдает тебе решение.
.. Кстати, продолжая аналогию. Ведь архиватор это тоже самообучающаяся
система. В начале работы он не знает о файле ничего. Тем не менее
в процессе сжатия накапливает статистику. И без всяких нейронных
сетей заметь. Может это и для вас путь ?
По поводу теории хаоса. Долблю потихоньку ваш код. Тем не менее
периоды они периоды и есть. Да, у вас они определяются динамически.
Но я так же считал преобразование Фурье. Те же яйца только в
профиль. Так что и пороки метода должны быть теми же самыми,
в которые уперся в свое время я.
eugenk1 писал(а):
OpenStorm, прежде всего спасибо за то что поделились интересным
исходником.
- Пожалуста :)
Теперь немного критики и предложений. Просьба не пинать особо
ногами если глупость скажу.
1) По поводу нейронного торможения, которое у вас реализовано
через dll и с которым основные проблемы. Возможно я неправ, но
никаких нейронов я в твоем описании не разглядел. То о чем ты
пишешь, более всего напоминает методы управления словарем в
методах сжатия типа LZ, LZ77/78 LZW и тому подобных.
- Да, сходство есть... Я бы сказал что это более похоже на метод
Хаффмана. Хранение нейропоследовательностей действительно
похоже на метод сжатия, используемый в PKZIP и т.д...
То же выделение максимальной уникальной подстроки и та же выбраковка
наименее актуальных подстрок. Может вам нейроны просто глаза
замылили, и вы не видите того, что по сути это старый добрый LZ
+ поиск(который лучше всего сделать с хешированием)
- возможно...
? Не настаиваю разумеется. Описал ты это лишь в самых общих чертах,
и я мог неправильно понять.
2) Немного не въехал в вашу "теорию хаоса", которую вобщем
то ты тоже описал весьма кратко. Как я понял, постулируется,
что в некотором масштабе, цена неплохо описывается простым
колебанием типа подъем-спад.
- ну я бы не назвал его совсем простым колебанием.
Причем и подьем и спад занимают в этом масштабе ровно один бар.
- нет, посмотрите на часть кода где стоит комментарий "самая
важная фунция"... Там вы увидите что происходит масштабирование
модели.
Я пробовал похожий путь - спектральный анализ.
- проходили...
И споткнулся на очень сильной нестационарности сигнала. Ваш
метод нахождения оптимального периода моделирования скорее
всего должен страдать тем же.
- возможно. Однако не сильно вдавайтесь в технические вопросы.
Есть и организационные способы увеличения эффективности системы.
Об этом я расскажу в конце вашего поста.
Сейчас я в этом разочаровался и пробую фрактальный подход (не
в смысле книжки Вильямса , а в том смысле в котором понятие "фрактал"
применяется в математике).
- мы посматриваем и в эту сторону тоже
3) Предложение по поводу новостей. Ребят, вам же не вечность играть,
а всего то 3 месяца продержаться надо. Потому, а что если время
выхода новостей забить в код советника жестко ?
- скорее всего так и сделаем.
Ведь важные новости выходят в определенное время и в определенные
дни недели. Например характерные времена это 9:00, 12:00 и 16:30 по
Москве. Забейте просто в код советника ряд времен и ряд дней
недели, когда могут выходить важные новости. И тогда не придется
каждую неделю грузить файл новостей...
4) И наконец большая просьба. Нельзя ли советника получше откомментировать,
либо написать какое-то подробное описалово того, как он работает
? Код у вас достаточно сложный и понять его довольно тяжело.
- постараемся, однако могу предположить что описание скорее
всего будет больше кода в несколько раз.
С уважением
Евгений.
Удачи на чемпионате ! :)
- спасибо. Если успеем подготовиться и нас пропустят по критериям.
P.S. Вот еще вопрос вспомнил. Почему ваш советник хорошо работает
только при больших объемах ?
- Это существенно для большой агрессивности советника на малом
периоде на коротких интервалах. При низких объемах мы просто
увеличиваем период работы (вплоть до H4) и советник становится
нечувствителен к объемам. Это замечание касается только логики
(пипсинг вообще лучше не использовать кроме как на флете. Брокер
будет "очень против"). На малых периодах советник реализует
торговлю в том числе и на сопротивлении (что обычно опасно и
ни один трейдер не будет торговать против рынка). На больших
периодах торговля идет в основном только по тренду и локальные
колебания не влияют на принятие решений советника (торговля
на сопротивлении не ведется, а если и ведется, так только после
пробоев канала на основании подозрений советника о смене тренда).
Либо малые периоды с огромной агрессивносьтю и полуавтоматическими
блокировками, либо увеличение периода работы системы и уменьшение
агрессивности.
Теперь об организационных способах увеличения вероятности
успешной автоматической торговли:
Банальное подключение советника к графику конешно хорошо, но!
Вопрос - как получить вероятность успешного ведения торговли
более 100%. Скажете нереально?! Сначала я с Вами соглашусь, а потом
смотрите сюда:
Допустим имеем последовательность сделок по одной паре (0 - положительная
сделка, 1 - отрицательная сделка )
Итак:
00001001000001100010011
W - вероятность успешного завершения сделки в этом случае будет
равна (A - количество успешных сделок, B - количество неудачных):
W1 = A1/(A1+ B1)
Далее, берем вторую пару, на ней последовательность успешных
сделок будет другая например:
10001101000000001000100
Вероятность успешного завершения сделки соответственно для
нее будет:
W2 = A2/(A2+ B2)
Теперь если мы одновременно торгуем двумя валютами, вероятность
успешного завершения сделки:
Wa = (A1+A2)/(A1+A2+B1+B2)
Таким образом можно заметить что всегда Wa<W1 и Wa<W2
теперь смотрите что мы делаем, мы будем работать с несколькими
валютами, но не одновременно. Т.е. работать будет одна валюта
из набора. Для режима работы по парам (ИЛИ) вероятность успешного
завершения сделки будет:
Wb = W1 или W2, на математическом языке это будет: Wb = W1 + W2
Таким образом Wb > W1 и Wb > W2
Но есть и еще один побочный положительный эффект от этого способа
работы по нескольким валютам. Если в один временной ряд расположить
моменты совершения сделок, совокупная частота совершения сделок
в этом случае увеличится.
На этом примере я показал как организационными способами увеличить
вероятность успешной автоматической торговли. В применении
нашей системы на практике это выглядит как простое подключение
советника к нескольким парам, у которых в настройке SymbolsCount =
1
В условии чемпионата указано, что подключать советника можно
только к одному графику. Для нас это очень большой минус...
Таким образом 100% получить конечно нереально, но увеличить вероятность
к значению близкому к этой величине вполне даже возможно.
OpenStorm, прежде всего спасибо за то что поделились интересным исходником.
Теперь немного критики и предложений. Просьба не пинать особо
ногами если глупость скажу.
1) По поводу нейронного торможения, которое у вас реализовано
через dll и с которым основные проблемы. Возможно я неправ, но
никаких нейронов я в твоем описании не разглядел. То о чем ты
пишешь, более всего напоминает методы управления словарем в
методах сжатия типа LZ, LZ77/78 LZW и тому подобных. То же выделение
максимальной уникальной подстроки и та же выбраковка наименее
актуальных подстрок. Может вам нейроны просто глаза замылили,
и вы не видите того, что по сути это старый добрый LZ + поиск(который
лучше всего сделать с хешированием) ? Не настаиваю разумеется.
Описал ты это лишь в самых общих чертах, и я мог неправильно
понять.
2) Немного не въехал в вашу "теорию хаоса", которую вобщем
то ты тоже описал весьма кратко. Как я понял, постулируется,
что в некотором масштабе, цена неплохо описывается простым
колебанием типа подъем-спад. Причем и подьем и спад занимают
в этом масштабе ровно один бар. Я пробовал похожий путь - спектральный
анализ. И споткнулся на очень сильной нестационарности сигнала.
Ваш метод нахождения оптимального периода моделирования скорее
всего должен страдать тем же. Сейчас я в этом разочаровался
и пробую фрактальный подход (не в смысле книжки Вильямса, а в
том смысле в котором понятие "фрактал" применяется в математике).
3) Предложение по поводу новостей. Ребят, вам же не вечность играть,
а всего то 3 месяца продержаться надо. Потому, а что если время
выхода новостей забить в код советника жестко ? Ведь важные
новости выходят в определенное время и в определенные дни недели.
Например характерные времена это 9:00, 12:00 и 16:30 по Москве. Забейте
просто в код советника ряд времен и ряд дней недели, когда могут
выходить важные новости. И тогда не придется каждую неделю грузить
файл новостей...
4) И наконец большая просьба. Нельзя ли советника получше откомментировать,
либо написать какое-то подробное описалово того, как он работает
? Код у вас достаточно сложный и понять его довольно тяжело.
С уважением
Евгений.
Удачи на чемпионате ! :)
P.S. Вот еще вопрос вспомнил. Почему ваш советник хорошо работает
только при больших объемах ?
Да, попрыгали вчера. Неплохо, неплохо. Желаю успеха и в дальнейшем
:). ...если вернуться к вопросу нейросетей. Почему обучение нейронов
должно или может быть невозможным для простых юзверей, причина
в железе или в головах вышеназванных? К сожалению, я не настолько
продвинутый программер, чтобы браться за написательство этих
зверей, хотя принцип более-менее ясен. Проблемка в том, что больно
уж много говориться сейчас об этих нейронах, а практической
реализации и положительных результатов так и не видно. Каждый
представляет себе по-своему. И все-таки, реализована же эта беда
в NeuroShell (Day)Trader-ах, или все это надувательство и опиум для народа?
Головы пользователей тут ни при чем, нужны мощные железки, успевающие
перестраивать и обучать нейроны в порцессе работы, иначе срабатывание
самообучающегося нейрона будет идти с огромным проскальзыванием
и он вообще потеряет свою эффективность. Те системы что предлагают
с уже обученными нейронами будут плавно терять свою эффективность,
поскольку рынок меняется постоянно и в конце концов все знают
чем это закончится - потерей депозита. По поводу нейрошела, видел
одну нейросистему на его основе, использующую около 700 индикаторов
(входов). Я бы не сказал что это уж совсем надувательство, но
сами наблюдали как шла постепенная потеря эффективности и с
должной регулярностью нейрон сам постепенно браковал свои
же индикаторы поскольку нейропоследовательности постепенно
отказывали и давали ложные сигналы. Мы довели наше наблюдение
до банальной балансировки депозита и прекратили это исследование.
Вы знаете кого-нибудь кто эффективно использует эту вещь? - я
нет, сколько не искал чтобы это выяснить.