реклама
Бургер менюБургер меню

Алексей Боровков – 10 роботов для автоматической торговли на Форекс (страница 22)

18

double fib_2000 = 2.0;

double fib_2240 = 2.24;

double fib_2618 = 2.618;

// Проверяем паттерн Гартли (Gartley)

// AB = 0.618 XA, BC = 0.382-0.886 AB, CD = 1.272-1.618 BC, XD = 0.786 XA

if(MathAbs(AB_XA – fib_0618) < FiboTolerance &&

(MathAbs(BC_AB – fib_0382) < FiboTolerance ||

MathAbs(BC_AB – fib_0886) < FiboTolerance) &&

(MathAbs(CD_BC – fib_1272) < FiboTolerance ||

MathAbs(CD_BC – fib_1618) < FiboTolerance) &&

MathAbs(XD_XA – fib_0786) < FiboTolerance)

{

return PATTERN_GARTLEY;

}

// Проверяем паттерн Бабочка (Butterfly)

// AB = 0.786 XA, BC = 0.382-0.886 AB, CD = 1.618-2.24 BC, XD = 1.272-1.618 XA

if(MathAbs(AB_XA – fib_0786) < FiboTolerance &&

(MathAbs(BC_AB – fib_0382) < FiboTolerance ||

MathAbs(BC_AB – fib_0886) < FiboTolerance) &&

(MathAbs(CD_BC – fib_1618) < FiboTolerance ||

MathAbs(CD_BC – fib_2240) < FiboTolerance) &&

(MathAbs(XD_XA – fib_1272) < FiboTolerance ||

MathAbs(XD_XA – fib_1618) < FiboTolerance))

{

return PATTERN_BUTTERFLY;

}

// Проверяем паттерн Краб (Crab)

// AB = 0.382-0.618 XA, BC = 0.382-0.886 AB, CD = 2.618-3.618 BC, XD = 1.618 XA

if((MathAbs(AB_XA – fib_0382) < FiboTolerance ||

MathAbs(AB_XA – fib_0618) < FiboTolerance) &&

(MathAbs(BC_AB – fib_0382) < FiboTolerance ||

MathAbs(BC_AB – fib_0886) < FiboTolerance) &&

(MathAbs(CD_BC – fib_2618) < FiboTolerance ||

MathAbs(CD_BC – 3.618) < FiboTolerance) &&

MathAbs(XD_XA – fib_1618) < FiboTolerance)

{

return PATTERN_CRAB;

}

// Проверяем паттерн Летучая мышь (Bat)

// AB = 0.382-0.5 XA, BC = 0.382-0.886 AB, CD = 1.618-2.618 BC, XD = 0.886 XA

if((MathAbs(AB_XA – fib_0382) < FiboTolerance ||

MathAbs(AB_XA – fib_0500) < FiboTolerance) &&

(MathAbs(BC_AB – fib_0382) < FiboTolerance ||

MathAbs(BC_AB – fib_0886) < FiboTolerance) &&

(MathAbs(CD_BC – fib_1618) < FiboTolerance ||

MathAbs(CD_BC – fib_2618) < FiboTolerance) &&

MathAbs(XD_XA – fib_0886) < FiboTolerance)

{

return PATTERN_BAT;

}

// Проверяем паттерн Акула (Shark)

// 0X = 1.13-1.618 XA, AB = 1.13-1.618 0X, BC = 0.886-1.13 AB

// Специфический паттерн, требует особой логики

return PATTERN_NONE;

}

//+–+

//| Отображение паттерна на графике |

//+–+

void DrawPattern(const PatternPoints &pattern)

{

// Удаляем старые линии

DeletePatternLines();

// Создаем уникальные имена для объектов

string prefix = "HP_"+IntegerToString(MagicNumber)+"_";

// Рисуем линии паттерна