TRENd dETEcTOR (определитель тренда)

Костян555

Активный участник
В данной статье предлагается к применению так называемый «определитель тренда», написанный на MQL4 и предназначенный для работы в экспертах торговой платформы МТ4.Для демонстрации возможностей «Trend Detector’а» возьмем обычный советник на скользящих средних(Moving Averages).
А идея вот в чем: Вызываем в советнике встроенные в МТ4 индикаторы BullsPower (сила быков ) и BearsPower (сила медведей) и сравниваем их между собой. Но просто так, на каждом баре сравнивать их – дело, скорее всего, бесперспективное. Программно это делать не совсем удобно и некорректно. Поэтому, вешаем на них индикатор Moving Average (Скользящую среднюю) в режиме iMAOnArray (см. рис. ниже)
и сравниваем именно показания Moving Average (MA) на нулевых барах BullsPower и BearsPower! Просто складываем эти значения, а сумму заявляем, как Delta. Далее всё просто. Если Delta > 0 – предполагаем
наличие UP-тренда. Если Delta < 0 - предполагаем Down-тренд!
Программно, в самом простейшем виде, это будет выглядеть так:
Во внешние параметры любого эксперта вставляем:
//------------------------------------------------------------
extern string ______TD_______ = «Параметры Тренд-детектора»;
extern int PeriodPower =13;
extern int Period_Bulls =15;
extern int Period_Bears =15;
//------------------------------------------------------------
Где:
PeriodPower - период индикаторов BullsPower и BearsPower;
Period_Bulls - период индикатора MA на BullsPower;
Period_Bears - период индикатора MA на BearsPower.
 

Костян555

Активный участник
А вот и сам код тренд-детектора:
//==========================Определитель тренда==========================
double Bears_array[30]; int cx=0; while (cx<30) // задаем массив значений
{Bears_array[cx]= iBearsPower(NULL, 0, PeriodPower,PRICE_CLOSE,cx); cx++; }
ArraySetAsSeries(Bears_array,true); //вешаем МА на iBearsPower
double MA_Bears =iMAOnArray(Bears_array,0,Period_Bears,1,MODE_SMMA,0);

double Bulls_array[30]; int lx=0; while (lx<30) //задаем массив значений
{Bulls_array[lx]= iBullsPower(NULL, 0, PeriodPower,PRICE_CLOSE,lx); lx++; }
ArraySetAsSeries(Bulls_array,true); //вешаем МА на iBullsPower
double MA_Bulls =iMAOnArray(Bulls_array,0,Period_Bulls,1,MODE_SMMA,0);
double Delta = MA_Bears + MA_Bulls; //- вычисляем Дельту
//=========================================================================
На представленном далее графике хорошо видно, что при преобладании Down-тренда Delta у нас будет меньше нуля:
Безымянный.jpg
 

Костян555

Активный участник
Бывает так, что после установки тренд-детектора в заведомо убыточный советник, этот советник дает при тестировании прибыль!
Нужно просто добавить в условие для покупки:
if(Delta >= 0 && ... ... ) // покупаем
А в условие для продажи:
if (Delta <= 0 && ... ...) //продаем
При этом нужно учесть, что описываемая конструкция не столько увеличивает саму прибыль, сколько
уменьшает число сделок против тренда (в основном убыточных), и потому увеличивает параметр
«прибыльность» (профит-фактор) эксперта зачастую не менее, чем до двух! А это означает, что вне периода оптимизации советника мы с гораздо большей вероятностью получим прибыль.
 
Последнее редактирование:

Костян555

Активный участник
Можно также вынести во внешние параметры советника величину Delta и оптимизировать её отдельно для длинных и для коротких сделок в пределах, например, от «-0.05» до «+0.05».
Вот типичный пример работы советника с тренд-детектором. На графике обозначился UP-тренд и советник в основном работает только в BUY (синие стрелки – входы BUY, красные стрелки – входы
SELL), а при развороте цены вниз (правая часть графика) советник встает в SELL .Безымянный п.jpg
 

Костян555

Активный участник
Возможно, кому-то захочеться написать индикатор по описанной идее.
Я САМ НЕУМЕЮ ПРОГРАММИРОВАТЬ,МОЖЕТ КТО ПОДСКАЖЕТ КАК ЭТО ВСЕ ВВЕСТИ В КОД СОВЕТНИКА
 

Михаил В.

Новичок форума
Возможно, кому-то захочеться написать индикатор по описанной идее.
Я САМ НЕУМЕЮ ПРОГРАММИРОВАТЬ,МОЖЕТ КТО ПОДСКАЖЕТ КАК ЭТО ВСЕ ВВЕСТИ В КОД СОВЕТНИКА
Большая благодарность! Именно что искал для оптимизации советника) Потестирую!
 
Верх