[M1] QUANTUM LONDON.INC (индикаторная сетка-усреднитель GBPUSD M1)📌

От DENYA, 20 августа, 2015 в Торговые системы

#4958

Странно, или ошибка с AccFreeMargin или что-то делает TDS2, может с маржей что-то в нем настроено не так как надо.
Прогоняю этот сет, Просадка 9800, при установке в настройках SL = -10000 - тест проходит нормально,
а при AccFreeMargin - даже если ставлю = 15000, то не проходит и в лог пишет инфу что ниже:


2017.03.23 22:58:17.590 2016.04.22 20:54:18 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: zero divide in 'Quantum London Trading EA v1.6.1 m13-9-30[staxis].mq4' (1507,53)
2017.03.23 22:58:17.590 2016.04.22 20:54:18 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: ExpertRemove function called
2017.03.23 22:58:17.590 2016.04.22 20:54:18 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: Alert: Ñòîï, ñòàðòîâàÿ ìàðæà= 33835.99 îñòàòîê 18815.94 ïðåâûøåí íà÷àëüíûé äåïîçèò ÅÀ íà 20.05 ïðè AccFreeMargin=15000.0
2017.03.23 22:58:17.589 2016.04.22 20:52:02 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: MAX_EQUITY_DD = 14418.62
2017.03.23 22:58:17.589 2016.04.22 20:52:02 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: open #523 sell 5.97 USDJPY at 111.735 ok
2017.03.23 22:58:17.589 2016.04.22 20:52:02 TDS: Slippage opening market order: -5 points (sent at market price 111.740, executed at 111.735)
2017.03.23 22:58:17.585 2016.04.22 20:42:00 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: MAX_EQUITY_DD = 12360.5
2017.03.23 22:58:17.585 2016.04.22 20:42:00 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: open #522 sell 4.99 USDJPY at 111.701 ok
2017.03.23 22:58:17.585 2016.04.22 20:42:00 TDS: Slippage opening market order: -8 points (sent at market price 111.709, executed at 111.701)
2017.03.23 22:58:17.547 2016.04.22 19:18:00 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: MAX_EQUITY_DD = 11002.77
2017.03.23 22:58:17.547 2016.04.22 19:18:00 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: open #521 sell 4.18 USDJPY at 111.695 ok
2017.03.23 22:58:17.547 2016.04.22 19:18:00 TDS: Slippage opening market order: 1 points (sent at market price 111.694, executed at 111.695)
2017.03.23 22:58:17.501 2016.04.22 18:05:00 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: open #520 sell 3.49 USDJPY at 111.548 ok
2017.03.23 22:58:17.495 2016.04.22 17:57:02 Quantum London Trading EA v1.6.1 m13-9-30[staxis] USDJPY,M5: open #519 sell 2.92 USDJPY at 111.478 ok

USDJPY-m5_v13.9-20-2y-10r-pros-27k-prof.set21 скач.

#4959


Подскажите еще по поводу параметра:
AccFreeMargin = 0.0; // тест: новая сетка с фиксированной маржой

Тестирую сет,
при AccFreeMargin = 0.0 показывает просадку 10000, все нормально.
Но если ставлю AccFreeMargin = 10000, то советник выходит, не хватает денег.
Более того, даже если ставлю = 19000, то не хватеет денег,
только ставлю 20000, тогда проходит тест, а в отчете как и было, "максимальная просадка 10000".

Почему так происходит ? На реале бы слило при балансе = 10000 ?


Я об этом уже писал: /torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=315384
Несоответствие реальной просадки и зафиксированной тестером МТ4 объясняется просто (из опытных наблюдений).
В МТ4 просадка фиксируется в момент закрытия какого-либо ордера. До этого момента она нигде не учитывается.
В нашем советнике эта проблема частично решена (спасибо Genry_05 - это его код, спасибо мне - это я его запихнул в несколько мест советника). >:d
Добавлено: 24-03-2017 05:57:19



Возьму паузу общения на форуме - некоторые проблемы требуют решения.
Надеюсь увидимся снова.
Успехов, Коллеги!



И тебе удачи! Ждем возвращения :-H
#4960

В МТ4 просадка фиксируется в момент закрытия какого-либо ордера. До этого момента она нигде не учитывается.


Ого, тогда все тесты и оптимизации теряют смысл, результат OnTester выдает не правильные результаты..
По этому сету на 100% разница..
Может нужно OnTester доделать,
запоминать максимальную просадку высчитанную советником, и ее делить на прибыль, чтобы получить реальный OnTester ?

Я например делаю депозит равный 120% максимальной просадке по истории за 2 года.
А получается что она была 200% .... Мне надо ставить 240% от результатов теста. Это все меняет..
#4961



Спойлер

