← К каталогу
Исходный код · ID 2642

Account Protector

account protector.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Account Protector — торговый советник для MetaTrader 5, предназначенный для защиты баланса счёта путём автоматического применения действий при срабатывании заданных условий. Программа отслеживает параметры счёта (эквити, маржа, спред, уровень маржинального вызова), динамику прибыли/убытков и количество позиций, а при достижении пороговых значений выполняет запрограммированные реакции.

Советник предоставляет графический панельный интерфейс с множеством настраиваемых условий и действий. Поддерживаются скользящий стоп-лосс, фиксация безубыточности (breakeven), трейлинг-стоп на основе эквити, а также ведение журнала действий и отправка уведомлений. Имеется аварийная кнопка для экстренного отключения.

Программа обрабатывает события тика и таймера, при этом обе обработчика выполняют одинаковый функционал: обновление данных, проверку условий и применение торговых действий. При удалении с графика или закрытии терминала настройки сохраняются или удаляются в зависимости от конфигурации. Автор предупреждает об отсутствии гарантий корректной работы и рекомендует использовать продукт на свой страх и риск.

Настройки программы

НастройкаОписание
____Main Основные настройки — Основная группа настроек советника.
Enable emergency button (EnableEmergencyButton) Аварийная кнопка — Включить аварийную кнопку для экстренного отключения советника.
DoNotDisableConditions: Don't disable conditions on trigger? (DoNotDisableConditions) Не отключать условия при срабатывании — Не отключать условия при срабатывании.
DoNotDisableActions: Don't disable actions on trigger? (DoNotDisableActions) Не отключать действия при срабатывании — Не отключать действия при срабатывании условия.
DoNotDisableEquityTS: Don't disable equity TS on trigger? (DoNotDisableEquityTS) Не отключать трейлинг-стоп эквити при срабатывании — Не отключать трейлинг-стоп эквити при срабатывании условия.
DoNotDisableTimer: Don't disable timer on trigger? (DoNotDisableTimer) Не отключать таймер при срабатывании — Не отключать таймер при срабатывании условия.
ConditionDelay: How long should condition be active to trigger? (ConditionDelay) Задержка срабатывания условия — Время в секундах, в течение которого условие должно оставаться активным перед срабатыванием.
CountFloatingInDailyPL: Count floating P/L in daily P/L? (CountFloatingInDailyPL) Учитывать плавающий П/У в ежедневном П/У — Учитывать плавающий прибыль/убыток в ежедневном прибыль/убытке.
____Conditions Условия срабатывания — Группа настроек условий срабатывания для различных параметров счёта и торговли.
Disable floating loss rises % condition. (DisableFloatLossRisePerc) Отключить условие: плавающий убыток % выше — Отключить условие: плавающий убыток в процентах выше заданного значения.
Disable floating loss falls % condition. (DisableFloatLossFallPerc) Отключить условие: плавающий убыток % ниже — Отключить условие: плавающий убыток в процентах ниже заданного значения.
Disable floating loss rises currency units condition. (DisableFloatLossRiseCurr) Отключить условие: плавающий убыток в валюте выше — Отключить условие: плавающий убыток в валютных единицах выше заданного значения.
Disable floating loss falls currency units condition. (DisableFloatLossFallCurr) Отключить условие: плавающий убыток в валюте ниже — Отключить условие: плавающий убыток в валютных единицах ниже заданного значения.
Disable floating loss rises points condition. (DisableFloatLossRisePoints) Отключить условие: плавающий убыток в пунктах выше — Отключить условие: плавающий убыток в пунктах выше заданного значения.
Disable floating loss falls points condition. (DisableFloatLossFallPoints) Отключить условие: плавающий убыток в пунктах ниже — Отключить условие: плавающий убыток в пунктах ниже заданного значения.
Disable floating profit rises % condition. (DisableFloatProfitRisePerc) Отключить условие: плавающая прибыль % выше — Отключить условие: плавающая прибыль в процентах выше заданного значения.
Disable floating profit falls % condition. (DisableFloatProfitFallPerc) Отключить условие: плавающая прибыль % ниже — Отключить условие: плавающая прибыль в процентах ниже заданного значения.
Disable floating profit rises currency units condition. (DisableFloatProfitRiseCurr) Отключить условие: плавающая прибыль в валюте выше — Отключить условие: плавающая прибыль в валютных единицах выше заданного значения.
Disable floating profit falls currency units condition. (DisableFloatProfitFallCurr) Отключить условие: плавающая прибыль в валюте ниже — Отключить условие: плавающая прибыль в валютных единицах ниже заданного значения.
Disable floating profit rises points condition. (DisableFloatProfitRisePoints) Отключить условие: плавающая прибыль в пунктах выше — Отключить условие: плавающая прибыль в пунктах выше заданного значения.
Disable floating profit falls points condition. (DisableFloatProfitFallPoints) Отключить условие: плавающая прибыль в пунктах ниже — Отключить условие: плавающая прибыль в пунктах ниже заданного значения.
Disable current price greater or equal condition. (DisableCurrentPriceGE) Отключить условие: цена больше или равна — Отключить условие: текущая цена больше или равна заданному значению.
Disable current price less or equal condition. (DisableCurrentPriceLE) Отключить условие: цена меньше или равна — Отключить условие: текущая цена меньше или равна заданному значению.
Disable (Equity - snapshot) greater or equal condition. (DisableEquityMinusSnapshot) Отключить условие: эквити минус снимок больше или равен — Отключить условие: разница эквити и снимка эквити больше или равна заданному значению.
Disable (snapshot - Equity) greater or equal condition. (DisableSnapshotMinusEquity) Отключить условие: снимок минус эквити больше или равен — Отключить условие: разница снимка и эквити больше или равна заданному значению.
Disable margin level greater or equal condition. (DisableMarginLevelGE) Отключить условие: уровень маржи больше или равен — Отключить условие: уровень маржи больше или равен заданному значению.
Disable margin level less or equal condition. (DisableMarginLevelLE) Отключить условие: уровень маржи меньше или равен — Отключить условие: уровень маржи меньше или равен заданному значению.
Disable spread greater or equal condition. (DisableSpreadGE) Отключить условие: спред больше или равен — Отключить условие: спред больше или равен заданному значению.
Disable spread less or equal condition. (DisableSpreadLE) Отключить условие: спред меньше или равен — Отключить условие: спред меньше или равен заданному значению.
Disable daily profit/loss greater or equal units condition. (DisableDailyProfitLossUnitsGE) Отключить условие: ежедневный П/У в единицах больше или равен — Отключить условие: ежедневный прибыль/убыток в единицах валюты больше или равен заданному значению.
Disable daily profit/loss level less or equal units condition. (DisableDailyProfitLossUnitsLE) Отключить условие: ежедневный П/У в единицах меньше или равен — Отключить условие: ежедневный прибыль/убыток в единицах валюты меньше или равен заданному значению.
Disable daily profit/loss greater or equal points condition. (DisableDailyProfitLossPointsGE) Отключить условие: ежедневный П/У в пунктах больше или равен — Отключить условие: ежедневный прибыль/убыток в пунктах больше или равен заданному значению.
Disable daily profit/loss level less or equal points condition. (DisableDailyProfitLossPointsLE) Отключить условие: ежедневный П/У в пунктах меньше или равен — Отключить условие: ежедневный прибыль/убыток в пунктах меньше или равен заданному значению.
Disable daily profit/loss greater or equal percentage condition. (DisableDailyProfitLossPercGE) Отключить условие: ежедневный П/У % больше или равен — Отключить условие: ежедневный прибыль/убыток в процентах больше или равен заданному значению.
Disable daily profit/loss level less or equal percentage condition. (DisableDailyProfitLossPercLE) Отключить условие: ежедневный П/У % меньше или равен — Отключить условие: ежедневный прибыль/убыток в процентах меньше или равен заданному значению.
Disable number of positions greater or equal condition. (DisableNumberOfPositionsGE) Отключить условие: количество позиций больше или равно — Отключить условие: количество позиций больше или равно заданному значению.
Disable number of pending orders greater or equal condition. (DisableNumberOfOrdersGE) Отключить условие: количество отложенных ордеров больше или равно — Отключить условие: количество отложенных ордеров больше или равно заданному значению.
Disable number of positions less or equal condition. (DisableNumberOfPositionsLE) Отключить условие: количество позиций меньше или равно — Отключить условие: количество позиций меньше или равно заданному значению.
Disable number of pending orders less or equal condition. (DisableNumberOfOrdersLE) Отключить условие: количество отложенных ордеров меньше или равно — Отключить условие: количество отложенных ордеров меньше или равно заданному значению.
____Trading Торговые настройки — Группа настроек торговли: задержки, объёмы, фиксация безубыточности и трейлинг-стоп.
DelayOrderClose: Delay in milliseconds. (DelayOrderClose) Задержка закрытия ордера — Задержка в миллисекундах перед закрытием ордера.
UseTotalVolume: enable if trading with many small trades and partial position closing. (UseTotalVolume) Использовать общий объём — Включить расчёт по общему объёму при торговле множеством мелких сделок и частичном закрытии позиций.
CloseFirst: Close which trades first? (CloseFirst) Какие сделки закрывать первыми — Определяет, какие сделки закрывать первыми при выполнении условий.
BreakEvenProfitInCurrencyUnits: currency instead of points. (BreakEvenProfitInCurrencyUnits) Безубыточность в валюте — Использовать валюту вместо пунктов в качестве единиц измерения для фиксации безубыточности.
EquityTrailingStopInPercentage: % instead of $. (EquityTrailingStopInPercentage) Трейлинг-стоп эквити в процентах — Использовать проценты вместо долларов для трейлинг-стопа на основе эквити.
____Miscellaneous Разное — Группа дополнительных настроек: уведомления, журнал, фильтрация инструментов.
AlertOnEquityTS: Alert when equity trailing stop triggers? (AlertOnEquityTS) Уведомление при трейлинг-стопе эквити — Выводить уведомление при срабатывании трейлинг-стопа на эквити.
AdditionalFunds: Added to balance, equity, and free margin. (AdditionalFunds) Дополнительные средства — Дополнительные средства, добавляемые к балансу, эквити и свободной марже при расчёте условий.
Instruments: Default list of trading instruments for order filtering. (Instruments) Список инструментов для фильтрации ордеров — Список торговых инструментов по умолчанию для фильтрации ордеров.
GlobalSnapshots: AP instances share equity & margin snapshots. (GlobalSnapshots) Общие снимки для всех экземпляров — Эквити и маржинальные снимки используются совместно всеми экземплярами советника.
Slippage (Slippage) Допустимое отклонение (скользание) — Допустимое отклонение цены при выполнении ордеров в пунктах.
Log file name (LogFileName) Имя файла журнала — Имя файла журнала для записи действий советника.
Settings file: Load custom panel settings from \Files\ folder. (SettingsFileName) Файл настроек панели — Имя файла настроек для загрузки параметров панели из папки Files.
Silent: No log output to the Experts tab. (Silent) Без вывода в журнал — Без вывода журнала на вкладку Эксперты.
Получить полный код

