ea security.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea security.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник отслеживает текущее состояние торгового счёта и отображает на экране информацию о прибыли/убытке и балансе счёта в виде меток.
Основная функция советника — автоматическое закрытие всех открытых ордеров при достижении заданных пороговых значений эквити. Режим закрытия по балансу управляется переключателем: при его включении используются два порога — один для ситуации с малым количеством ордеров и другой при превышении заданного числа ордеров. При отключении режима советник закрывает все ордера, если последний закрытый ордер сработал по тейк-профиту.
В советнике реализован тестовый режим, который при стратегическом тестировании автоматически открывает несколько пробных ордеров. Также предусмотрен вывод ошибок в журнал советников и проигрывание звуковых сигналов при возникновении проблем.
Настройки программы
| Настройка | Описание |
|---|---|
| st0 | Разделитель настроек — Текстовый параметр-заголовок, отображаемый как разделитель настроек на графике |
| UsesCloseBalance | Использовать закрытие по балансу — Переключатель режима закрытия ордеров по балансу. При включении ордера закрываются при достижении заданных порогов эквити. При отключении ордера закрываются при срабатывании тейк-профита последнего ордера |
| CloseBalance | Баланс закрытия (до X ордеров) — Пороговое значение эквити для закрытия всех ордеров, когда общее количество открытых ордеров меньше параметра X |
| X trades (X) | Количество ордеров (X) — Количество ордеров, разделяющее два порога закрытия по балансу |
| Close balance for X trades (CloseBalance2) | Баланс закрытия (от X ордеров) — Пороговое значение эквити для закрытия всех ордеров, когда общее количество открытых ордеров равно или превышает параметр X |
Поиск по коду файла
#property version "1.00"
#property strict
extern string st0 = "::: General settings :::";
extern bool UsesCloseBalance = true;
extern double CloseBalance =20;
extern int X = 2; // X trades
extern double CloseBalance2 = 50; // Close balance for X trades
#include <stdlib.mqh>
#include <WinUser32.mqh>
datetime LastTime;
int Slippage=200;
int err;
double StartLot;
string TradingInfo;
int Y_;
int FontSize = 12;
int Corner = 2;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
int PrintError(int Part)
{
int error = GetLastError();
if (error!=0)
{
Print("Part " + IntegerToString(Part) + "; Error " + IntegerToString(error) + ": " + ErrorDescription(error));
PlaySound("alert.wav");
}
return(error);
}
double EA_orders_equity(int magic)
{
double sum=0;
for (int i=0; i<OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS) && OrderType()<=1 && OrderSymbol()==Symbol())
{
if (magic==-1)
sum = sum + OrderProfit() + OrderSwap() + OrderCommission();
else
if (OrderMagicNumber()==magic)
{
sum = sum + OrderProfit() + OrderSwap() + OrderCommission();
}
}
return(sum);
}
void OutLabel(string Object, string Text, color Clr, int X_=10)
{
if (ObjectFind(Object)==-1) ObjectCreate(Object, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Object, Text, FontSize, "Arial", Clr);
ObjectSet(Object, OBJPROP_CORNER, Corner);
ObjectSet(Object, OBJPROP_XDISTANCE, X_);
ObjectSet(Object, OBJPROP_YDISTANCE, Y_);
Y_ = Y_ + FontSize+5;
}
int TotalOrders()
{
int n=0;
for (int i=0; i<OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) n++;
return(n);
}
void CloseAllOrders()
{
int Aa=0;
while (TotalOrders()>0)
{
for (int i=0; i<=OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol())
{
RefreshRates();
if (OrderType()==OP_BUY && OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage,Blue)==false) PrintError(234);
if (OrderType()==OP_SELL && OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage,Red)==false) PrintError(235);
if (OrderType()>1 && OrПоказано первые 50% кода (символов: 3838)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.