АвторСообщение





Сообщение: 2
Зарегистрирован: 03.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 03.03.13 20:22. Заголовок: Разворотные ступени рынка


Часть 1.
Разворотные ступени рынка - это изменение направления движения дневной тенденции рынка, строящейся по разворотным уровням (Pivot). В индикаторе FiboPivotAV_Steps уровни Pivot строятся на основании нескольких последних дней, а не на основании одного дня, как это происходит в классической версии расчета Pivot.

Часть 2.
Вторая версия индикатора FiboPivotAV_Steps включает исправление ошибок определения разворотных уровней, новый алгоритм поиска уровней поддержки и сопротивления, визуализацию каналов линейной регресии. Статья завершается разработкой простенького эксперта, открывающего ордера при смене дневной тенденции.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 26 , стр: 1 2 All [только новые]





Сообщение: 357
Зарегистрирован: 25.08.13
Репутация: 1
ссылка на сообщение  Отправлено: 21.10.14 08:54. Заголовок: Привет всем. Когда т..


Привет всем.
Когда то посетила идея создания такого индикатора. Это было еше до объемов. Решил посмотреть как он работает сейчас.
Главным преимуществом и неоспоримым преимуществом это индикатора - была его самодостаточноть и простота для принятия решений в ручной торговли, ориентированной на среднесрок. По данному индикатору можно торговать не добавляя ничего. Нужно только соблюдать простейшие правила риск-менеджмента, покупать в "дешевой" зоне по ап тренду (нижняя половина канала) и продавать в "дорогой" зоне по даун тренду (верхняя половина канала). Вот и вся суть. Стопы кстати в среднесрочной торговле здесь получаются больше (по 400-600 пипсов), но это и должно быть так. Это для среднесрока даже плюс - стоп выбивает если тенденция поменялась, а не потому что произошли какие-то случайные кратковременные всплески (новости и т.д.)

Вот скрин по одной акции.
http://shot.qip.ru/00zEfM-6BtVUoinO/





Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 1
Зарегистрирован: 05.03.13
Репутация: 0
ссылка на сообщение  Отправлено: 23.03.13 11:38. Заголовок: Подскажите как получ..


Подскажите как получить данные с линий Регресии в индикаторе FiboPivotAV_Steps?

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 52
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 1
ссылка на сообщение  Отправлено: 25.03.13 11:19. Заголовок: Step пишет: Подскаж..


Step пишет:

 цитата:
Подскажите как получить данные с линий Регресии в индикаторе FiboPivotAV_Steps?


К сожалению, прямого метода нет, т. к. канал - графический объект.
Данные можно получить только косвенным путем. Для этого нужно найти на графике объекты, имя которых начинается символами FPAVS_IND_CHAN_. После этих символов следует дата/время левой по графику точки линии:

 цитата:
for (int i = ObjectsTotal()-1; i >= 0; i--)
if (StringSubstr(ObjectName(i), 0, 15) == "FPAVS_IND_CHAN_")
{
datetime leftTime = ObjectGet(ObjectName(i), OBJPROP_TIME1);
datetime rightTime = ObjectGet(ObjectName(i), OBJPROP_TIME2);
}


Но в итоге Вы получите только точки временнЫх границ канала, а не их цены. Цены канала регрессии так получить нельзя. Для этого нужно будет воспользоваться функцией (переведя время в индексы баров), которая неоднократно применялась в проекте MQLabs:

 цитата:
double GetLinearRegressionValues(int rightBar, int leftBar, double &leftValue)
{
// - 1 - == Инициализация переменных ====================================================
int n = leftBar - rightBar + 1; // Количество баров для расчета
if (n <= 0) // Если количество баров не является..
return(0); // ..натуральным числом, то это ошибка
double sumy = 0, // Сумма значений функции
sumx = 0.0, // Сумма аргументов функции
sumxy = 0.0, // Сумма произведения аргументов и..
// ..значений
sumx2 = 0.0; // Сумма квадратов аргументов функции
// - 1 - == Окончание блока =============================================================

// - 2 - == Нахождение необходимых сумм =================================================
for (int i = rightBar; i <= leftBar; i++) // Справа налево по графику
{
sumy += Close; // Суммируем значения функции
sumxy += Close*i; // Сумма произведений аргументов и..
// ..значений функции
sumx += i; // Сумма аргументов
sumx2 += i*i; // Сумма квадратов аргументов
}
// - 2 - == Окончание блока =============================================================

// - 3 - == Вычисление коэффициентов К и В ==============================================
double denominator = sumx2*n - sumx*sumx; // Знаменатель для нахождения коэф. К
if (denominator == 0.0) // Знаменатель не может быть равен..
return(0); // ..нулю
double kKoef = (sumxy*n - sumx*sumy)/denominator;// Нахождение значения коэффициента K
double bKoef = (1.0/n)*(sumy - kKoef*sumx); // Коэффициент B
// - 3 - == Окончание блока =============================================================

// - 4 - == Расчет значений линии на крайних барах ======================================
leftValue = kKoef*leftBar + bKoef; // Значение линии на левом баре
return(kKoef*rightBar + bKoef); // Значение линии на правом баре
// - 4 - == Окончание блока =============================================================
}