Поиск по коду файла

#property version   "1.11"
string    Version = "1.11";
#property strict

#property description "Protects account balance by applying given actions when set conditions trigger."
#property description "Trails stop-losses, applies breakeven, logs its actions, sends notifications.\r\n"
#property description "WARNING: There is no guarantee that the expert advisor will work as intended. Use at your own risk."

#include "Account Protector.mqh";

input string ____Main = "";
input bool EnableEmergencyButton = false; // Enable emergency button
input bool DoNotDisableConditions = false; // DoNotDisableConditions: Don't disable conditions on trigger?
input bool DoNotDisableActions = false; // DoNotDisableActions: Don't disable actions on trigger?
input bool DoNotDisableEquityTS = false; // DoNotDisableEquityTS: Don't disable equity TS on trigger?
input bool DoNotDisableTimer = false; // DoNotDisableTimer: Don't disable timer on trigger?
input int ConditionDelay = 0; // ConditionDelay: How long should condition be active to trigger?
input bool CountFloatingInDailyPL = true; // CountFloatingInDailyPL: Count floating P/L in daily P/L?
input string ____Conditions = "";
input bool DisableFloatLossRisePerc = false; // Disable floating loss rises % condition.
input bool DisableFloatLossFallPerc = true; // Disable floating loss falls % condition.
input bool DisableFloatLossRiseCurr = false; // Disable floating loss rises currency units condition.
input bool DisableFloatLossFallCurr = true; // Disable floating loss falls currency units condition.
input bool DisableFloatLossRisePoints = false; // Disable floating loss rises points condition.
input bool DisableFloatLossFallPoints = true; // Disable floating loss falls points condition.
input bool DisableFloatProfitRisePerc = false; // Disable floating profit rises % condition.
input bool DisableFloatProfitFallPerc = true; // Disable floating profit falls % condition.
input bool DisableFloatProfitRiseCurr = false; // Disable floating profit rises currency units condition.
input bool DisableFloatProfitFallCurr = true; // Disable floating profit falls currency units condition.
input bool DisableFloatProfitRisePoints = false; // Disable floating profit rises points condition.
input bool DisableFloatProfitFallPoints = true; // Disable floating profit falls points condition.
input bool DisableCurrentPriceGE = true; // Disable current price greater or equal condition.
input bool DisableCurrentPriceLE = true; // Disable current price less or equal condition.
input bool DisableEquityMinusSnapshot = true; // Disable (Equity - snapshot) greater or equal condition.
input bool DisableSnapshotMinusEquity = true; // Disable (snapshot - Equity) greater or equal condition.
input bool DisableMarginLevelGE = true; // Disable margin level greater or equal condition.
input bool DisableMarginLevelLE = true; // Disable margin level less or equal condition.
input bool DisableSpreadGE = true; // Disable spread greater or equal condition.
input bool DisableSpreadLE = true; // Disable spread less or equal condition.
input bool DisableDailyProfitLossUnitsGE = true; // Disable daily profit/loss greater or equal units condition.
input bool DisableDailyProfitLossUnitsLE = true; // Disable daily profit/loss level less or equal units condition.
input bool DisableDailyProfitLossPointsGE = true; // Disable daily profit/loss greater or equal points condition.
input bool DisableDailyProfitLossPointsLE = true; // Disable daily profit/loss level less or equal points condition.
input bool DisableDailyProfitLossPercGE = true; // Disable daily profit/loss greater or equal percentage condition.
input bool DisableDailyProfitLossPercLE = true; // Disable daily profit/loss level less or equal percentage condition.
input bool DisableNumberOfPositionsGE = true; // Disable number of positions greater or equal condition.
input bool DisableNumberOfOrdersGE = true; // Disable number of pending orders greater or equal condition.
input bool DisableNumberOfPositionsLE = true; // Disable number of positions less or equal condition.
input bool DisableNumberOfOrdersLE = true; // Disable number of pending orders less or equal condition.
input string ____Trading = "";
input int DelayOrderClose = 0; // DelayOrderClose: Delay in milliseconds.
input bool UseTotalVolume = false; // UseTotalVolume: enable if trading with many small trades and partial position closing.
input ENUM_CLOSE_TRADES CloseFirst = ENUM_CLOSE_TRADES_DEFAULT; // CloseFirst: Close which trades first?
input bool BreakEvenProfitInCurrencyUnits = false; // BreakEvenProfitInCurrencyUnits: currency instead of points.
input bool EquityTrailingStopInPercentage = false; // EquityTrailingStopInPercentage: % instead of $.
input string ____Miscellaneous = "";
input bool AlertOnEquityTS = false; // AlertOnEquityTS: Alert when equity trailing stop triggers?
input double AdditionalFunds = 0; // AdditionalFunds: Added to balance, equity, and free margin.
input string Instruments = ""; // Instruments: Default list of trading instruments for order filtering.
input bool GlobalSnapshots = false; // GlobalSnapshots: AP instances share equity & margin snapshots.
input int Slippage = 2; // Slippage
input string LogFileName = "ap_log.txt"; // Log file name
input string SettingsFileName = ""; // Settings file: Load custom panel settings from \Files\ folder.
input bool Silent = false; // Silent: No log output to the Experts tab.

