Советники: Fractured Fractals - страница 2

 
/* Fractured Fractals (barabashkakvn's edition) Пояснения к советнику: Общее назначение: - Этот советник, созданный в 2005 году tageiger, использует классический индикатор iFractals для определения потенциальных точек разворота на рынке. - Он принимает торговые решения на основе значений фракталов, выставляя отложенные ордера (BuyStop/SellStop) или изменяя существующие позиции (например, корректируя уровни Stop Loss). - Советник включает в себя управление рисками, рассчитывая оптимальный размер сделки на основе маржи счета и заданного пользователем максимального процента риска. Ключевые компоненты: - Библиотеки: Код включает несколько торговых библиотек MQL5 (CTrade, CPositionInfo, CSymbolInfo, CAccountInfo, CDealInfo, COrderInfo) для обработки торговых операций, управления позициями и получения информации о символах/счетах. - Входные параметры: - MaximumRisk: Максимальный риск на сделку в процентах от капитала счета. - DecreaseFactor: Коэффициент, используемый для уменьшения размера сделки после последовательных потерь. - Expiration: Срок действия (в часах) отложенных ордеров. - m_magic: уникальный идентификатор (магическое число), позволяющий отличать сделки, заключенные этим советником, от других. Инициализация (OnInit): - Советник устанавливает торговый символ и обновляет рыночные данные; - настраивает торговый объект с указанным магическим числом и выбирает подходящий тип исполнения ордера (FOK, IOC или метод по умолчанию) в зависимости от того, что поддерживает брокер; - создается хэндл для индикатора iFractals с использованием текущего символа и таймфрейма. Если это не удается, в журнал записывается ошибка и инициализация прекращается. - Различные переменные, связанные с фракталами, инициализируются в EMPTY_VALUE, и сохраняется время последней прибыльной сделки. Функция OnTick: - Функция OnTick запускается на каждом новом баре. Сначала она проверяет, сформировался ли новый бар, сравнивая время текущего бара с сохраненной временной меткой. - Она извлекает верхнее и нижнее фрактальные значения с помощью индикатора iFractals. - Советник обновляет историю фрактальных значений, сдвигая старые значения и сохраняя новые. - Он отображает текущие фрактальные значения на графике с помощью комментариев для удобства мониторинга. - Советник подсчитывает текущие открытые позиции и отложенные ордера. Если условия соблюдены (например, растущая последовательность для ордеров на покупку или падающая последовательность для ордеров на продажу), он рассчитывает оптимальный размер сделки и выставляет отложенный ордер (BuyStop или SellStop). - Кроме того, он корректирует уровни Stop Loss для открытых позиций на основе новых фрактальных уровней и удаляет устаревшие отложенные ордера, если рыночные условия изменились. Управление рисками и размерами сделок: - Функция TradeSizeOptimized рассчитывает идеальный размер лота на основе свободной маржи счета, определенного максимального процента риска и требования к марже на лот. - При обнаружении серии убытков советник еще больше уменьшает размер сделки на основе DecreaseFactor. - Функция LotCheck гарантирует, что рассчитанный размер лота соответствует минимальным, максимальным и шаговым ограничениям брокера. Дополнительные полезные функции: - RefreshRates: Обновляет рыночные данные по символу для обеспечения актуальных ставок. - IsFillingTypeAllowed: Проверяет, разрешен ли брокером определенный тип исполнения ордера (например, FOK, IOC). - iTime: Извлекает время указанного бара, обеспечивая работу советника на новых барах. - LastProfitDeal: Сканирует историю торговли, чтобы найти время последней прибыльной сделки, которая используется в расчетах риск-менеджмента. - iFractalsGet: Извлекает значения фракталов из буферов индикатора, при невозможности скопировать данные выдает журнал ошибок. - CompareDoubles: Сравнивает два двойных значения с заданной точностью, чтобы определить, равны ли они по сути. - PrintComments: Обновляет комментарии на графике с текущими значениями фрактала и временем для целей мониторинга. Резюме: - Советник использует индикатор iFractals для обнаружения разворотов рынка; - Он автоматически выставляет отложенные ордера при выполнении определенных условий фрактала; - Открытые позиции динамически управляются путем настройки уровней Stop Loss; - Используется комплексное управление рисками для оптимизации размера сделки на основе текущих условий счета и последних результатов. Этот хорошо структурированный код демонстрирует использование объектно-ориентированного программирования на языке MQL5 для эффективного управления торговыми операциями и рисками */.