Спасибо: 2 
ПрофильЦитата Ответить





Сообщение: 858
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 21.10.14 10:37. Заголовок: Для интереса провери..


Для интереса проверил, как чувствует себя стратегия на форвард-периоде. В принципе пока держится. Для трех пар взяты те параметры, которые выведены в статье.

Евро


Франк


Фунт


Ради справедливости отмечу, что это тест с 2009-го года. То есть полученная прибыль в годовом выражении достаточно мала. Более того, во всех случаях фактор восстановления меньше единицы (максимальная просадка больше чистой прибыли).

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1
Настроение: нормальное
Зарегистрирован: 20.10.14
Откуда: Россия
Репутация: 0
ссылка на сообщение  Отправлено: 21.10.14 10:42. Заголовок: ­Здравствуйте, помоги..


*PRIVAT*

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 980
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 08.12.14 10:20. Заголовок: Игорь, день добрый! ..


Игорь, день добрый!

В статье В ожидании тренда в индикаторе PChannel_Percent Вами была реализована полезная идея:

 цитата:
Пробитие одной из границ канала может рассматриваться как начало тренда. Для исключения случаев явных ложных пробитий, когда цена нарушает уровень всего на несколько пунктов, а затем возвращается назад, стоит создать сигнальную зону, отстоящую, например, на 10% выше (ниже) от границы канала.
В итоге получим модифицированный индикатор - PChannel_Percent. В отличие от исходного индикатора PChannel, канал, показывающий границы экстремумов, отображается пунктирной линией. Сплошной линией показываются границы сигнальной зоны, пробитие которых и будет являться сигналом открытия позиций.




Правда напрашиваются 4 зоны - по 2 (и выше и ниже) для каждой из границ канала. Помимо ложного пробоя на пару пипсов, может быть
такой-же недобой - когда формируются двойные вершины или донышки перед разворотом. И тогда логика простая: если зона пробита и идет
повторное пробитие в обратную сторону без касания границы канала и, например, моментум в зоне перекупленности-перепроданности, то
можно прогнозировать разворот и войти рыночным ордером со стопом по границе.

(На скрине ниже параметры DTosc не подбирались - кинул на график просто для примера)




Вы может добавить подобное свойство индикатору FiboPivotAV_Steps_v2.mq4 ?

К сожалению, из-за графических свойств канала регрессии просто добавить пару буферов и построить параллельный канал как в PChannel не получается
Правда подсказки выше я использовал и в советнике каналы нашел:

double fiboPivot = iCustom(NULL, 0, "FiboPivotAV_Steps_v2", 0, 1);
double rightValue, leftValue;
for (int ii = ObjectsTotal()-1; ii >= 0; ii--)
if (StringSubstr(ObjectName(ii), 0, 15) == "FPAVS_IND_CHAN_") {
datetime leftTime = ObjectGet(ObjectName(ii), OBJPROP_TIME1);
datetime rightTime = ObjectGet(ObjectName(ii), OBJPROP_TIME2);
rightValue = GetLinearRegressionValues(iBarShift(NULL, 0, rightTime), iBarShift(NULL, 0, leftTime), leftValue);
// Print(ii," ",rightTime, " ", rightValue, " ", leftTime, " ", leftValue);
}

Но более удобно и универсально будет реализовать эти зоны в индикаторе. Наибольший интерес представляет удобство работы с границами
канала.

-----------------------------------------------------------------------------------------
PS. Для думающих в этом же направлении:
также интересные подходы по теме были озвучены в цикле статей Динамика линейной регрессии.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1038
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 08.12.14 20:03. Заголовок: Genry пишет: Правда..