Genry здравствуй может подскажешь куда копать :((почему у меня сеты проходят и наоборот выложенные в этой ветке сеты у меня не проходят. Использую котировки тикстори.


У меня сет отлично прошел на TDS2, с переменным спредом, (с января 2015),
результаты почти такие-же как у вас, чуть лучше на 2-5%.


Добавлено: 18-03-2017 16:31:57

Вот что у меня получилось с EurJpy,
оптимизировал последний год, потом прогонял за 2 года с 2015,
выбрал самый ровный график. Начальный лот 0.04, так что просадку (и прибыль) можно в 4 раза уменьшить

А устояло EurJpy на этой неделе ? У меня очередного лося на центовике поймало.
#4962


А устояло EurJpy на этой неделе ? У меня очередного лося на центовике поймало.


У меня EurJpy на этой неделе не торговала, вообще новые сеты редко торгуют.
Вот теперь думаю, а не завис ли советник, надо будет терминал перегрузить..
Хотя на трех счетах не торговал одинаковый сет, думаю что все нормально.

А вот с ее коллегой UsdJPY - такая ситуация:
на счетах, на которых депозит = 100% макс. просадки - все еще висит сетка открытая 21 марта. (ее просадка плавала 10-20%)

А на счете, на котором депозит был меньше макс. просадки в 5 раз - эта пара UsdJpy слила этот депозит.
Сработал своеобразный СЛ.
Но до этого там было заработано 75% депозита., плюс за 2 последних дня заработал еще 50%,
так что этот камикадзе пока в плюсе. Но счету только 2 недели, половина сетов поставлены только на этой неделе,
так что пока настоящих результатов этой камикадзе-стратегии нет.



#4963


Цитата

Thanks Dear Master Genry, will use my server to monitor it!

Last Dec, as I remembered I have tested a USDCAD with Stoch4cmtf for demo, but $500 ACCOUNT after 1 and half month blow up, then I closed the Demo!

Will try again use this set.

Thanks
John
No Pain No Ga


Заглянул на демо-счет JohnLuo: https://www.forexfactory.com/johnluo

Счет торгует на Квантуме скоро полгода, отличная работа! M/

Performance Return Profit ____Pips___ Entr/Exit Lots
All Time 307.4% $6,173 4,483 520/517 126.8

Успехов, Джон!

Так и мы типа не вслепую торгуем


Добавлено: 25-03-2017 04:49:47


В МТ4 просадка фиксируется в момент закрытия какого-либо ордера. До этого момента она нигде не учитывается.


Ого, тогда все тесты и оптимизации теряют смысл, результат OnTester выдает не правильные результаты..
По этому сету на 100% разница..
Может нужно OnTester доделать,
запоминать максимальную просадку высчитанную советником, и ее делить на прибыль, чтобы получить реальный OnTester ?

Я например делаю депозит равный 120% максимальной просадке по истории за 2 года.
А получается что она была 200% .... Мне надо ставить 240% от результатов теста. Это все меняет..

Вопрос немаловажный! Но мне сдается, что тревоги для твоего подхода он не должен вызвать. Я сходил по ссылке, приведенной Staxis. Сдается мне, что разность просадок объясняется последовательным суммированием просадки уже закрытой сетки, побывавшей в приличном минусе, и просадки новой текущей сетки. Ибо есть и другой способ проверки работоспособности сета на строго подобранном депо. Это Dollars SL. Сколько я не проверял, просадка тестера МТ4 для текущей сетки всегда согласуется с этим значением параметра. Он вроде как и нужен для подбора лота к депо.

Изменено 25 марта, 2017 пользователем Urytomsk

#4964



В МТ4 просадка фиксируется в момент закрытия какого-либо ордера. До этого момента она нигде не учитывается.


Ого, тогда все тесты и оптимизации теряют смысл, результат OnTester выдает не правильные результаты..
По этому сету на 100% разница..
Может нужно OnTester доделать,
запоминать максимальную просадку высчитанную советником, и ее делить на прибыль, чтобы получить реальный OnTester ?

Я например делаю депозит равный 120% максимальной просадке по истории за 2 года.
А получается что она была 200% .... Мне надо ставить 240% от результатов теста. Это все меняет..

Вопрос немаловажный! Но мне сдается, что тревоги для твоего подхода он не должен вызвать. Я сходил по ссылке, приведенной Staxis. Сдается мне, что разность просадок объясняется последовательным суммированием просадки уже закрытой сетки, побывавшей в приличном минусе, и просадки новой текущей сетки. Ибо есть и другой способ проверки работоспособности сета на строго подобранном депо. Это Dollars SL. Сколько я не проверял, просадка тестера МТ4 для текущей сетки всегда согласуется с этим значением параметра. Он вроде как и нужен для подбора лота к депо.

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

P.S. Будет корректно работать, если параметр тест: новая сетка с фиксированной маржой больше 0.
КОРРЕКЦИЯ СОВЕТНИКА

Quantum_London_Trading_EA_v1.6.1_m13-9-31staxis.mq468 скач.
MQL4.ZIP65 скач.

#4965
Цитата

Чтобы приблизить результаты расчета фактора восстановления к реальным, я слегка поменял код и поле РезультатOnTester будет расчитываться исходя из данных просадки, расчитанных в советнике.


Спасибо, staxis


есть и другой способ проверки работоспособности сета на строго подобранном депо. Это Dollars SL. Сколько я не проверял, просадка тестера МТ4 для текущей сетки всегда согласуется с этим значением параметра. Он вроде как и нужен для подбора лота к депо.


Тоже всегда пользовался этим способом. С тех пор как решил однажды проверить на графике сколько раз не проходит сет за заданный период, выставил Dollars SL, а сет
удачно прошёл >:d

Изменено 26 марта, 2017 пользователем lugov

#4966


Привет, Genry_05. Относительно подхода к толщи лет... Глядя на график, огромные пики в 2009 и 2007, 08-ом, я бы предложил не увеличивать депозит для старых лет, а использовать Глобальный SL, например Dollars SL. В итоге заработали бы меньше, но и относить прибыль пришлось бы к значительно меньшей просадке / Депо / SL. Я в большинстве своих сетов так и делаю. Поведение сета в 2011-2013хх, кстати, помогает и оптимизировать SL. В итоге картина обычно получается такая, что 2012-13 сет проходит в ноль, а в 2015-17 зарабатывает очень прилично.



Привет, Юрий!
Да, это рабочий подход. Просто к этой фазе оптимизации этот сет еще не подошел.
Наверно я стремлюсь реализовать неисполнимую задачу: создавать прибыльные сеты,
распределив усилия и вычислительные ресурсы. Что мы имеем:
1. в очередной раз обсуждали сокращение параметров ЕА. Возник вопрос по МАшкам.
Я сделал сет на котором показал как оценка расстояния между МА и ценой улучшает точность входа.
Потом скомбинировал этот результат с остальными индикаторами. В результате получил некоторый
базовый сет, который показывает прибыль на разных инструментах при начальном депо 500-1000$

2. затем я докрутил параметры этого общего базового сета под разные валюты - получились базовые
сеты для оптимизации на конкретные инструменты. Вот их я и выкладывал на форум. Предполагал,
что коллеги выберут чтоинть по своим интересам, оптимизируют и озвучат результат.
Ну ...выхлоп виден: активным остается маленькое ядро участников форума, что делают остальные - ХЗ. :d

3. Что я показывал тем сетом:
a) появилась универсальность в настройках - одни и те-же параметры дают профит на разных инструментах

б) параметры, найденные при оптимизации на небольшом интервале (2015-16гг), могут
справляться с рынком на интервале в 10 лет и больше.

в) Увеличение депозита позволило получить статистику за 17-18 лет для базового сета.
Теперь можно включить в интервал оптимизации один из критичный участков - 2007 или 2008 год , а потом проверить новый сет на остальных (2009г).

Из-за цейтнота времени я не выполняю полную оптимизацию: прогоняю 1000-2000 вариантов и останавливаю.
Потом смотрю наиболее перспективный сет и выкладываю его на форум с интервалами для дальнейшей оптимизации.

Возможно я тороплю события и обратный эффект появится чуть позже.
А сейчас мой респект и уважуха всем кто делится результатами!
Спойлер


Собрал ссылки на посты с закачками - только с последних страниц \M/ =d> \M/
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=349637
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=348845
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=349587
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=349501
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=349369
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=347611
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=347637
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=349442
/torgovye-sistemy/2/m1-quantum-londoninc-indikatornaya-setka-usrednitel-gbpusd-m1/10633/?do=findComment&comment=348993


Добавлено: 20-03-2017 09:57:36

Согласен. С моей точки зрения - это лучший инструмент по фильтрации сигналов QUANTUMа, из того, что мы тестировали. Причем они не противоречат, а дополняют друг друга. Его отличительная особенность, что каждый ордер сетки открывается "со смыслом", при этом не нарушаются условия сопровождения сетки.



Один из лучших, есть еще интереснее, но лучший результат получается в их сочетании.
Например уровни от индикатора о котором говорил DENYA - WyattsPivots_erikmod.mq4
Но параметров ЕА тогдаааааа ..................... ужос x_x.
Все будет работать быстрее если не использовать индикатор, а расчёт уровней вставить в советник.


Как вам это?
Тестировал, оптимизировал с качеством 90%.
Новогодние встряски начала 2015-го не проходят.

M5_EURUSD_SL_475.set41 скач.
M5_USDCHF_SL125.set33 скач.

#4967

Как вам это?
Тестировал, оптимизировал с качеством 90%.
Новогодние встряски начала 2015-го не проходят.



Сет по евро доллару вот, что у меня получилось.

M5_EURUSD_SL_475.gif
M5_EURUSD_SL_475.htm7 скач.

#4968

Не так давно дошли руки до новых версий, в которых используются Rsi и MA-4H
Сразу удалось с их помощью реанимировать некоторые сеты :)
Мне в своё время не удалось повторить многие сеты от Vassiliy, хотя пробовал на тех же котировках на таком же типе счёта.
Списал это на то, что разные советники. А теперь с новыми фильтрами нормально идут.
Вот например как выглядел у меня сет NZDUSD_8_00_Alp200_PFE_Optim_M5_ за последние 2 года с уменьшенным до 0.01 лотом и SL200:

Добавил MA-4H. Параметры на глазок выставил без оптимизации:

NZDUSD_M5_SL150.set58 скач.

#4969

И тебе удачи! Ждем возвращения


Ну, вроде меня починили :d
===================

Заглянул к Квантум-Мюрреевцам - знатно торгуют! =d>
#4970


И тебе удачи! Ждем возвращения


Ну, вроде меня починили :d
===================

Рад за тебя :-H


Заглянул к Квантум-Мюрреевцам - знатно торгуют! =d>


И за них тоже :)

Попробую в свой советник воткнуть - посмотрю что к чему. там видно будет...
А, вообще, индикатор нормальный нужен, чтобы увидеть линии Мюррея на прошлых периодах и иметь возможность визуально оценить.
Может уже есть где, я не искал >:d
#4971

Ну, вроде меня починили


Молодец!!! От души приветствую!!!

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


Если не к спеху подожди денек.
Я себе прикрутил, неделю гоняю, постараюсь завтра выложить соображения.
#4972

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



Staxis, привет, рад видеть! :d

Когда я сам тестировал Мюррея, то встроил все расчеты уровней Мюррея в ЕА - без индикатора и iCustom оптимизация работает быстрее.
Отображение истории предусмотрено и настраивается.
(ЗЫ: Возможно у Василия другой индикатор (модификация) расчета - по инету гуляет несколько вариантов.)

Код не сильно отлизан, но все есть : объявления, инит, старт, логика, функции - с расчетом МТФ-Мюррея и показом уровней и
действующих, и прошлых периодов. В настройках EA уровни бай и селл задаются отдельно, но в коде Инит они настраиваются парно -
долго оптимизировать отдельные варианты. >:d
Попробуй посмотреть. На ФФ народ пришел к выводу что хорошо работает Мюррей с Д1, на М5 Квантум 725.
{quote} Not sure another 0.5 lot short on AUDCHF was a wise move although floating DD is only 3% currently .... time will tell.
Скрины с ФФ.

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

Молодец!!! От души приветствую!!!


Василий, Спасибо! Твой прогноз сбылся :) - доктора определили тренд вверх :d
Хорошо что продолжил тестировать Мюррея. :-C
Я пока был у эскулапов голова была занята двусторонней торговлей: трендовой\контртрендовой.
Потом сравню подходы, кто правильнее определяет границы тренда - Мюррей или нет ;).

Под спойлером - Код для встраивания расчета МТФ-Мюррея(с историей) в советник :
Спойлер

=====================
Объявление:


extern string MurreyLevel = "Использование уровней Murrey";
input bool MurreyLevel_on = true;
extern int P_Murrey = 256; //Период индикатора Mюррея
extern int StepBack = 0; //индикатора
extern int TFind = 6; //с какого ТФ берем уровни, по-умолчанию H4
//0M1,1m5,2m15,3m30,4h1,5h4,6D1,7W1,8MN1
extern int CBar = 1; //если 1, то контроль бара текущего ТФ
extern int ShowOldUr = 1; //если 1, то показывать старые уровни
extern int MurreyReversLevel_buy = 4; //разворотный уровень Мюррея для бай
extern int MurreyReversLevel_sell = 8; //разворотный уровень Мюррея для селл

int OctLinesCnt = 13;
int mml_clr[13], Lwidth[13];
int nVL=0; //номер вертикальной линии
int TF[9] = {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};

double ip[9, 13],
mml[13],
mml_old[13];
string ln_txt[13], ln_txt1[13], tf_txt[9,13], buff_str = "", tstr="",
sf_txt[9]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
datetime TimeUr, //время изменения уровней
TimeUrOld; //предыдущее время изменения уровней

datetime g_Check_Murrey_tf = 0;


ИНИТ:

if (MurreyLevel_on) {
//определение надписей и цветов уровней
//
/*/расширенные надписи
ln_txt[0] = "[-2/8] НЕ ЛЕЗТЬ В РЫНОК ДО ПЕРВОГО ПРИЗНАКА ФЗР на М1 или М5";// "extremely overshoot [-2/8]";// [-2/8]
ln_txt[1] = "[-1/8] ПРОМАХ - МЕСТО ПРОФИТА ДЛЯ ТЕРПЕЛИВЫХ";// "overshoot [-1/8]";// [-1/8]
ln_txt[2] = "[0/8] ОКОНЧАТЕЛЬНАЯ ПОДДЕРЖКА-ЕСЛИ НЕ БЕРЕМ, ТО ОБРАТНО К 4/8 ";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
ln_txt[3] = "[1/8] ПРОФИТ ЖАДНЫХ, ЕСЛИ ЦЕНА НЕ ОСТАНОВИЛАСЬ, ТО ПОЙДЁТ К 0/8 ";// "Weak, Stall and Reverse - [1/8]";// [1/8]
ln_txt[4] = "[2/8] КРАСНЫЙ КОРИДОР - ЕСЛИ БЕРЁМ СХОДУ, ТО ЦЕЛЬ 0/8 ";// "Pivot, Reverse - major [2/8]";// [2/8]
ln_txt[5] = "[3/8] ОСНОВАНИЕ ТОРГОВОГО ДИАПАЗОНА ";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
ln_txt[6] = "[4/8] НАИЛУЧШЕЕ МЕСТО ДЛЯ НОВОЙ ПОКУПКИ ИЛИ ПРОДАЖИ ";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
ln_txt[7] = "[5/8] ВЕРХ ТОРГОВОГО ДИАПАЗОНА ";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
ln_txt[8] = "[6/8] КРАСНЫЙ КОРИДОР - ЕСЛИ БЕРЁМ С ХОДУ, ТО ЦЕЛЬ 4/8 ";// "Pivot, Reverse - major [6/8]";// [6/8]
ln_txt[9] = "[7/8] ПРОФИТ ЖАДНЫХ, ЕСЛИ ЦЕНА НЕ ОСТАНОВИЛАСЬ, ТО ПОЙДЁТ К 8/8 ";// "Weak, Stall and Reverse - [7/8]";// [7/8]
ln_txt[10] = "[8/8]ОКОНЧАТЕЛЬНОЕ СОПРОТИВЛЕНИЕ-ЕСЛИ НЕ БЕРЕМ,ТО ОБРАТНО К 4/8 ";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
ln_txt[11] = "[+1/8] ПРОМАХ - МЕСТО ПРОФИТА ДЛЯ ТЕРПЕЛИВЫХ";// "overshoot [+1/8]";// [+1/8]
ln_txt[12] = "[+2/8] НЕ ЛЕЗТЬ В РЫНОК ДО ПЕРВОГО ПРИЗНАКА ФЗР на М1 или М5";// "extremely overshoot [+2/8]";// [+2/8]
*/
//краткие надписи
ln_txt1[0] = "[-2/8]"; //extremely overshoot [-2/8]";// [-2/8]
ln_txt1[1] = "[-1/8]";// "overshoot [-1/8]";// Уровень 1/8 это слабый уровень, аналогичный и симметричный уровню 7/8. Если на ценовом уровне произошел
// резкий скачок, а тренд приостановился возле уровня 1/8, то есть большой шанс того, что цена развернется и пойдет вверх. В случае если
// остановки не было, то тренд продолжит свое движение к крайне линии 0/8
ln_txt1[2] = "SUP ";
ln_txt1[3] = "[1/8]";// "Weak, Stall and Reverse - [1/8]";// [1/8]
ln_txt1[4] = "[2/8]";// "Pivot, Reverse - major [2/8]";//?Уровень 2/8 является подобным уровню 6/8. Они предвещают возможный разворот тренда.
// Эти уровни являются очень сильными и уступают в этом только уровню 4/8.
ln_txt1[5] = "[3/8]";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//?Уровень 3/8 это нижний уровень торгового диапазона.
// Тренд, находящийся ниже этой отметки и стремящийся вверх, вряд ли преодолеет этот уровень. Если цена все-таки преодолела этот уровень и
// в течение 10-12 дней находится выше, то последующие 43,75% времени тренд будет находиться между уровнями 3/8 и 5/8
ln_txt1[6] = "PIVOT";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// ?Уровень 4/8 выступает в роли поддержки, если цена
// находится выше, и сопротивления, если цена располагается ниже него.
ln_txt1[7] = "[5/8]";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//Уровень 5/8 обозначает верхний диапазон торговли.
// Начало торгов рекомендуется совершать в момент нахождения цены в диапазоне уровней 3/8 и 5/8. Если цена определенное время колеблется
// немного выше уровня 5/8, то рекомендуется открывать в этот момент сделки на покупку, так как в скором времени цена должна
// направиться вверх. Если цена приостановилась ниже этой линии, то стоит создавать сделки на покупку, так как в скором времени
// тренд направится вниз.
ln_txt1[8] = "[6/8]";// "Pivot, Reverse - major [6/8]";// ?Уровень 6/8 является подобным уровню 2/8. Они предвещают возможный разворот тренда.
// Эти уровни являются очень сильными и уступают в этом только уровню 4/8.
ln_txt1[9] = "[7/8]";// "Weak, Stall and Reverse - [7/8]";// ?Уровень 7/8 это слабый уровень разворота. На него стоит обратить внимание в том случае, если
// на ценовом уровне произошел резкий скачок. В случае если тренд приостановился возле этой линии, то есть большая вероятность того, что он
// резко развернется и направится вниз. Если же остановки не было, то цена смело продолжит свое направление к крайней линии 8/8.
ln_txt1[10] = "RES";
ln_txt1[11] = "[+1/8]";// "overshoot [+1/8]";// [+1/8]
ln_txt1[12] = "[+2/8]";// "extremely overshoot [+2/8]";// [+2/8]
//
//mml_thk = 3;
// Начальная установка цветов уровней (октав) индикатора
mml_clr[0] = Magenta; // [-2]/8
mml_clr[1] = clrTeal; // [-1]/8
mml_clr[2] = clrMediumBlue; // [0]/8
mml_clr[3] = Orange; // [1]/8
mml_clr[4] = OrangeRed; // [2]/8
mml_clr[5] = DodgerBlue; // [3]/8
mml_clr[6] = clrMediumBlue; // [4]/8
mml_clr[7] = DodgerBlue; // [5]/8
mml_clr[8] = OrangeRed; // [6]/8
mml_clr[9] = Orange; // [7]/8
mml_clr[10] = clrMediumBlue; // [8]/8
mml_clr[11] = clrTeal; // [+1]/8
mml_clr[12] = Magenta; // [+2]/8
/* цвета советника вариант разработчика
mml_clr[0] = White; // [-2]/8
mml_clr[1] = White; // [-1]/8
mml_clr[2] = Aqua; // [0]/8
mml_clr[3] = Yellow; // [1]/8
mml_clr[4] = Red; // [2]/8
mml_clr[5] = Green; // [3]/8
mml_clr[6] = Blue; // [4]/8
mml_clr[7] = Green; // [5]/8
mml_clr[8] = Red; // [6]/8
mml_clr[9] = Yellow; // [7]/8
mml_clr[10] = Aqua; // [8]/8
mml_clr[11] = White; // [+1]/8
mml_clr[12] = White; // [+2]/8
*/
switch (MurreyReversLevel_sell) // для ускорения тестирования и расчета парного уровня Мюррея
{
case 8: MurreyReversLevel_buy = 4; break;
case 9: MurreyReversLevel_buy = 3; break;
case 10: MurreyReversLevel_buy = 2; break;
case 11: MurreyReversLevel_buy = 1; break;
}
//g_Check_Murrey_tf = iTime(NULL, TF[TFind], 0);
}


START:

// Murrey Calc
if (MurreyLevel_on) { // && (iTime(NULL, TF[TFind], 0) > g_Check_Murrey_tf)) {
Calc_MurreyLevel(TF[TFind]);
for (int iLC=0; iLC {
ip[TFind,iLC]=mml[iLC];
tf_txt[TFind,iLC]= StringConcatenate(StringTrimRight(sf_txt[TFind]),ln_txt1[iLC]);
}

//Print("Show_MurreyLines TimeCurrent = ",TimeToStr(TimeCurrent()));
Show_MurreyLines();
for(int ii=0; ii {
mml[ii] = NormalizeDouble(mml[ii],Digits); //нормализуем новые уровни
}

for(int i=0; i if(mml_old!=mml) //если новый уровень отличается
{
TimeUrOld = TimeUr; //запоминаем предыдущее время изменения уровней
TimeUr = Time[0]; //запоминаем новое время изменения уровней
nVL++; //учитываем изменение уровней
ShowVLines(nVL); //установка вертикальной линии
if(ShowOldUr == 1 && mml_old > 0)
Show_OldMurreyLines(); //рисуем старые уровни
for(ii=0; ii {
mml_old[ii]=mml[ii]; //запоминаем новые уровни
}
break; //достаточно изменения одного уровня
}
//g_Check_Murrey_tf = iTime(NULL, TF[TFind], 0);
} // конец расчета MurreyLevel

=============
... && (!MurreyLevel_on || (MurreyLevel_on && (Bid ... && (!MurreyLevel_on || (MurreyLevel_on && (Ask >= mml[MurreyReversLevel_sell])))


Function:

//+------------------------------------------------------------------+
void Calc_MurreyLevel(int pTF) {
int bn_v1 = iLowest(NULL, pTF, MODE_LOW, P_Murrey +StepBack,0);
int bn_v2 = iHighest(NULL, pTF, MODE_HIGH, P_Murrey +StepBack,0);
double v1 = iLow(NULL, pTF, bn_v1);
double v2 = iHigh(NULL, pTF, bn_v2);
double dmml = 0, dvtl = 0, sum = 0, mn = 0, mx = 0,
x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0,
y1 = 0, y2 = 0, y3 = 0, y4 = 0, y5 = 0, y6 = 0,
octave = 0, fractal= 0, range = 0, finalH = 0, finalL = 0;

//determine fractal.....
if( v225000 ) fractal = 100000;
else if( v22500 ) fractal = 10000;
else if( v2250 ) fractal = 1000;
else if( v225 ) fractal = 100;
else if( v212.5 ) fractal = 12.5;
else if( v26.25) fractal = 12.5;
else if( v23.125 ) fractal = 6.25;
else if( v21.5625 ) fractal = 3.125;
else if( v20.390625 ) fractal = 1.5625;
else if( v20) fractal = 0.1953125;
range = (v2 - v1);
if ( range != 0 ) sum = MathFloor(MathLog(fractal/range)/MathLog(2)); // MathFloor Возвращает ближайшее снизу целое числовое значение
else if ( range == 0 ) Comment ( " Zero divide range = ", range ); //Print
// sum =MathFloor(MathLog(fractal/range)/MathLog(2));
octave =fractal*(MathPow(0.5,sum));

if ( octave != 0 ) mn = MathFloor(v1/octave)*octave;
else if ( octave == 0 ) Comment ( " Zero divide octave = ", octave );
// mn =MathFloor(v1/octave)*octave;
if( (mn+octave)>v2 )
mx=mn+octave;
else
mx=mn+(2*octave);

// calculating xx
if( (v1>=(3*(mx-mn)/16+mn)) && (v2 if( (v1>=(mn-(mx-mn)/8)) && (v2 if( (v1>=(mn+7*(mx-mn)/16)) && (v2 if( (v1>=(mn+3*(mx-mn)/8)) && (v2 if( (v1>=(mn+(mx-mn)/8)) && (v2 &&(x2==0)&&(x4==0)&&(x5==0)) x3=mn+3*(mx-mn)/4;else x3=0;
if( (x1+x2+x3+x4+x5) ==0 ) x6=mx; else x6=0;
finalH = x1+x2+x3+x4+x5+x6;
// calculating yy
if( x1>0 ) y1=mn; else y1=0;
if( x2>0 ) y2=mn+(mx-mn)/4; else y2=0;
if( x3>0 ) y3=mn+(mx-mn)/4; else y3=0;
if( x4>0 ) y4=mn+(mx-mn)/2; else y4=0;
if( x5>0 ) y5=mn+(mx-mn)/2; else y5=0;
if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) ) y6=mn; else y6=0;
finalL = y1+y2+y3+y4+y5+y6;
for( int i=0; i = 0;}
dmml = (finalH-finalL)/8;
mml[0] =(finalL-dmml*2); //-2/8
for( i=1; i = mml[i-1] + dmml;}
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

void Show_MurreyLines()
{
int mml_shft = 25;
for( int i=0; i buff_str = "mml"+i;
if(ObjectFind(buff_str) == -1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml);
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr);
}
ShowTipLines(Lwidth, mml);
buff_str = "mml_txt"+i;
if(ObjectFind(buff_str) == -1) {
ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
ObjectSetText(buff_str, ln_txt, 8, "Arial", mml_clr);
ObjectMove(buff_str, 0, Time[mml_shft], mml);
}
else {ObjectMove(buff_str, 0, Time[mml_shft], mml);}
// ObjectSetText(buff_str, ln_txt+DoubleToStr(Lwidth,0), 8, "Arial", mml_clr);
ObjectSetText(buff_str, ln_txt, 8, "Arial", mml_clr);
}
}// End Show_MurreyLines()
//-------------------------------------------------------------------------+

void ShowVLines(int nVL1) //рисование вертикальной линии
{
ObjectCreate("Vl"+nVL1,OBJ_VLINE,0,Time[0],High[0]);
ObjectSet("Vl"+nVL1,OBJPROP_COLOR,MediumOrchid);
ObjectSet("Vl"+nVL1,OBJPROP_WIDTH,1);
ObjectSet("Vl"+nVL1,OBJPROP_STYLE,STYLE_DOT);
ObjectSet("Vl"+nVL1,OBJPROP_COLOR, Red);
}

//+------------------------------------------------------------------+

void Show_OldMurreyLines()
{
string buff_str1 = "";
//Print("Show_OldMurreyLines TimeCurrent = ",TimeToStr(TimeCurrent())," TimeUrOld = ",TimeToStr(TimeUrOld)," TimeUr = ",TimeToStr(TimeUr));
for( int iii=0; iii {
buff_str1 = "mml"+nVL*100+iii; //присваиваем уровню имя "mml"(префикс)+nVL*100(номер изменения уровней)+i(номер уровня)
if(ObjectFind(buff_str1) == -1) //если такого нет рисуем (трендовой линией)
{
//Print("STL TC = ",TimeToStr(TimeCurrent())," buff_str1 = ",buff_str1," TUO = ",TimeToStr(TimeUrOld)," TU = ",TimeToStr(TimeUr)," mml_old[iii] = ",mml_old[iii]);
ObjectCreate(buff_str1, OBJ_TREND, 0, TimeUrOld, mml_old[iii],TimeUr, mml_old[iii]);

ObjectSetInteger(0,buff_str1, OBJPROP_STYLE, STYLE_SOLID);
ObjectSetInteger(0,buff_str1, OBJPROP_COLOR, mml_clr[iii]);
ObjectSetInteger(0,buff_str1,OBJPROP_RAY_LEFT,false);
ObjectSetInteger(0,buff_str1,OBJPROP_RAY_RIGHT,false);

}
// ShowTipLines(Lwidth, mml);
/*
buff_str = "mml_txt"+nVL*100+iii; //ставим надпись
if(ObjectFind(buff_str) == -1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, TimeUrOld, mml_shft);
ObjectSetText(buff_str, ln_txt[iii], 8, "Arial", mml_clr[iii]);
// ObjectMove(buff_str, 0, Time[mml_shft], mml);
}
*/
// else {ObjectMove(buff_str, 0, Time[mml_shft], mml);}
// ObjectSetText(buff_str, ln_txt+DoubleToStr(Lwidth,0), 8, "Arial", mml_clr);
// ObjectSetText(buff_str, ln_txt[iii], 8, "Arial", mml_clr[iii]);
}
}// End Show_MurreyLines()





Добавлено: 31-03-2017 12:12:50


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



Staxis, привет, рад видеть! :d

Когда тестировал, я встроил расчет в ЕА, так быстрее работает чем индюк вызывать.
Код не сильно отлизан, но все есть : объявления, инит, старт, логика, две функции - с расчетом МТФ-Мюррея и показом уровней и
действующих и прошлых периодов. В настройках уровни бай и селл задаются отдельно, но в коде Инит они настраиваются парно -
долго оптимизировать отдельные варианты. >:d
Попробуй посмотреть. На ФФ народ пришел к выводу что хорошо работает Мюррей с Д1, на М5 Квантум 725.
{quote} Not sure another 0.5 lot short on AUDCHF was a wise move although floating DD is only 3% currently .... time will tell.
Скрины с ФФ.

Молодец!!! От души приветствую!!!


Василий, Спасибо! Твой прогноз сбылся :)
Хорошо что продолжил тестировать Мюррея.
Я пока был у эскулапов голова была занята двусторонней торговлей: трендовой\контртрендовой.
Потом сравню подходы, кто правильнее определяет границы тренда .

Код МТФ-Мюррея с историей для использования в ЕА:
Спойлер

=====================
Объявление:


extern string MurreyLevel = "Использование уровней Murrey";
input bool MurreyLevel_on = true;
extern int P_Murrey = 256; //Период индикатора Mюррея
extern int StepBack = 0; //индикатора
extern int TFind = 6; //с какого ТФ берем уровни, по-умолчанию H4
//0M1,1m5,2m15,3m30,4h1,5h4,6D1,7W1,8MN1
extern int CBar = 1; //если 1, то контроль бара текущего ТФ
extern int ShowOldUr = 1; //если 1, то показывать старые уровни
extern int MurreyReversLevel_buy = 4; //разворотный уровень Мюррея для бай
extern int MurreyReversLevel_sell = 8; //разворотный уровень Мюррея для селл

int OctLinesCnt = 13;
int mml_clr[13], Lwidth[13];
int nVL=0; //номер вертикальной линии
int TF[9] = {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};

double ip[9, 13],
mml[13],
mml_old[13];
string ln_txt[13], ln_txt1[13], tf_txt[9,13], buff_str = "", tstr="",
sf_txt[9]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
datetime TimeUr, //время изменения уровней
TimeUrOld; //предыдущее время изменения уровней

datetime g_Check_Murrey_tf = 0;


ИНИТ:

if (MurreyLevel_on) {
//определение надписей и цветов уровней
//
/*/расширенные надписи
ln_txt[0] = "[-2/8] НЕ ЛЕЗТЬ В РЫНОК ДО ПЕРВОГО ПРИЗНАКА ФЗР на М1 или М5";// "extremely overshoot [-2/8]";// [-2/8]
ln_txt[1] = "[-1/8] ПРОМАХ - МЕСТО ПРОФИТА ДЛЯ ТЕРПЕЛИВЫХ";// "overshoot [-1/8]";// [-1/8]
ln_txt[2] = "[0/8] ОКОНЧАТЕЛЬНАЯ ПОДДЕРЖКА-ЕСЛИ НЕ БЕРЕМ, ТО ОБРАТНО К 4/8 ";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
ln_txt[3] = "[1/8] ПРОФИТ ЖАДНЫХ, ЕСЛИ ЦЕНА НЕ ОСТАНОВИЛАСЬ, ТО ПОЙДЁТ К 0/8 ";// "Weak, Stall and Reverse - [1/8]";// [1/8]
ln_txt[4] = "[2/8] КРАСНЫЙ КОРИДОР - ЕСЛИ БЕРЁМ СХОДУ, ТО ЦЕЛЬ 0/8 ";// "Pivot, Reverse - major [2/8]";// [2/8]
ln_txt[5] = "[3/8] ОСНОВАНИЕ ТОРГОВОГО ДИАПАЗОНА ";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
ln_txt[6] = "[4/8] НАИЛУЧШЕЕ МЕСТО ДЛЯ НОВОЙ ПОКУПКИ ИЛИ ПРОДАЖИ ";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
ln_txt[7] = "[5/8] ВЕРХ ТОРГОВОГО ДИАПАЗОНА ";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
ln_txt[8] = "[6/8] КРАСНЫЙ КОРИДОР - ЕСЛИ БЕРЁМ С ХОДУ, ТО ЦЕЛЬ 4/8 ";// "Pivot, Reverse - major [6/8]";// [6/8]
ln_txt[9] = "[7/8] ПРОФИТ ЖАДНЫХ, ЕСЛИ ЦЕНА НЕ ОСТАНОВИЛАСЬ, ТО ПОЙДЁТ К 8/8 ";// "Weak, Stall and Reverse - [7/8]";// [7/8]
ln_txt[10] = "[8/8]ОКОНЧАТЕЛЬНОЕ СОПРОТИВЛЕНИЕ-ЕСЛИ НЕ БЕРЕМ,ТО ОБРАТНО К 4/8 ";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
ln_txt[11] = "[+1/8] ПРОМАХ - МЕСТО ПРОФИТА ДЛЯ ТЕРПЕЛИВЫХ";// "overshoot [+1/8]";// [+1/8]
ln_txt[12] = "[+2/8] НЕ ЛЕЗТЬ В РЫНОК ДО ПЕРВОГО ПРИЗНАКА ФЗР на М1 или М5";// "extremely overshoot [+2/8]";// [+2/8]
*/
//краткие надписи
ln_txt1[0] = "[-2/8]"; //extremely overshoot [-2/8]";// [-2/8]
ln_txt1[1] = "[-1/8]";// "overshoot [-1/8]";// Уровень 1/8 это слабый уровень, аналогичный и симметричный уровню 7/8. Если на ценовом уровне произошел
// резкий скачок, а тренд приостановился возле уровня 1/8, то есть большой шанс того, что цена развернется и пойдет вверх. В случае если
// остановки не было, то тренд продолжит свое движение к крайне линии 0/8
ln_txt1[2] = "SUP ";
ln_txt1[3] = "[1/8]";// "Weak, Stall and Reverse - [1/8]";// [1/8]
ln_txt1[4] = "[2/8]";// "Pivot, Reverse - major [2/8]";//?Уровень 2/8 является подобным уровню 6/8. Они предвещают возможный разворот тренда.
// Эти уровни являются очень сильными и уступают в этом только уровню 4/8.
ln_txt1[5] = "[3/8]";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//?Уровень 3/8 это нижний уровень торгового диапазона.
// Тренд, находящийся ниже этой отметки и стремящийся вверх, вряд ли преодолеет этот уровень. Если цена все-таки преодолела этот уровень и
// в течение 10-12 дней находится выше, то последующие 43,75% времени тренд будет находиться между уровнями 3/8 и 5/8
ln_txt1[6] = "PIVOT";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// ?Уровень 4/8 выступает в роли поддержки, если цена
// находится выше, и сопротивления, если цена располагается ниже него.
ln_txt1[7] = "[5/8]";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//Уровень 5/8 обозначает верхний диапазон торговли.
// Начало торгов рекомендуется совершать в момент нахождения цены в диапазоне уровней 3/8 и 5/8. Если цена определенное время колеблется
// немного выше уровня 5/8, то рекомендуется открывать в этот момент сделки на покупку, так как в скором времени цена должна
// направиться вверх. Если цена приостановилась ниже этой линии, то стоит создавать сделки на покупку, так как в скором времени
// тренд направится вниз.
ln_txt1[8] = "[6/8]";// "Pivot, Reverse - major [6/8]";// ?Уровень 6/8 является подобным уровню 2/8. Они предвещают возможный разворот тренда.
// Эти уровни являются очень сильными и уступают в этом только уровню 4/8.
ln_txt1[9] = "[7/8]";// "Weak, Stall and Reverse - [7/8]";// ?Уровень 7/8 это слабый уровень разворота. На него стоит обратить внимание в том случае, если
// на ценовом уровне произошел резкий скачок. В случае если тренд приостановился возле этой линии, то есть большая вероятность того, что он
// резко развернется и направится вниз. Если же остановки не было, то цена смело продолжит свое направление к крайней линии 8/8.
ln_txt1[10] = "RES";
ln_txt1[11] = "[+1/8]";// "overshoot [+1/8]";// [+1/8]
ln_txt1[12] = "[+2/8]";// "extremely overshoot [+2/8]";// [+2/8]
//
//mml_thk = 3;
// Начальная установка цветов уровней (октав) индикатора
mml_clr[0] = Magenta; // [-2]/8
mml_clr[1] = clrTeal; // [-1]/8
mml_clr[2] = clrMediumBlue; // [0]/8
mml_clr[3] = Orange; // [1]/8
mml_clr[4] = OrangeRed; // [2]/8
mml_clr[5] = DodgerBlue; // [3]/8
mml_clr[6] = clrMediumBlue; // [4]/8
mml_clr[7] = DodgerBlue; // [5]/8
mml_clr[8] = OrangeRed; // [6]/8
mml_clr[9] = Orange; // [7]/8
mml_clr[10] = clrMediumBlue; // [8]/8
mml_clr[11] = clrTeal; // [+1]/8
mml_clr[12] = Magenta; // [+2]/8
/* цвета советника вариант разработчика
mml_clr[0] = White; // [-2]/8
mml_clr[1] = White; // [-1]/8
mml_clr[2] = Aqua; // [0]/8
mml_clr[3] = Yellow; // [1]/8
mml_clr[4] = Red; // [2]/8
mml_clr[5] = Green; // [3]/8
mml_clr[6] = Blue; // [4]/8
mml_clr[7] = Green; // [5]/8
mml_clr[8] = Red; // [6]/8
mml_clr[9] = Yellow; // [7]/8
mml_clr[10] = Aqua; // [8]/8
mml_clr[11] = White; // [+1]/8
mml_clr[12] = White; // [+2]/8
*/
switch (MurreyReversLevel_sell) // для ускорения тестирования и расчета парного уровня Мюррея
{
case 8: MurreyReversLevel_buy = 4; break;
case 9: MurreyReversLevel_buy = 3; break;
case 10: MurreyReversLevel_buy = 2; break;
case 11: MurreyReversLevel_buy = 1; break;
}
//g_Check_Murrey_tf = iTime(NULL, TF[TFind], 0);
}


START:

// Murrey Calc
if (MurreyLevel_on) { // && (iTime(NULL, TF[TFind], 0) > g_Check_Murrey_tf)) {
Calc_MurreyLevel(TF[TFind]);
for (int iLC=0; iLC {
ip[TFind,iLC]=mml[iLC];
tf_txt[TFind,iLC]= StringConcatenate(StringTrimRight(sf_txt[TFind]),ln_txt1[iLC]);
}

//Print("Show_MurreyLines TimeCurrent = ",TimeToStr(TimeCurrent()));
Show_MurreyLines();
for(int ii=0; ii {
mml[ii] = NormalizeDouble(mml[ii],Digits); //нормализуем новые уровни
}

for(int i=0; i if(mml_old!=mml) //если новый уровень отличается
{
TimeUrOld = TimeUr; //запоминаем предыдущее время изменения уровней
TimeUr = Time[0]; //запоминаем новое время изменения уровней
nVL++; //учитываем изменение уровней
ShowVLines(nVL); //установка вертикальной линии
if(ShowOldUr == 1 && mml_old > 0)
Show_OldMurreyLines(); //рисуем старые уровни
for(ii=0; ii {
mml_old[ii]=mml[ii]; //запоминаем новые уровни
}
break; //достаточно изменения одного уровня
}
//g_Check_Murrey_tf = iTime(NULL, TF[TFind], 0);
} // конец расчета MurreyLevel

=============
... && (!MurreyLevel_on || (MurreyLevel_on && (Bid ... && (!MurreyLevel_on || (MurreyLevel_on && (Ask >= mml[MurreyReversLevel_sell])))


Function:

//+------------------------------------------------------------------+
void Calc_MurreyLevel(int pTF) {
int bn_v1 = iLowest(NULL, pTF, MODE_LOW, P_Murrey +StepBack,0);
int bn_v2 = iHighest(NULL, pTF, MODE_HIGH, P_Murrey +StepBack,0);
double v1 = iLow(NULL, pTF, bn_v1);
double v2 = iHigh(NULL, pTF, bn_v2);
double dmml = 0, dvtl = 0, sum = 0, mn = 0, mx = 0,
x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0,
y1 = 0, y2 = 0, y3 = 0, y4 = 0, y5 = 0, y6 = 0,
octave = 0, fractal= 0, range = 0, finalH = 0, finalL = 0;

//determine fractal.....
if( v225000 ) fractal = 100000;
else if( v22500 ) fractal = 10000;
else if( v2250 ) fractal = 1000;
else if( v225 ) fractal = 100;
else if( v212.5 ) fractal = 12.5;
else if( v26.25) fractal = 12.5;
else if( v23.125 ) fractal = 6.25;
else if( v21.5625 ) fractal = 3.125;
else if( v20.390625 ) fractal = 1.5625;
else if( v20) fractal = 0.1953125;
range = (v2 - v1);
if ( range != 0 ) sum = MathFloor(MathLog(fractal/range)/MathLog(2)); // MathFloor Возвращает ближайшее снизу целое числовое значение
else if ( range == 0 ) Comment ( " Zero divide range = ", range ); //Print
// sum =MathFloor(MathLog(fractal/range)/MathLog(2));
octave =fractal*(MathPow(0.5,sum));

if ( octave != 0 ) mn = MathFloor(v1/octave)*octave;
else if ( octave == 0 ) Comment ( " Zero divide octave = ", octave );
// mn =MathFloor(v1/octave)*octave;
if( (mn+octave)>v2 )
mx=mn+octave;
else
mx=mn+(2*octave);

// calculating xx
if( (v1>=(3*(mx-mn)/16+mn)) && (v2 if( (v1>=(mn-(mx-mn)/8)) && (v2 if( (v1>=(mn+7*(mx-mn)/16)) && (v2 if( (v1>=(mn+3*(mx-mn)/8)) && (v2 if( (v1>=(mn+(mx-mn)/8)) && (v2 &&(x2==0)&&(x4==0)&&(x5==0)) x3=mn+3*(mx-mn)/4;else x3=0;
if( (x1+x2+x3+x4+x5) ==0 ) x6=mx; else x6=0;
finalH = x1+x2+x3+x4+x5+x6;
// calculating yy
if( x1>0 ) y1=mn; else y1=0;
if( x2>0 ) y2=mn+(mx-mn)/4; else y2=0;
if( x3>0 ) y3=mn+(mx-mn)/4; else y3=0;
if( x4>0 ) y4=mn+(mx-mn)/2; else y4=0;
if( x5>0 ) y5=mn+(mx-mn)/2; else y5=0;
if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) ) y6=mn; else y6=0;
finalL = y1+y2+y3+y4+y5+y6;
for( int i=0; i = 0;}
dmml = (finalH-finalL)/8;
mml[0] =(finalL-dmml*2); //-2/8
for( i=1; i = mml[i-1] + dmml;}
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

void Show_MurreyLines()
{
int mml_shft = 25;
for( int i=0; i buff_str = "mml"+i;
if(ObjectFind(buff_str) == -1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml);
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr);
}
ShowTipLines(Lwidth, mml);
buff_str = "mml_txt"+i;
if(ObjectFind(buff_str) == -1) {
ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
ObjectSetText(buff_str, ln_txt, 8, "Arial", mml_clr);
ObjectMove(buff_str, 0, Time[mml_shft], mml);
}
else {ObjectMove(buff_str, 0, Time[mml_shft], mml);}
// ObjectSetText(buff_str, ln_txt+DoubleToStr(Lwidth,0), 8, "Arial", mml_clr);
ObjectSetText(buff_str, ln_txt, 8, "Arial", mml_clr);
}
}// End Show_MurreyLines()
//+------------------------------------------------------------------+

void ShowTipLines(int pS, double pCoord) //пернос линии и установка толщины и стиля в зависимости от ???
{
int wi=1, st=STYLE_SOLID;
ObjectMove(buff_str, 0, Time[0], pCoord);
if (pS==0){wi=0; st=STYLE_DOT; }//M1
if (pS==1){wi=0; st=STYLE_DOT; }//M5
if (pS==2){wi=0; st=STYLE_DASHDOTDOT; }//M15
if (pS==3){wi=0; st=STYLE_DASHDOTDOT; }//M30
if (pS==4){wi=1; st=STYLE_DASHDOT; }//H1
if (pS==5){wi=1; st=STYLE_DASH; }//H4
if (pS==6){wi=1; st=STYLE_SOLID; }//D1
if (pS==7){wi=2; st=STYLE_SOLID; }//W1
if (pS==8){wi=3; st=STYLE_SOLID; }//MN1
ObjectSet(buff_str, OBJPROP_WIDTH, wi);
ObjectSet(buff_str, OBJPROP_STYLE, st);
}

//-------------------------------------------------------------------------+





Добавлено: 31-03-2017 13:15:54

Попробовал сейчас запустить ноябрьский сет моего тестового советника с Мюрреем, как раз 4 месяца прошло :d
Оптимизацию делал 30 ноября 2016 года для usdcad_m5. Интервал оптимизации 01 февраля по 11 сентября 2016.
Торгует не безупречно, но в плюс: с 500$ на 6730$.

График получился такой:

Image1.png
Screenshot1.png
Murrey_Math_and_Quantum_Method_31mar2017.rar63 скач.
USDCAD_M5_Genry_Murrey_test_EA.png
USDCAD_M5_Murrey_test_EA.png
USDCAD_M5_Murrey_test_EA1.png

Изменено 2 апреля, 2017 пользователем Genry_05

#4973

Как вам это?
Тестировал, оптимизировал с качеством 90%.
Новогодние встряски начала 2015-го не проходят.


Убрал СЛ (поставил его = -700 и до него не дошло), и все стало интересней.
Тест TDS2, eurusd, m5

ql-eurusd-m5-urytomsk.jpg

#4974

На ФФ обсуждался порядок закрытия ордеров в режиме FiFo.
https://www.forexfactory.com/showthread.php?p=9702585#post9702585

[quote=yermommy;9697393]Has anybody else tried to trade this on a US FIFO compliant broker?
It seems that when only one trade is opened, it will close perfectly, but when more than one trade is open,
it runs into FIFO errors and tries to close at a price of 0. I've dug through the code but cannot figure out what is responsible for it.
Any ideas guys?
Note: This will not appear on a backtest, only in live trading conditions. Here's the specific message I see in the log.
2017.03.22 18:31:21.919 '7*****0': order #247686686 sell 0.01 AUDUSD closing at 0.00000 failed [Off quotes]
// следующее сообщение
I figured out how to make it FIFO compliant. Replace the entire CloseNormal() method with this code.
Like I thought before, it essentially begins counting through the open orders by starting at the bottom rather than the top.



Измененный код CloseNormal, который закрывает ордера в порядке FIFO (yermommy):

void CloseNormal()
{
int count1 = openorders;
int count=1;
for(; count!=0;) // расчет кол-ва закрываемых ордеров
{
count=0;
for(int trade = 0; trade { //
if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))continue; //
if(OrderMagicNumber()==mn) count++; //
} //
if(count==0)
{
// barNext = false;
GridTS=0;
prevorderprice=0;
initialstartbuy=0;
initialstartsell=0;
lastorderbar=0;
countbuy=0;
countsell=0;
openorders=0;
grid1trades=0;
grid2trades=0;
grid3trades=0;
grid4trades=0;
thewaitbuy=0;
thewaitsell=0;
DeleteLines();
DeleteLinesTS();
FirstLot=0;
if(cyc_var==1)
{
if(numcycles>0) cycles+=1;
if(!fulltime)
{
if(cyc1>0 && curtime>=open1 && curtime if(cyc2>0 && curtime>=open2 && curtime if(cyc3>0 && curtime>=open3 && curtime }
}
return;
}
for(int c=0; c {
if(!OrderSelect(c,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderMagicNumber()==mn)
{
if(IsTrAll(MaxWaiting)>=0)
{
RefreshRates();
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip_cl,0))
{
Alert("OrderClose Error: ",GetLastError());
if(count1 == openorders)
{
Alert("GridClose Error: ",GetLastError());
return;
}
}
else count1--;
}
else
if(count1 == openorders)
return;
}
}
}
}

Изменено 31 марта, 2017 пользователем Genry_05

#4975


У меня в советнике такие дополнительные функции, которых до сих пор нет в стандартной версии:
a.) при просадке по счету 15-25% - не открывались новые сетки (первые ордера сеток), а только продолжали достраиваться старые
b.) защита по валюте. Если по EUR есть уже сетки, в которых EUR на Sell, и в этой сетке >= N ордеров,


Нам бы что-нибудь подобное прикрутить.
В последнее время с новыми фильтрами удаётся усреднить большее количество пар, чем раньше.
Но у меня при этом входы стали точнее, реже. Больше пар приходится размещать на одном счету.
Ну и "догляду" требуется больше. Вручную отключать-подключать постоянно..
#4976


Как вам это?
Тестировал, оптимизировал с качеством 90%.
Новогодние встряски начала 2015-го не проходят.


Убрал СЛ (поставил его = -700 и до него не дошло), и все стало интересней.
Тест TDS2, eurusd, m5

Спасибо, Dimakya, у меня картина в точности такая же и была, только DD=443. Под него SL и выставлял.
В целом пришел к заключению, что алгоритм Genry_05 пригоден для ряда базовых техничных пар: USD/CAD, NZD/USD, EUR/USD, USD/CHF. И не годится ни для каких кроссов.



Добавлено: 01-04-2017 14:06:54


Спойлер


И тебе удачи! Ждем возвращения


Ну, вроде меня починили :d
===================

Рад за тебя :-H


Заглянул к Квантум-Мюрреевцам - знатно торгуют! =d>


И за них тоже :)


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

... и ни минуты покоя!
А я только закончил исследования недавно включенных в Сов индикаторов, перетряс все рабочие сеты на счетах, и хотел заслуженно отдохнуть)))
Сел за интернет, разобраться, что мы там оптимизировали? Так подскажите, а какой из уровней Пивота (их оказывается целых 7!) встроен в Сов?

Изменено 1 апреля, 2017 пользователем Urytomsk

#4977

ЗЫ: Возможно у Василия другой индикатор (модификация) расчета - по инету гуляет несколько вариантов.


Взял с ФФ, может не тот. :d
Учитывая, что это мой первый опыт (на прикрутить индикатор (стало интересно)), все таки вроде работает и во всяком случае, представление как сов отрабатывает уровни Мюррея представление получил.
С моей точки зрения, особого преимущества не заметил, хотя есть и положительные моменты:
1. Более "интересное" открытие первого ордера и растягивание сетки.
2. Взятие большего профита с открытой сетки.
С другой стороны, та же проблема с безоткатом.
Видно, по "прогону" Genry_05, при "хорошей работе" первых девять месяцев 2016г., рынок поменялся и следующие пол года топтание на месте.
На скринах сравнил работу Уровней Мюррея и PFE за одинаковый период.
Если Staxis прикрутит "правильные уровни", изыскания продолжу, на своем не буду, сильно у меня получилось через "известное место".
Да чуть не забыл, параметры "гонял"при малых значениях 20-100 QUANTUM.

Сравнение_Мюррей+ATR_PFE+ATR.png
Стейт_сравнение_Мюррей+ATR_PFE+ATR.png

Изменено 1 апреля, 2017 пользователем Vassiliy

#4978
Спойлер



Как вам это?
Тестировал, оптимизировал с качеством 90%.
Новогодние встряски начала 2015-го не проходят.


Убрал СЛ (поставил его = -700 и до него не дошло), и все стало интересней.
Тест TDS2, eurusd, m5

Спасибо, Dimakya, у меня картина в точности такая же и была, только DD=443. Под него SL и выставлял.
В целом пришел к заключению, что алгоритм Genry_05 пригоден для ряда базовых техничных пар: USD/CAD, NZD/USD, EUR/USD, USD/CHF. И не годится ни для каких кроссов.



Добавлено: 01-04-2017 14:06:54


Спойлер


И тебе удачи! Ждем возвращения


Ну, вроде меня починили :d
===================

Рад за тебя :-H


Заглянул к Квантум-Мюрреевцам - знатно торгуют! =d>


И за них тоже :)


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

... и ни минуты покоя!
А я только закончил исследования недавно включенных в Сов индикаторов, перетряс все рабочие сеты на счетах, и хотел заслуженно отдохнуть)))
Сел за интернет, разобраться, что мы там оптимизировали? Так подскажите, а какой из уровней Пивота (их оказывается целых 7!) встроен в Сов?


А бота на новостях выключаешь? или трудяга пашет круглосуточно?

Изменено 1 апреля, 2017 пользователем Pavel888

#4979

смотря на каких. Только на ФРС и ЕЦБ отключаю большинство валют, в первую очередь таких как USD/CHF, NZD/USD. А EUR/USD вообще ни к каким новостям не чувствительна, хотя что греха таить, подсываю и ее стараюсь тоже отключать на ЕЦБ (ФРС проходит вне торгового времени).

#4980


...С другой стороны, та же проблема с безоткатом.
Видно, по "прогону" Genry_05, при "хорошей работе" первых девять месяцев 2016г., рынок поменялся и следующие пол года топтание на месте.
На скринах сравнил работу Уровней Мюррея и PFE за одинаковый период. Если Staxis прикрутит "правильные уровни", изыскания продолжу, ...



Василий, спасибо за проведенный анализ!
А то у меня времени не хватает детально проверить все варианты.
В октябре-ноябре я встроил в советник и просмотрел работу большинства подобных индикаторов.
Если их все включить, то вероятность слива падает существенно, как и количество сделок.
Половину декабря я все это осмысливал и в очередной раз решил искать новый (иной) подход фильтрации... и без опоры на Квантум, как основной индикатор, а только как дополнительный.


Да чуть не забыл, параметры "гонял"при малых значениях 20-100 QUANTUM.


Как "вычислили" Квантум-Мюррейщики с ФФ для М5 надо брать ТФ Д1 и Квантуму ставить глубину 725
Цитата:Quoting vgyuszko "My chart M/Q 1440/725 I wait buy action от уровня 2/8 "

Изменено 1 апреля, 2017 пользователем Genry_05

#4981


На скринах сравнил работу Уровней Мюррея и PFE за одинаковый период. Если Staxis прикрутит "правильные уровни", изыскания продолжу, на своем не буду, сильно у меня получилось через "известное место".Да чуть не забыл, параметры "гонял"при малых значениях 20-100 QUANTUM.


Василий, спасибо за проведенный анализ!
А то у меня времени не хватает детально проверить все варианты.
В октябре-ноябре я просмотрел работу большинства подобных индикаторов. Если их все включить, то вероятность
слива падает существенно, как и количество сделок. Половину декабря я все это осмысливал и в очередной раз
решил искать новый (иной) подход фильтрации... и без опоры на Квантум, как основной индикатор, а как дополнительный.

У нас и так Квантум давно в Сове как дополнительный, по моим представлением, он рулит лишь распределением объема, заливаемого в рынок. Сами же моменты входа определяются без него. Сам посмотри, чего стоят значения 10-20 для QDE/QDC в сетах того же Vassiliy.
Что касается уровней)))... Я никак в толк не возьму как их привлечь для фильтрации безоткатов. Ну подьехали мы к уровню, начали торговлю - все ок. Цена колеблется вокруг, масса входов, все быстро закрываются. Но что потом то?! После серии безуспешных попыток взять уровень, его таки берут. Бот в этот момент все также в рынке усиленными лотами (ибо мы перед уровнем), цена летит с ускорением и без отката. Вот и весь сказ про уровни.
Другое дело если научить бот считать кол-во серий входов на уровне... Но этого нет. И гарантией это тоже не факт, что станет.
Такие мои рассуждения приводят меня к тому, что лучше воспринимать ценовое пространство как зону перекупленности/перепроданности без привязки специальных методов к уровню сопротивления. От лосса они не спасут, а профита между уровнями не доберут.
#4982

Что касается уровней)))... Я никак в толк не возьму как их привлечь для фильтрации безоткатов...



Если раскинуть уровни с привязкой к Д1 велика вероятность что началом сетки будет приличный экстремум.
Ну и можно расслабиться до противоположного разворотного уровня.

Изменено 1 апреля, 2017 пользователем Genry_05

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025