CloseAtProfit
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «closeatprofit.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
CloseAtProfit — это советник для MetaTrader 4, который автоматически закрывает открытые позиции при достижении заданного уровня прибыли или убытка. Он подсчитывает суммарный профит по всем ордерам (или только по текущему графику) и при превышении пороговых значений закрывает позиции и удаляет отложенные ордера.
Советник предоставляет настраиваемые пороги прибыли и убытка, а также возможность работы со всеми символами или только с текущим. Есть опция учитывать или игнорировать отложенные ордера при закрытии. Максимальный проскальзывание задаётся отдельным параметром.
Встроенное информационное меню отображает количество открытых сделок, общий объём лотов и текущую прибыль. Меню рисуется с помощью графических объектов и обновляется при каждом тике. Визуальные параметры меню (цвета, шрифт) настраиваются пользователем.
Настройки программы
| Настройка | Описание |
|---|---|
| useProfitToClose | Использовать закрытие по прибыли — Переключатель автоматического закрытия позиций при достижении заданного уровня прибыли. При неактивном состоянии проверка прибыли не выполняется. |
| profitToClose | Прибыль для закрытия — Числовой параметр, задающий порог прибыли (в долларах), при достижении которого советник автоматически закрывает позиции. |
| useLossToClose | Использовать закрытие по убытку — Переключатель автоматического закрытия позиций при достижении заданного уровня убытка. При неактивном состоянии проверка убытка не выполняется. |
| lossToClose | Убыток для закрытия — Числовой параметр, задающий порог убытка (в долларах), при достижении которого советник автоматически закрывает позиции. |
| AllSymbols | Все символы — Переключатель работы со всеми символами: при активном состоянии советник анализирует и закрывает ордера на всех инструментах, при неактивном — только на текущем графике. |
| PendingOrders | Отложенные ордера — Переключатель учёта отложенных ордеров: при активном состоянии отложенные ордера включаются в расчёт прибыли и могут быть удалены при закрытии, при неактивном — игнорируются. |
| MaxSlippage | Максимальное проскальзывание — Числовой параметр, задающий максимально допустимое проскальзывание цены при закрытии позиций в пунктах. |
| showMenu | Показать меню — Переключатель отображения информационного меню на графике. При активном состоянии меню рисуется при инициализации и обновляется в процессе работы. |
| menuColor | Цвет меню — Цвет заголовков и подписей информационного меню на графике. |
| variablesColor | Цвет переменных — Цвет значений переменных (количество сделок, лоты, прибыль) в информационном меню на графике. |
| font | Размер шрифта — Целочисленный параметр, задающий размер шрифта для отображения информационного меню на графике. |
Поиск по коду файла
extern bool useProfitToClose = true;
extern double profitToClose = 20;
extern bool useLossToClose = false;
extern double lossToClose = 100;
extern bool AllSymbols = true;
extern bool PendingOrders = true;
extern double MaxSlippage = 3;
extern bool showMenu = true;
extern color menuColor = Blue;
extern color variablesColor = Red;
extern int font = 10;
double pips2dbl, pips2point, pipValue, maxSlippage,
profit;
bool clear;
int medzera = 8,
trades;
double menulots;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
if(showMenu)
{
ObjectDelete("name");
ObjectDelete("Openl");
ObjectDelete("Open");
ObjectDelete("Lotsl");
ObjectDelete("Lots");
ObjectDelete("Profitl");
ObjectDelete("Profit");
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
bool CloseDeleteAll()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
switch(OrderType())
{
case OP_BUY :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet))
return(false);
}break;
case OP_SELL :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet))
return(false);
}break;
}
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
if(!OrderDelete(OrderTicket()))
{
Print("Error deleting " + OrderType() + " order : ",GetLastError());
return (false);
}
}
}
return (true);
}
bool CloseDeleteAllCurrent()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
switch(OrderType())
{
case OP_BUY :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet))
return(false);
}break;
case OP_SELL :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet))
return(false);
}break;
}
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
if(!OrderDelete(OrderTicket()))
{
return (false);
}
}
}
}
return (true);
}
bool CloseDeleteAllNonPending()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >=0 ; cnt--)
{
Показано первые 50% кода (символов: 7332)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.