Прежде всего должен упомянуть о нескольких способах задания индикаторами торговых сигналов:
1. В виде индикаторных буферов. Доступ к сигналам индикатора из советника может быть выполнен путем вызова функции iCustom(...), в параметрах которой необходимо указывать номер интересующего буфера индикатора.
Ярким представителем семейства таких индикаторов есть индикатор StopReversal:
Номера индикаторных буферов можно посмотреть хотя бы в окне свойств на вкладке "Цвета".
2. В виде объектов. Их можно выделить мышкой, перетащить в другое место и посмотреть свойства:
(Битое изображение)
Для доступа к сигналам необходимо проверять объекты и находить с требуемыми свойствами. Нас будет интересовать имя объекта на вкладке "Общие" и код значка на вкладке "Параметры".
Для начала для второго варианта сигналов индикаторов предлагаю вниманию сообщества универсальный советник, который будет следить за появлением стрелок на графике цены и открывать/закрывать позиции. Таким образом можно будет легко подключить к работе большую часть индикаторов второго типа.
Параметры советника:
- Код: выделить все
input string S1 = "#### Настройки торговли";
input double Lot = 0.1; // Рабочий лот
input bool AllowBuy = true; // Разрешение покупок (BUY)
input bool AllowSell = true; // Разрешение продаж (SELL)
input int StopLossPips = 500; // Stop Loss в пунктах
input int TakeProfitPips = 1500; // Take Profit в пунктах
input int SignalShift = 1; // Номер бара, на котором появляется сигнал (>0)
input bool CloseOnReverce = true; // Закрывать открытую позицию при обратном сигнале
input string PartNameArrowBUY = ""; // Имя (или часть имени) для стрелки на покупку
input int ArrowCodeBUY = 233; // Код стрелки на покупку
input string PartNameArrowSELL = ""; // Имя (или часть имени) для стрелки на продажу
input int ArrowCodeSELL = 234; // Код стрелки на продажу
input string S6 = "---------------------------------------------------------";
input string S7 = "#### Настройки защиты прибыли";
input int WithoutLossAfterPips = -1; // Перевод в безубыток через пунктов (-1 без перевода)
input int WithoutLossPips = 10; // Величина безубытка в пунктах
input int TrailingAfterPips = -1; // Начинать трал после пунктов (-1 без трала)
input int TrailingPips = 100; // Величина трала в пунктах
input string S8 = "---------------------------------------------------------";
input string S9 = "#### Настройки для трендового фильтра (Moving Average)";
input bool OnTrendMA = false; // Использовать фильтр тренда на MA
input int PeriodMA = 300; // Период:
input int ShiftMA = 0; // Сдвиг:
input ENUM_MA_METHOD MethodMA = MODE_EMA; // Метод МА:
input ENUM_APPLIED_PRICE AppliedMA = PRICE_CLOSE; // Применить к:
input int MagicNum = 10000; // Магический номер
Пример.
Есть некий индикатор (неважно название), который выдает сигналы в виде стрелок-объектов.:
(Битое изображение)
Анализируя эти объекты, выясняем, что их название всегда содержит символы "PZAR", а коды значков для покупок равны 233 и для продаж 234. В таком случае, в параметры советника необходимо внести:
- Код: выделить все
Имя (или часть имени) для стрелки на покупку = PZAR
Код стрелки на покупку = 233
Имя (или часть имени) для стрелки на продажу = PZAR
Код стрелки на продажу = 234
Остальные параметры, думаю, интуитивно понятны.