Алексей Боровков – 10 роботов для автоматической торговли на Форекс (страница 18)
input int MaxPatternBars = 300; // Максимум баров в паттерне
input bool ShowPatternLines = true; // Показывать линии паттернов
input color PatternColor = clrBlue; // Цвет линий паттернов
//+–+
//| Перечисление типов паттернов |
//+–+
enum PATTERN_TYPE
{
PATTERN_NONE = 0,
PATTERN_GARTLEY = 1,
PATTERN_BUTTERFLY = 2,
PATTERN_CRAB = 3,
PATTERN_BAT = 4,
PATTERN_SHARK = 5,
PATTERN_CYPHER = 6
};
//+–+
//| Структура для хранения точек паттерна |
//+–+
struct PatternPoints
{
double X, A, B, C, D;
datetime timeX, timeA, timeB, timeC, timeD;
PATTERN_TYPE type;
int direction; // 1 – бычий, -1 – медвежий
};
//+–+
//| Глобальные переменные |
//+–+
PatternPoints lastPattern;
bool patternFound = false;
int lastPatternBar = 0;
int zigzagHandle;
double zigzagBuffer[];
datetime timeBuffer[];
double highBuffer[], lowBuffer[];
int lastCalculated = 0;
//+–+
//| Expert initialization function |
//+–+
int OnInit()
{
// Проверка входных параметров
if(LotSize <= 0 || LotSize > 100)
{
Print("Некорректный размер лота!");
return INIT_PARAMETERS_INCORRECT;
}
// Создание индикатора ZigZag для поиска экстремумов
zigzagHandle = iCustom(_Symbol, _Period, "Examples\\ZigZag.ex5", 12, 5, 3);
if(zigzagHandle == INVALID_HANDLE)
{
Print("Ошибка создания индикатора ZigZag!");
return INIT_FAILED;
}
// Настройка массивов
ArraySetAsSeries(zigzagBuffer, true);
ArraySetAsSeries(timeBuffer, true);
ArraySetAsSeries(highBuffer, true);
ArraySetAsSeries(lowBuffer, true);
return INIT_SUCCEEDED;
}
//+–+
//| Expert deinitialization function |
//+–+