Вопрос к Гусеву Владимиру а также ко всем алготрейдерам.
В продолжении утренней серии топиков по сложности алготрейдинга, хочу всем задать вопрос — КАК ОПРЕДЕЛИТЬ ФЛЭТ ПРОГРАМНО?
Это насущьный и актуальный вопрос не имеющий однозначного ответа. Выскажите свои мнения пожалуйста.
Итак, мы все понимаем что на рынке присутствуют только два состояния флэт и тренд. Определив алгоритм для распознания флэта и отфильтровав его мы получаем бесперебойный печатный станок. Кажется все просто, но на деле не совсем так. Ибо программно заложить алгоритм флэта не так то просто, приходится строить нейронно обучаемые цепочки, состоящие из логико — математических следований. Для построения этих цепочек требуются начальные вводные от количества и качества которых зависит точность работы основного алгоритма.
Итак как бы Вы определили флэт? На основании каких вводных Вы сможете предположить что в данный момент времени цена торгуется во флэте?
Выведите на главную пожалуйста, думаю что будет интересно и полезно для многих трейдеров.
А сама модель это яркий пример трех тенденций — вверх, флэт, вниз.
есть модели которые говорят подсказывают о переходе ко флэту.
*все кроме меня
В программировании не шарю, но, думаю, разница в их программном определение есть. Да и действия системы при этих двух состояниях должны разница. имхо
ага дисперсия такая то (меньше чем M, но больше еще чего то) флет, не такая (больше M) не флет, мало этого? добавляете еще степень свободы — отношение цен (доходности, конец окна к началу например), получаются еще комбинации. Мало этого? добавляете еще степень свободы — например коэфф. вариации, получаются еще комбинации. Простор для творчества большой, и в целом, логично и работоспособно.
И у Вас получается некая 3-х мерный массив комбинаций, каждому значению присваиваете тезис «флет, не флет, расширяющийся, безоткатный рост, еще что-то».
И вот получается простая модель на истории, ну а потом смотрите ее на текущие значения комбинаций, можно даже это автоматизировать и система будет выдать один из тезисов.
Просто, но работоспособно.
P.S. А можно пойти от противного, придумать тезисы, и начать например с 1 парамтера, найти их все на истории (очень много), и сопоставляя параметры, перепроверяя их!, найти диапазоны изменений параметра. Не хватает одного, добавляем еще 1. Смотрим, делаем. Не хватает 2, берем третий и так далее. Но слишком усложнять нет смысла. На мой взгляд 3 вышеперечисленных достаточно, они логичны и имеют смысл. Даже если каждому из них задать 3 диапазона, это уже 27 комбинаций, более чем! Можно добавить и объем например, но это на любителя…
Мне интересны другие точки зрения. Отличные от этой.
Что касается других точек зрения, ну не знаю… если надо определять программно, то все равно придется опираться на какие-то статистические зависимости, не на эти, так на другие. Как иначе то?
Аааа, ну еще можно анализ изображений делать;)), определять график, разбивать его на участки, определять тангенс угла наклона в каждом и делать выводы;))
Здесь высокий объем происходит при шортовых выносах, что лишь порождает дальнейшее стремительное движение.
.
Рассмотрим то что касается объема. Как мы можем идентифицировать размер нашего шаблонного объема который мы примем за единицу измерения, для понимания того что он вырос по отношению к предыдущему объему? В разный период времени в течении дня торговая активность различна и тот объем который мы заложили в шаблон после выхода из флэта утром, будет отличатся от объема в американскую торговую сессию. Путь идентификации по объему ложный или не полный. Нужны еще вводные.
Скорость наполнения объемом к примеру тиковых свечей привязываем к единице времени. Получаем тоже самое — свеча в зависимости от активности рыночной фазы может наполнятся по временному фактору одинаково как во флэте так и в тренде.
Если мы рассмотрим временные графики то здесь мы время свечи должны привязать к волатильности свечи и опять у нас будут огромные отклонения от шаблонов в зависимости от многоих составляющих.
Вобщем Владимир, на этих признаках мы не построим програмку!
Вы избрали не путь сотрудничества и взаимопонимания, а отрицания и противопоставления.
Вот повторю что уже писал ниже
Для всех кто использует или собирается стоить алгоритмы на базе свечных моделей.
На сегодняшний момент в России Олег Шагов имеет наибольший опыт построения алгоритмов на базе свечей.
Вот Олег Шагов спокойно переводил особенности свечных моделей в алгоритм. Я не учил его как делать алгоритм, он н учил особенностям свечных моделей. Мы просто обсуждали, в итоге получался результат.
Вот этот топик: smart-lab.ru/blog/173926.php
И вопрос Вам задали вполне корректный: Каковы причины выброса цены в вашем же примере с точки зрения манипуляций на рынке. Вы не ответили. Ответа у Вас нет и не будет. Одни голые слова.
Так что статья о распространении недостоверных сведений к Вам применима в полной степени. Не пишите бред.
Сами-то грешите безапелляционными суждениями, причём зачастую именно безграмотными. И боитесь в этом признаться. На вопрос ответьте.
Вот топик: smart-lab.ru/blog/173926.php
Вот вопрос: Каковы причины выброса цены в вашем же примере с точки зрения манипуляций на рынке. Вы не ответили.
Не ответите — не лезьте в каждую дырку с дурацкими советами. Ответите — извинюсь.
На сегодняшний момент в России Олег Шагов имеет наибольший опыт построения алгоритмов на базе свечей.
Как идея неплохо, есть над чем подумать!
Опять же продолжительность флэта никак не определишь заранее, выход из него будет виден постфактум.
Так что усилия в этом направлении смысла особого не имеют. Лучше попытаться сделать алгоритм, который будет не очень много терять на флэте, пусть в ущерб частичной потери доходности на тренде.
Видел такую штуку: codebase.mql4.com/ru/4483
Но тоже не панацея.
Ну а для алготрейдеров есть подсказка. Вот Вам небольшой кодик на описание флэта с помощью зигзагов, найдите в нем ошибки))
Хочу сказать что код не мой) Свой я бы не выложил здесь)
while (Pos >= PosEnd)
{
PriceHigh = HighBid[Pos] / Point + 0.1;
PriceLow = LowAsk[Pos] / Point + 0.1;
if (FlagUP)
{
if (PriceHigh > Max)
{
Max = PriceHigh;
ZZTime = Time[Pos];
}
else if (Max — PriceLow >= MinSize)
{
ZigZag[Count].Size = Max — Min;
ZigZag[Count].Time = ZZTime;
Count++;
FlagUP = FALSE;
Min = PriceLow;
ZZTime = Time[Pos];
}
}
else
{
if (PriceLow < Min)
{
Min = PriceLow;
ZZTime = Time[Pos];
}
else if (PriceHigh — Min >= MinSize)
{
ZigZag[Count].Size = Max — Min;
ZigZag[Count].Time = ZZTime;
Count++;
FlagUP = TRUE;
Max = PriceHigh;
ZZTime = Time[Pos];
}
}
Pos--;
}
И если кому-то нужен код — отпишу за деньгу.
Но, не обольщайтесь, это не сделает вашего робота прибыльнее.
Так как идентифицированный флэт может в любую минуту прекратиться и превратиться в тренд или во флэт со сдвигом.
Результат может принести прогноз наступающего флэта. Для этого нужен сложный волновой анализ (предпочтительно) или паттерн-рекогнайзер (не очень надежный метод).