nikolz написал: Относительно методов, например Эльдера или еще каких-то известных гуру, которые никогда не были не то что математиками, но и не изучали ее. Все их методы - это арифметика.
Абсолютно верно, но если Вы стартует в трейдинге то можно набраться чтоб избежать "детских ошибок" хорошая книга, торгует осторожно. Знания Высшей математики не обязательны, но если знаете и торгуете алгоритмами то +.
nikolz написал: 2) Почему победители различных трейдерских соревнований выигрывают лишь один раз.
Ну абсалютно не так посмотрите результаты "Татарин", сколько становился?
Цитата
nikolz написал: Кратко мой ответ состоит в том, что все перечисленные выше события являются случайными.
Ну это тоже из области сказочки! Как он может быть случайным если управляется Маркетмейкерами которые держат позиции с двух сторон и видят на доске ордера всех участников. Тому хороший пример недавними события с нефтью нужно было у ти от убытков загнали цену в минус.
Добрый день nikolz, Попробую Вам ответить, только изначально нужно понимать что это мнение одного частного человека. И уж тем более не претендующее на "истину в последней инстанции"
Цитата
nikolz написал: 1) Почему известные в книгах методы торговли встречаются в литературе как успешные лишь единожды
У моего прям в диалоге можно в любой момент добавить или изъять любую сумму в любой валюте. Показалось мне, допустим, что он перегрузился бумагами по какой-то валюте - ХРЯСЬ ему по кошельку, и он уже в долгах, вынужден выискивать свободные деньги, закрывая какие-то бумаги. Или, наоборот, дать денег побольше, и теперь его мысли о том, каких тикеров следует ещё прикупить.
От личный алгоритм.
Только сами себе противоречите."Скрипт сидит себе в Квике и торгует. Пользователь ему нафиг не нужен. Работает СКРИПТ, которому никакие модули, никакие трейдеры, никакие установки и никакие тесты нафиг не нужны. Скрипт отлажен? Протестирован? УПЕРЁД!"
Вот уже и по цитатам разлетается. Предлагаю отдельную тему с готовым названием "Скрипт сидит себе в Квике и торгует".
Так уж определитесь Пользователь нужен или под диваном застрял.
Цитата
Владимир написал: Так я и позволю обсуждать мой скрипт!
Обсуждать нечего, никто его не видел. фреймворк HackTrade можно опубликован. алгоритм Ваш можно "Показалось мне, допустим, что он перегрузился бумагами по какой-то валюте - ХРЯСЬ ему по кошельку, и он уже в долгах, вынужден выискивать свободные деньги, закрывая какие-то бумаги. Или, наоборот, дать денег побольше, и теперь его мысли о том, каких тикеров следует ещё прикупить." Знатная идея.
Как известно, "кто умеет, тот делает, кто не умеет, тот учит как надо делать". Неимея понятия о предмете что можно сделать? очередной велосипед или открыть Америку.
Никого не пытаюсь учить, и уж тем более обсуждать Ваш скрипт, так как Нет предмета для обсуждения, по одной причине его никто не видил! Про это можете судить Вы, и Ваи друзья, и Ваш скрипт.
Какой "другой модуль"? Про модули читать выше!
А "задача ограничить общий проигрыш" и вообще смехотворная: дал ему в зубы сто рублей или там долларов - и пусть выкручивается как знает! Жадничить не нужно! Дайте так чтоб заработал! Ну по настоящему! "Скрипт сидит себе в Квике и торгует. Пользователь ему нафиг не нужен." Дать нужно так чтоб все узнали чей скрипт передовой. Всё остальное - на помойку.
Отвечает каждый трейдер, а со скрипта взятки гладки. Проведу аналогию: Робот - пылесос ползает по комнате. Программа что ни будь простое из нечеткой логике, не плохо справляется. Но вот ведь не задача, застрял под диваном. Выхода здесь два 1) будет там стоять ведь программа не поможет. 2) Мне нужно встать и вытащить его от туда снова запустить. Человеческий фактор налицо. И причем тут позиция разработчика. Я в данном конкретном случае пользователь.
О, УЖАС! - что делать, если этот "определитель тренда" нам просто соврал? Работает другой модуль - Risk Management в котором трейдер делает свои установке на основании тестов. Стратегии хорошо описаны нет смысла повторять. Принцип сводится к простому рано резать убыток и давать расти прибыли. И другая задача ограничить общий проигрыш чтоб можно было восстановить счет. Я в своих отслеживаю в основном два показателя (Profit Faktor, %Wining сделок).
А торговая программа и вообще управляется потоком внешних данных Обрабатывает этот поток с цель выявления паттернов, статистически значимых зависимостей и т.п. В том числе выявляет тенденцию. Предполагая что выявив тренд на ранней стадии он продолжится какое то время. Но это рынок в помощь RM(PF,%W). А в нашем случае с утра пораньше "А где же этот поток, вчера вроде был, куда делся голубчик?"
А торговые идеи здесь вообще никогда не обсуждались - это личное дело каждого, да ещё и, как правило, "ноухавное", которым мало кто намерен делиться, Столько понаписано всего (в э. библиотеке книг 200) дельных мало согласен, на пальцах одной руки. Так ведь и стратегии почти все известны и опубликованы ни чего нового. То что Маркетмейкер или Операторы прячут при размещении своих крупных ордеров, так Volume в помощь.
На мой взгляд важней здесь математика. Вот пример.
Если считать простую среднею и использовать при определении тренда то и получишь что насчитал, а данном случае отставание результата составляет Period/2+1, то есть заметил тренд после половины периода этой средней. И что с этим делать я не знаю, я использую фильтры, ведь космические корабли стыкуют в автоматическом режиме в заданный момент времени. Ну отставание 1 - 2 бара при выявленной тенденции можно себе позволить.
Мне вот в начале работы над скриптом казалось, что торговать нужно НА ВСЕХ таймфреймах одновременно. Это все описано и опубликовано и есть подходы, к примеру 3 окна Эльдера.
Я пытаюсь обсуждать как создать на мой взгляд лучше по принципу "мухи отдельно, котлеты отдельно". Я за модульный подход. Отдельно торговые идеи от всего остального, с простой возможностью подключения.
Кто будет пере подключать вопрос третий скрипт или человек.
Господи, что такое "движок" и на кой он кому нужен? Назовите как Вам нравится,
по смыслу это модуль (часть скрипта отвечающее за взаимодействие с QUIK), лучше модуль. Долой все технические вопросы, оставляем торговые! именно этот подход реализован автором при создании фреймворк! Остальное допишет пользователь!
Скрипт - это И ЕСТЬ стратегия! Скрипт - Это автоматическая торговая программа, которая состоит из разных частей (хотя бы смысловых) не говоря уже про функционал.
А если умеет, то пусть и реализует САМ свои же рекомендации - на кой ему вообще человек? "Хотя бы жизнь в него вдохнуть"
И за каким хреном нужен этот вонючий тренд? тренд - направленное движение, встал и "кури бамбук" не забудь посчитать результат лучше скриптом.
На каком таймфрейме? Выясняем при помощи тех. анализа.
А если у нас высокая волатильность, то какая, в жопу, разница, куда там направлен тренд? Каждому свое, если стратегия позволяет торговать высокую волатильность, то и торгуйте, а иначе торгуем тренд.
ЕДИНСТВЕННОЕ, что требуется от скрипта - это давать ответы на вопрос: когда, сколько и чего нужно покупать, а когда продавать.
1) покупать, а когда продавать; продал в шорт а когда покупать. 2) В каком направлении. 3) Каким количеством.
4) Каким инструментом. 5) На каком рынке.
Отвечает каждый трейдер.
Но этот сайт не об этом, про "косяк на косяке и косяком погоняет".
Он отвечает на вопросы особенно с утра "А почему же данные не загрузились?" и то не всегда, а с версиями беда в Вашей терминологии просто "понос".
Как раз скрип менять не нужно, я пишу об этом. Желательно просто переключались стратегии, кто будет переключать скрипт или ручками зависит от реализации движка.
Цитата
Владимир написал: Да, "меняются рынки, меняются инструменты" - и что?
Здесь все просто: 1) рынок в тренде торгуем - трендовые стратегии; 2) рынок в цикле - осцилляторы; 3) рынок во флате - скальпим.
Это позволяет торговать на любом рынке с минимальными изменениями в скрипте.
Цитата
Владимир написал: Пущай САМ разбирается со своими стратегиями - мне какое дело?
"Каждая заявка помнит, сколько она набрала, и сколько надо скидывать. А если ей дать отрицательное значение, она войдёт в шорт (даже из лонuа с любым остатком). А если в шорте передадите 0, шорт закроется, причём тем объёмом, которым заявка успеет войти, когда будет переворачивать лонг."
Говоря проще, создав "умную заявку" ей присваивается уникальный номер - trans_id, отслеживается во всех таблицах. И Забыл про все это. А дальше занимаешься своим прямым делом - управляешь позицией, меняешь цены, меняешь направление сделок. В общем торгуешь!!!
Владимир написал: Да мне и notepad не нужен, не говоря уже про SciTE. Текстовый редактор, в который понапихали всякого говна по определению хуже, чем просто текстовый редактор.
Никто же никого и не заставляет. Есть варианты нужно попробовать и выбрать для себя подходящей. Привыкли к блокноту выбор личный.
Цитата
Владимир написал: Луа сам почти ничего не знает. К тому же, там постоянно меняются версии языка.
Скорее пользователи не до конца разобрались. Версии меняются простым копированием в том числе описанным на этом сайте.
Цитата
Владимир написал: не Вам мне объяснять что такое OOP
"Гораздо проще в кресло бросить тело и рассуждать о сложности проблем" Есть пример реализации, просто нужно попробовать и сказать что не так. На мой вкус Денис умница!
Цитата
Владимир написал: А а режиме работы по историческим данным sleep вообще не используется, и двухмесячгый тиковый массив обрабатывается секунд за двадцать.
А кто говорил про режим по историческим данным. я говорил про ограничение этих данных. А sleep нужно при реализации конечного автомата в цикле;
repeat ........ until orderA.filled;
Это всего лишь "пробный шар"
Цитата
Владимир написал: цеплять МОИ стратегии к какому-то говну?
Факт известный, меняются рынки, меняются инструменты, неплохо бы переключить стратегию через модуль а лучше так инструмент1== A and Стр1 o rинструмент1== A and Ctr2
Владимир написал: А рабочий код моего скрипта состоит именно из ОДНОЙ строки. Можете Бориса спросить - он видел мой код.
никто не видел кроме Бориса,
а фреймворк HackTrade опубликован и свободно распространяем, каждый может загрузить и попробовать. выполнен модулем, к которому можно цеплять разные стратегии, риск менеджмент, мани менеджмент и др. без изменения фреймворк, переделывая только не обходимые модули. Попробуйте на своем изменить стратегию? Но в одном Вы правы при таком обсуждении бессмысленно нужно сваливать
Если Вы знакомы notepad, то SciTE (Версия 1.76 .57Ru Apr 14 2008 10:55:37) тоже самое, текстовый редактор который написан на луа с встроенным интерпретатором луа. У меня стоит notepad, но удобней SciTE для меня!
Цитата
Владимир написал: Есть ФАЙЛ, который у меня иногда занимал десятки мегабайт - там МОЖНО что-то найти, а в этом говне что?
точно также и тоже как и notepad. SciTE знает все что знает луа. Легко дописываются настройки.
Не мне Вам объяснять что такое OOP и преимущество такого подхода. поэтому и летает, а тормозить нужно чтоб "не улетел" ставлю slttp(1) без него виснет процессор. Да Вы сами все хорошо знаете.
-- OOP support local __object_behaviour = { __call = function(meta, o) if meta.__index == nil then setmetatable(o, {__index = meta}) else setmetatable(o, meta) end if meta.init ~= nil then meta.init(o) end return o end }
Я то точно не знаю что это, ф давай те спросим у автора:
"Вторая часть полностью посвящена таблицам, единственной структуре данных в Lua. Главы этой части обсуждают структуры данных, их сохраняемость, пакеты и объектно-ориентированное программирование. Именно там мы раскроем настоящую мощь язык"
Programming in Lua Third Edition Roberto Ierusalimschy
Владимир написал: А графики и прочее подобное дерьмо
Это один из вариантов получения данных, + их обработка с помощью алгоритмов на писаных на луа или стандартных индикаторов. Зачем же себя обкрадывать, есть варианты кому нежена отличная от Вашей стратегия тот пользуется.
рядом консоль куда выводится результат или ошибки. Все видно одним нажатием. Да Вы просто попробуйте это свободная программа. Загрузка в терминал окончательная доводка, я так довожу в боевом режиме с небольшим депо.
Владимир, Ну Вы то уже знаете, что самое ценное в жизне это Время. Чем больше возраст тем больше понимание этого! Малые шалости нам помогают экономить главное да и разработчики меньше скверных слов услышат в свой адрес
Цитата
Владимир написал: Вот, скажем, в моём скрипте идёт открытие внешнего файла и забор данных оттуда. И не только данных, но даже и некоторого кода. И что этот придурок может "проверить"?
Это не только на писание но еще и отладка. 1) фреймворк HackTrade избавил от необходимости следить за взаимодействия скрипта с квиком.
"работает в QUIK без лишних усилий робот работает быстро (можно делать роботов на тиках) поддерживаются графики «умные заявки» избавляют от бесконечной отладки"
Владимир написал: Задача создание робота с обычным блокнотом превращается в куда более тривиальную задач
пишу в SciTe по одной причине нажатием на одну кнопку идет исполнение луа кода и проверка на лексические ошибки, подменяя данные от терминала Quir проверяешь логику и т.д. А что блокнот может?
Владимир написал: Нет, я больше опытом не обмениваюсь: два раза попробовал - хватит.
У вас и так выложено, все гениальное в простом вот эта штука, у вех на глазах t={ [0]=0, [1]={}} если добавить что #t не видит и не считает t[0] все становится на место. Как я раньше не заметил.
Nikolay написал: По смыслу - простая система. По реализации - очень сложная.
Эта да, у меня был рабочий вариант динамически выставлялись ордера тоже контр тренд не плоха набирала пока не попадала под тренд. Вариант пробный был на небольшой депозит порядка 10 уровней. Но в наших условиях надо на открытии рынка ставить с хорошим спредом и депозитом, чтоб можно было усреднить если что пошло не так.
Владимир написал: А "для ускорения получения сигнала" данные нужно брать данные из ТТТ: BID, OFFER, SEC_PRICE_STEP или что там ещё надо. Быстрее не получится.
Нет так беру правда цикл гоняю в разных варинтах сейчас 10 мс. но мне столько ненужно 1 сек. "за глаза" - это чтоб ошибки повыскакивали. Пока все ок! Сбросил еще на один терминал у др. брокера.
Владимир написал: По моему опыту, только с тем, что написал сам
Не Все тут программисты, для этого и обмениваемся опытом. Если все выбросить что останется, только Ваш скрипт, а торговать с кем будите?
Цитата
VPM написал: И что ещё за "выигрыш в 100%"? Относительно ЧЕГО и за какое время?
Это не мое, когда разбирался сохранил, может кто то знает выскажутся.
Продолжение вот: "Сетка – типичная модель-ориентированная система. Она подразумевает, что некие условия рынка удерживают цену в определенном интервале. Например, ограничение не позволяет паре EUR/CHF опуститься ниже 1,20. Но и подняться слишком высоко цена также не может,
учитывая факт, что Национальный банк Швейцарии должен будет в конечном итоге выкупить назад все франки,
которые они продали ради поддержки определенного значения. Все это необходимые условия для применения Сетки. Без них это было бы обычной рулеткой, и пополнило бы список иррациональных трейдерских методов.
Волатильность – ключевое условие для метода Сетки. Чем ее меньше, тем меньше доход. Для того чтобы компенсировать его снижение, нужно вкладывать больше средств и сжимать сетку."
Сетка – это очень простая система. Она выставляет отложенные и краткосрочные ордера в фиксированных значениях выше и ниже текущей цены. Прибыль получается при отклонениях рынка. Ордера открываются и закрываются в случае, когда цена пересекает значения сетки в любом направлении. Гипотетически степень выигрыша здесь приближается к 100%, но на практике такого уровня добиться невозможно.
Трейдеры обычно используют виртуальный механизм хеджирования, который открывает и закрывает позицию вместо того, чтобы открывать новую в противоположном направлении. Это увеличивает общую прибыль и позволяет контролировать потери. Так что процент выигрыша здесь колеблется на практике в районе 60%.
Владимир написал: у таблиц Луа для адресации используются не индексы, а имена.
Да видимо лучше индексировать trans_id, так как "умная заявка" формирует под себя уникальный trans_id.
Цитата
Владимир написал: Я бы такое говно НЕМЕДЛЕННО выбросил на помойку! Шоб не умничало.
Это всегда успеется. А с чем работать? Пока красота! К движку вопросов нет реализация класс. Проблем мы пока только от моей стратегии. Да решил не менять оставить сетку в силу того что подход скальперский много сигналов и сделок.
"Заявка в фреймворке HackTrade представляет собой динамическую лимитную заявку с изменяемой ценой. При этом также может меняться количество и даже направление. Главное, то нужно запомнить, "умная заявка" будет пытаться набирать указанное количество лотов по заданной цене. Даже если вы снимите заявку торговой систем, SmartOrder породит новую и продолжить добирать заданное ранее количество (представьте, что SmartOrder - это заявка, которая гарантированно набирает зданный объём)."
Цитата
VPM написал: trans_id формирует сам скрипт и уж кто-кто, а он его знает.
Порядок в фильтрации колбеков по одному параметру trans_id.
Вот полный код:
function OnOrder(order) local key = order.trans_id local executor = SmartOrder.pool[key] -- There isn't order if was executed imidiately! Нет заказа, если он был выполнен немедленно! if executor ~= nil and executor.order ~= nil then executor.order.filled = order.qty - order.balance if (order.flags % 2) == 0 then executor.order.active = false end end end
а дальше в main()
for trans_id, smartorder in pairs(SmartOrder.pool) do smartorder:process() end
Nikolay написал: Но с ним можно сделать достаточно небольшое число алгоритмов
Ну на первую скидку хорошо реализуется 3 барные паттерны Price Action, VSA, PivotPoint, посчитать имбаланс и прочее. ТТТ сразу синхронизирует.
Цитата
Nikolay написал: Если не считать того, что он берет данные с графиков
Мне кажется ни чего не мешает в ф. Robot() получить getDataSourceInfo().
Нет основной вопрос эта функция Trade() ведь останавливает поток и крутит исполнение ордеров в цикле. Все тоже взаимодействие с терминалом, знаменитые колбеки (OnInit чего стоит ) В любом случае надо проверять как фильтруются ведь "просьба трудящихся" никуда не делась. Да и цикл что если по какой-то причине не исполняется ордер надо выходить!
Не погоняю посмотрю может что - то соображу. Буду рад любым замечаниям.
Nikolay, Ваши работы видел, не которые пробовал что то сей час в анализе использую, а главное учился. за что Вам отдельный земной поклон.
Но сложность вот в чем использую в основном индикаторы на луа пишу их через замыкание, их же на прямую использую в торговом роботе. Стратегий пул. То есть переключаю между состоянием рынка. это в том числе работы J.Ehlers. Вы сними знакомы. Да еще этим же скриптом провожу тест, задаю период, синхронизирую данные 4 окон прогоняю 1 минутным, цель - получить в основном два показателя ProfitFfaktor и % прибыльных сделок. На основании этих показателей принимаю решение чем и как торговать.
Цитата
Nikolay написал: Я придерживаюсь принципа, что если есть шанс получить критическую проблему даже 0.1%, то значит этим надо заниматься.
Да я с этим замучился, в программировании у меня базовые знания инженера мой первый персональный "ЕС 1841" сов. разработка. и работы я свои не пишу, а скорее собираю как "конструктор" находя интересные вещи в том числе и Ваши. Но если движок худой то остальным и заниматься бессмысленно. Вот и вспомнил старые работы.
Провел аж 5 сделок это при том что я ему АТР убил в расчета, и слетел но винить надо меня я не доправил код. Новый запуск. Да на "пиво" то заработал. О чудеса!
Nikolay написал: Сказать, что его можно отпускать в работу на реальном счете - наверно нет.
Поднял старую наработку, на что ругался и что заметил поправил. Запустил в реал, разрешил аж 6 контрактов, стратегия "сетка" написана еще на "первобытном языке" ну разбираться пока не хочется. Задача проверить движок, ведь что меня смутило ранее.
Цитата
Nikolay написал: Слишком много нюансов при реальной работе через брокера.
Согласен полно, но если он позволит мне заниматься торговлей а не шарить по движкам получая очередные оплеухи, я ему все прощу.
VPM написал: Сделаю период Вашим метом 1сек, цикл 1сек, запрос обновления информации 1сек, т.е. попробую синхронизовать.Добавлю флаг по направлениям. может поможет.
"Велосипед" пока оставим. Просматривая старые наработки наткнулся на "суперкар".
К сожалению автор не поддерживает разработку. Написана аж в 14 далеком году. Изменения с тех пор прошли в qlua, на что следует обратить внимание: 1) язык Фреймворк на писан lua 5.1, qlua 5.3, 5.4; 2) "по просьбам трудящихся" колбеки прилетают по нескольку раз на одно событие.
Тем не мене это "суперкар" по утверждению автора носится может по тикам! Мне столько не нужно.
Написан просто шикарно, со всей мощностью языка lua (мета таблицы, сопрограмма), кратко, лаконично.
Судите сами: минимальный робот в HackTrade состоит из 3-х элементов: 1) Исполнения основного модуля 2) Определения основной функции 3) Вызова функции Trade, для осуществления торговых действий
код; dofile("hacktrade.lua") function Robot() Trade() end
Главное полностью отвечает моему подходу "отдельно мухи, отдельно котлеты" Есть супер движок, к нему цепляем свои стратегии и "курим бамбук"!
Да, набирает позицию автоматом, предварительно нужно определить количество контрактов или лот при выставлении ордера.
"Самое сложное в роботе на qlua для Квика это написать логику отслеживания заявок и сделок по инструменту". Скажем дружно, огромное, человеческое спасибо автору!
Владимир написал: А отложенные вообще не вижу смысли использовать
Нет смысл то есть на случай аварийных ситуаций (разрыв связи, терминал подвис). Я вот у себя боролся с провайдером постоянно канал падал уже о сервере задумывался.
Но ведь задержки не от скрипта, если убрать sleep он повесит терминал. Задержки от брокера возможно с биржи когда исполняются огромное количество ордеров и явно наши не в приоритете. Да и отложенные не использую по этой причине, не знаешь какое проскальзывание получишь.
Но Ваш подход мне более менее понятен похож на сетку, но мне думается более правильно по смыслу назвать подстричь рынок.
Сделаю период Вашим метом 1сек, цикл 1сек, запрос обновления информации 1сек, т.е. попробую синхронизовать. Добавлю флаг по направлениям. может поможет.