Genry пишет:

 цитата:
Правда подсказки выше я использовал и в советнике каналы нашел:

double fiboPivot = iCustom(NULL, 0, "FiboPivotAV_Steps_v2", 0, 1);
double rightValue, leftValue;
for (int ii = ObjectsTotal()-1; ii >= 0; ii--)
if (StringSubstr(ObjectName(ii), 0, 15) == "FPAVS_IND_CHAN_") {
datetime leftTime = ObjectGet(ObjectName(ii), OBJPROP_TIME1);
datetime rightTime = ObjectGet(ObjectName(ii), OBJPROP_TIME2);
rightValue = GetLinearRegressionValues(iBarShift(NULL, 0, rightTime), iBarShift(NULL, 0, leftTime), leftValue);
// Print(ii," ",rightTime, " ", rightValue, " ", leftTime, " ", leftValue);
}


Это достаточно странный способ получения координат. Зачем получать времена баров путем поиска объектов? Ведь в индикаторе все делается наоборот: по номерам баров строится канал. То есть то, что Вы получаете от объекта, известно еще до его построения:

 цитата:
ShowRegressionChannel(extBarTime, Time[finishIndex], clr, RAY_IS);


extBarTime и Time[finishIndex] - вот то, что Вы искали.

Ну а далее все равно не так уж все и просто. Каналы регрессии в индикаторе показаны в виде цельных графических объектов, т. е. это не три параллельные линии, а единый объект "Канал регрессии". Вывести в этих же координатах другой объект со смещением не выйдет, т. к. получим те же самые результаты. Выход - показывать линии отдельно в виде "Трендовых линий". А это, в свою очередь, предполагает проведение отдельного расчета координат линий исходного канала регрессии, а затем - вычисление отступов, чтобы провести к ним параллельные линии.

К сожалению, стандартный объект линейной регрессии в МТ4 реализован с небольшой ошибкой: верхняя и нижняя линия не совпадают с теми расчетами, которые предлагаются в описании к этому инструменту, хотя центральная линия вычисляется правильно (описано здесь). В итоге приходим к тому, что параллельно использовать стандартный канал регрессии и собственные построения нельзя - будут большие расхождения. Значит, потребуется перевести все объекты линейной регрессии на трендовые линии, что в три раза увеличивает количество графических объектов и, соответственно, раздувает код строк этак на 200 или даже больше.

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 981
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 08.12.14 20:29. Заголовок: Scriptong пишет: Э..


Scriptong пишет:

 цитата:
Это достаточно странный способ получения координат. Зачем получать времена баров путем поиска объектов? Ведь в индикаторе все делается наоборот: по номерам баров строится канал.


Игорь, это я в советнике нашел канал построенный индикатором и потом пытался посчитать дельту.
Scriptong пишет:

 цитата:
Ну а далее все равно не так уж все и просто. Каналы регрессии в индикаторе показаны в виде цельных графических объектов, т. е. это не три параллельные линии, а единый объект "Канал регрессии". Вывести в этих же координатах другой объект со смещением не выйдет, т. к. получим те же самые результаты.


Да, так и есть. Я обрел это познание и решил написать пост о дополнении индикатора

Scriptong пишет:

 цитата:
К сожалению, стандартный объект линейной регрессии в МТ4 реализован с небольшой ошибкой: верхняя и нижняя линия не совпадают с теми расчетами, которые предлагаются в описании к этому инструменту, хотя центральная линия вычисляется правильно (описано здесь).


О, прочел. Странно, яндексом и гуглом искал информацию по регрессии, а на этот пост не попадал.

Scriptong пишет:

 цитата:
В итоге приходим к тому, что параллельно использовать стандартный канал регрессии и собственные построения нельзя - будут большие расхождения.


Мда, а вот это печальная информация. Я то надеялся повторить построенный канал, добавить дельты и
засунуть все это в шесть буферов + 2 используются - как раз думал в 8 уложиться, а оказалось - .

С уважением! Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 982
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 08.12.14 21:41. Заголовок: Нашел индикатор Кан..


Нашел индикатор Канала LR Автор: dimicr который строится поверх CLR FiboPivotAV_Steps_v2

Scriptong пишет:

 цитата:
Значит, потребуется перевести все объекты линейной регрессии на трендовые линии, что в три раза увеличивает количество графических объектов и, соответственно, раздувает код строк этак на 200 или даже больше.



