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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.