CAccountProtector ExtDialog;

int DeinitializationReason = -1;

int OnInit()
{
      // код доступен только после оплаты
   }
    if (DeinitializationReason == REASON_CHARTCHANGE)
    {
        EventSetTimer(1);
        return INIT_SUCCEEDED;
    }

    MathSrand(GetTickCount() + 2202051901); // Used by CreateInstanceId() in Dialog.mqh (standard library). Keep the second number unique across other panel indicators/EAs.

    if (SettingsFileName != "") // Load a custom settings file if given via input parameters.
    {
        ExtDialog.SetFileName(SettingsFileName);
    }

    if (!ExtDialog.LoadSettingsFromDisk())
    {
        sets.OnOff = false;
        sets.CountCommSwaps = true;
        sets.UseTimer = false;
        sets.Timer = TimeToString(TimeCurrent() - 7200, TIME_MINUTES);
        sets.TimeLeft = "";
        sets.intTimeType = 0;
        sets.dtTimerLastTriggerTime = 0;
        sets.boolTrailingStart = false;
        sets.intTrailingStart = 0;
        sets.boolTrailingStep = false;
        sets.intTrailingStep = 0;
        sets.boolBreakEven = false;
        sets.intBreakEven = 0;
        sets.doubleBreakEven = 0;
        sets.boolBreakEvenExtra = false;
        sets.intBreakEvenExtra = 0;
        sets.boolEquityTrailingStop = false;
        sets.doubleEquityTrailingStop = 0;
        sets.doubleCurrentEquityStopLoss = 0;
        sets.SnapEquity = AccountInfoDouble(ACCOUNT_EQUITY) + AdditionalFunds;
        sets.SnapEquityTime = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES | TIME_SECONDS);
        sets.SnapMargin = AccountInfoDouble(ACCOUNT_MARGIN_FREE) + AdditionalFunds;
        sets.SnapMarginTime = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES | TIME_SECONDS);
        if (GlobalSnapshots)
        {
            SaveGlobalEquitySnapshots();
            SaveGlobalMarginSnapshots();
        }
        sets.OrderCommentary = "";
        sets.intOrderCommentaryCondition = 0;
        sets.intOrderDirection = 0;
        sets.MagicNumbers = "";
        sets.boolExcludeMagics = false;
        sets.intInstrumentFilter = 0;
        sets.Instruments = Instruments;
        sets.boolIgnoreLossTrades = false;
        sets.boolIgnoreProfitTrades = false;
        sets.boolLossPerBalance = false;
        sets.boolLossQuanUnits = false;
        sets.boolLossPoints = false;
        sets.boolProfPerBalance = false;
        sets.boolProfQuanUnits = false;
        sets.boolProfPoints = false;
        sets.boolLossPerBalanceReverse = false;
        sets.boolLossQuanUnitsReverse = false;
        sets.boolLossPointsReverse = false;
        sets.boolProfPerBalanceReverse = false;
        sets.boolProfQuanUnitsReverse = false;
        sets.boolProfPointsReverse = false;
        sets.boolEquityLessUnits = false;
        sets.boolEquityGrUnits = false;
        sets.boolEquityLessPerSnap = false;
        sets.boolEquityGrPerSnap = false;
        sets.boolEquityMinusSnapshot = false;
        sets.boolSnapshotMinusEquity = false;
        sets.boolMarginLessUnits = false;
        sets.boolMarginGrUnits = false;
        sets.boolMarginLessPerSnap = false;
        sets.boolMarginGrPerSnap = false;
        sets.boolPriceGE = false;
        sets.boolPriceLE = false;
        sets.boolMarginLevelGE = false;
        sets.boolMarginLevelLE = false;
        sets.boolSpreadGE = false;
        sets.boolSpreadLE = false;
        sets.boolDailyProfitLossUnitsGE = false;
 

Показано первые 50% кода (символов: 14062)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 406,20₽ ≈ $17.19