Игорь, этот вариант сократит объем дополнений?
А то хорошо получается: буферные линии поверх до 0 бара, а дальше - прогноз, графические типа Луч.





С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1039
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 08.12.14 22:38. Заголовок: Немного подумал. При..


Немного подумал. Пришел к выводу, что достаточно лишь изменить код функции ShowRegressionChannel.
В итоге получилось то, что нужно. Правда, делал на скорую руку, возможны различные ошибки. О красоте кода вообще говорить не приходится.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 983
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 08.12.14 22:46. Заголовок: Scriptong пишет: Не..


Scriptong пишет:

 цитата:
Немного подумал. Пришел к выводу, что достаточно лишь изменить код функции ShowRegressionChannel. В итоге получилось то, что нужно.



Scriptong пишет:

 цитата:
Правда, делал на скорую руку, возможны различные ошибки. О красоте кода вообще говорить не приходится.



Да нам не шашечки, а ехать!

Спасибо, Игорь! Буду смотреть.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 984
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 08.12.14 22:57. Заголовок: Посмотрел на истории..


Посмотрел на истории EurUSD m15, все работает - пока ошибок не увидел.

Еще раз спасибо, надеюсь доработка будет полезна не только мне.

С уважением! Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 985
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 09.12.14 16:52. Заголовок: Игорь, день добрый! ..


Игорь, день добрый!

В течении дня ставил индикатор на разные графики. Сделал отдельными значения внутреннего и внешнего отклонения от границы канала, пока правда не знаю
имеет ли смысл их разделять - хочу посмотреть статистику по пробоям и недобоям.

Остается вопрос удобства. Для ручной торговли все отлично видно и разницы особой нет - графический объект или буфер.
Если обращаться к индикатору из советника, то с буфером работать удобнее - вызвал индикатор из Вашего темплейта и дело в шляпе.
Для графического объекта получение значения любой из 6 линий канала дело не настолько очевидное.

Вопрос такой - может имеет смысл сделать границы канала буферами? Или есть возможность сделать работу с ними столь же удобной и просто я ее не знаю?

С уважением! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 1040
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 09.12.14 18:53. Заголовок: Genry пишет: Для гр..


Genry пишет:

 цитата:
Для графического объекта получение значения любой из 6 линий канала дело не настолько очевидное.


В принципе, можно и из советника обращаться к графическим объектам. Но в таком случае пропадает режим быстрого тестирования и оптимизации - в них графические объекты не отображаются.

Genry пишет:

 цитата:
Вопрос такой - может имеет смысл сделать границы канала буферами?


На мой взгляд, это достаточно муторная работа. Для каждой линии нужно завести свой буфер (7 буферов для восходящего, 7 - для нисходящего каналов), а потом следить за обновлением данных. Да и использовать данные такого буфера нужно будет перебором баров в цикле. Тоже не очень удобно.

Делается проще. От индикатора берутся только данные о направлении тренда (откуда произошел перегиб Pivot - g_pivotDirChange). Затем дублируются функции поиска максимума/минимума, а далее берется функция ShowRegressionChannel вообще без изменений. Из этих функций при желании можно выбросить всю графическую шелуху (чтобы советник не отображал то же, что и индикатор).
Хотя в идеале лучше просто перенести весь расчет данных индикатора в советник. Получится автономная программа. Причем код расчета данных для советника будет намного короче того кода, который работает в индикаторе.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Сообщение: 986
Зарегистрирован: 04.03.13
Откуда: Москва
Репутация: 2
ссылка на сообщение  Отправлено: 09.12.14 19:13. Заголовок: Scriptong пишет: Де..


Scriptong пишет:

 цитата:
Делается проще. От индикатора берутся только данные о направлении тренда (откуда произошел перегиб Pivot - g_pivotDirChange). Затем дублируются функции поиска максимума/минимума, а далее берется функция ShowRegressionChannel вообще без изменений. Из этих функций при желании можно выбросить всю графическую шелуху (чтобы советник не отображал то же, что и индикатор). Хотя в идеале лучше просто перенести весь расчет данных индикатора в советник. Получится автономная программа. Причем код расчета данных для советника будет намного короче того кода, который работает в индикаторе.



O! Это хороший вариант. Главное что все данные будут доступны в советнике

С уважением! Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 26 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 21
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет