[open source] [Советник] на основе тех анализа Томаса Демарка.

От mihascor, 27 декабря, 2016 в Лаборатория ProfitFX

Автор#1

Советник на основе тех анализа Томаса Демарка.


TDS_EA_V1.0



Источник информации взят из http://forum.masterforex-v.org/topic/6698-том-демарк-tom-demark/ и http://dewinforex.com/ru/osnovy-foreks/tekhnicheskii-analiz-po-demarku-neskolko-sekretov-ot-znamenitogo-treidera.html, там все написано, кто не знает может почитать но думаю многие про этот метод знают, его Т. Демарк придумал еще в дремучие 70-е.
Заранее хочу предупредить я начинаю только осваивать язык mql4, До этого программированием не занимался. Поэтому если я где буду нести какую нибудь ахинею, прошу понять и простить и поправить.

Что сделано:
Раздобыл индикатор Ind-TD-DeMark-3-1, исходник, прилагается.
Советник: Взял шаблон из учебника. Кое что выкинул не нужное.
Добавил код чтобы сделки открывал после открытия нового бара.
if( Volume[0] > 1) return(0);        //Если true то дальше, если фальщ то заново
Alert("Новый бар"); // Алерт только для провнрки.

может есть более надежный ???
На график где стоит сова закидываю индикатор Ind-TD-DeMark-3-1
Добавил код
   double PrIndHL_1=ObjectGetValueByShift("HL_1", 1);           //- Цена несходящей TD-линии бара№1
double PrIndLL_1=ObjectGetValueByShift("LL_1", 1); //- Цена Восходящей TD-линии бара№1
double PrIndHL_2=ObjectGetValueByShift("HL_1", 2); //- Цена несходящей TD-линии бара№2
double PrIndLL_2=ObjectGetValueByShift("LL_1", 2); //- Цена Восходящей TD-линии бара№2

он запрашивает координаты точек TD-линий на последнем и предпоследнем баре.
Добавил код критерий открытия позиций
   if (Close[1]>PrIndHL_1&&Close[2]     {
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (Close[1]PrIndLL_2)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}

открывает когда цена пересекла линию и закрывает противоположную позицию.

Прогнал тесты, как ни странно работает. Правда только в режиме визуализации: ставлю самую медленною скорость,, запускаю, ставлю на паузу закидываю индюк на график. Результаты тестов по нескольким парам за 7 лет, в режиме "по ценам открытия", ТФ D1 - ВПЕЧАТЛИЛИ. ни одного слива. Скриншоты прилагаю. И все это при том что не использовал:
1). Фильтры входа. У Демарка есть способы выявления ложного пробоя.
2). Фильтры выхода. Можно использовать проекции цены. (на ура переводятся в математику)
3). Ни какой оптимизации, стопы профиты от балды.

План на ближайшее время:
Так как функцию iCustom использовать не получается то, по совету AndreyGold, повыдергиваю часть кода из индикатора и буду вставлять в сову. Если не ошибаюсь надо создавать объект?
Вставить расчет Стоп лоса, наверное по ближайшему минимуму/максимуму. Можно также использовать индикатор Silentspec /indikatory/7/informator-indikator-dlya-ustanovki-stopov-po-kriteriyu-var/7115/
Расчет профита по проекциям цен.

Кому будет интересно подключайтесь, за советы тоже большое спасибо.
И с наступающим Всех.

AUDNZD_10-16.JPG
EURUSD_2010-2016.JPG
GBPUSD_10-16.JPG
USDCHF_10-16.JPG
Ind-TD-DeMark-3-1.mq455 скач.
TDS_EA_V1.0.mq435 скач.

Изменено 11 июля, 2017 пользователем Pavel888

#2

похвально ваше стремление..
как говорят: лучший советник тот, который сам напишешь
желаю удачи в освоении программирования ;)

Автор#3
TDS_EA версия V2.0
Если долго мучится, что нибудь получится. Индикатор вмонтировал, правда пришлось весь код запихнуть, позже выкину лишнее. А пока все работает.
Оформил код индюка как пользовательские функции, добавил:
       int NewSize = iBars(NULL,0);                 //---- ЭМУЛЯЦИЯ ИНДИКАТОРНЫХ БУФЕРОВ
if(ArraySize(ExtMapBuffer1) {
ArraySetAsSeries(ExtMapBuffer1, false); //---- Установить прямое направление индексирования в массиве
ArraySetAsSeries(ExtMapBuffer2, false);
ArrayResize(ExtMapBuffer1, NewSize); //---- Изменить размер эмулируемых индикаторных буферов
ArrayResize(ExtMapBuffer2, NewSize);
ArraySetAsSeries(ExtMapBuffer1, true); //---- Установить обратное направление индексирования в массиве
ArraySetAsSeries(ExtMapBuffer2, true);
}


Следующий шаг привязать тейк-профит е проекциям цены.

Добавлено: 31-12-2016 06:01:31

TDS_EA версия V2.01
Подправил
   int Stepi;
Stepi=1+BackSteps;
double PrIndHL_1=ObjectGetValueByShift("HL_"+Stepi, 1); //- Цена несходящей TD-линии бара№1
double PrIndLL_1=ObjectGetValueByShift("LL_"+Stepi, 1); //- Цена Восходящей TD-линии бара№1
double PrIndHL_2=ObjectGetValueByShift("HL_"+Stepi, 2); //- Цена несходящей TD-линии бара№2
double PrIndLL_2=ObjectGetValueByShift("LL_"+Stepi, 2); //- Цена Восходящей TD-линии бара№2

Теперь вход осуществляется при пересечении любой из присутствующей на графике ТД линии.
Не пытайтесь рисовать в ручную и присваивать линиям имя типа: HH_1 или LL_1, советник их удалит.

Настройки опции: Indicator seting.


BackSteps- шаг назад, задает параметр рисования ТД линии,
Если "0"- то первая ТД точка это первый фрактал, а вторая ТД точка второй от конца истории.
Если "1"- то первая ТД точка это второй фрактал, а вторая ТД точка третий.(шаг назад)
И т.д. максимальное значение "9", прошу учесть что фракталы берутся только те которые отвечают системе ( если ТД линия нисходящяя, то и первый фрактал должен быть ниже второго ).
ShowingSteps- количество одновременно рисующихся ТД линий. Максимальное значение "10",
Если "0" линии отсутствуют.
FractalAsTD-параметр фракталов. Если false то фрактал основывается на трех свечах ( для хая 13)
Если true то на пяти . Третья выше двух предыдущих и двух следующих.
Commen - показывать коментарии в левом верхнем углу или нет;
TD - показывать TD точки или нет.
TD_Line - показывать TD линии или нет.
Horiz_Line - показывать текущее значение TD линий горизонтальной линией или нет.
TakeProf - показывать цели или нет.

TDS_EA_V2.0.mq417 скач.
TDS_EA_V2.01.mq423 скач.

Изменено 31 декабря, 2016 пользователем mihascor

Автор#4
TDS_EA версия V2.02
Убрано закрытие орднра при появлении встречного сигнала
//-------------------------------------------------------------- 5b --
if (Close[1]>PrIndHL_1&&Open[2] {
Opn_B=true; // Критерий откр. Buy
Cls_S=false; // Критерий закр. Sell
}
if (Close[1]PrIndLL_2)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=false; // Критерий закр. Buy
}
//--------------------------------------------------------------- 6 --

Теперь советник торгует, при равных сл и тп, примерно поровну, 50/50 прибыльных и убыточных сделок.
Спойлер

Мое мнение:
Так как рынок хаотичен, то в данном случае при срабатывании сигнала и открытии ордера, будет три варианта развития событий.
1. Цена дойдет до ТП, мы в плюсе
2. Цена дойдет до СЛ, мы в минусе
3. Цена уйдет во флет, и рано или поздно будет или СЛ или ТП (50/50)
При старом варианте получалось во флете обязательно уходим в минус, и стратегия в основном несла потери. В новой версии 33% положительных, 33% отрицательных, 33% - 50/50. Что и требовалось. Теперь дело за оптимизацией.


Теперь, как я вижу, надо прописать сопровождение каждой сделки, фильтры входа и выхода. Буду думать, советы приветствуются.
Хорошо ведет себя на Н4.

TDS_EA_V2.02.mq418 скач.

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

#5

Учитывая какие трендовые он рисует, то мне кажется нужно входить на меньшем таймфрейме, на откате после закрытия за линией свечи большого тф (h4+m15). Уже на таймфрейме входа прикручивать фильтры. Какой нибудь стохастик или что то в этом духе.
Что касается выходов то в этом индюке есть горизонтальные уровни, можно их попробовать. Сколько уровней столько и ордеров, тейки на уровнях. Трал прилепить по фракталам с м15

Странно, но в качестве уровней для тейков он не использует фракталы от которых рисует трендовые. Мне даже кажется что они лучше бы подошли.

Спойлер

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

Автор#6
TDS_EA версия V2.02
Перезалил, исправил чуток. Теперь может держать и бай и сел одновременно.
Сейчас попробую привязать тейк к целям индюка.

TDS_EA_V2.02.mq459 скач.

#7

Спасибо за ваши труды будем пробовать!!

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

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