close all positions at profit target v1.1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «close all positions at profit target v1.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торгового советника для платформы MetaTrader 4 на языке MQL4. Основное назначение — автоматическое закрытие открытых позиций и отложенных ордеров при достижении заданной целевой прибыли.
Советник поддерживает два режима задания цели: в денежном выражении или в пипсах. В зависимости от настроек он может закрывать все ордера, только прибыльные сделки выше указанной суммы, либо только отложенные ордера. Также доступна функция звуковых оповещений.
Логика работы проверяется каждый тик: на каждом вызове рассчитывается суммарная прибыль по-buy и sell-позициям, и при достижении целевого значения выполняется закрытие. Внутренние переменные корректируют расчёт пипсов в зависимости от количества знаков после запятой у брокера.
Настройки программы
| Настройка | Описание |
|---|---|
| dnch | dnch — Текстовый параметр с пояснением: если установить false, советник закрывает ордера; если true — только отображает информацию на экране. |
| DoNotCloseOrders | Запрет закрытия ордеров — При значении true фактическое закрытие ордеров блокируется — советник только отображает информацию на экране. |
| pth | pth — Текстовый параметр с пояснением: false — целевое значение в деньгах, true — в пипсах. |
| fxdaytrader (ProfitTargetInPips) | Цель в пипсах — При значении true целевое значение ProfitTarget интерпретируется в пипсах, иначе — в денежном выражении. |
| ProfitTarget | Целевое значение — Целевое значение прибыли. Используется для сравнения с суммарной прибылью при достижении которой выполняется закрытие. Значение задаётся в деньгах или пипсах в зависимости от режима ProfitTargetInPips. |
| closes all orders now (CloseAllNow) | Закрыть все сейчас — При значении true немедленно закрываются все ордера (открытые позиции и отложенные ордера). |
| closes only profitable trades (CloseProfitableTradesOnly) | Закрыть только прибыльные сделки — При значении true закрываются только открытые ордера, суммарная прибыль (прибыль + своп + комиссия) которых превышает значение ProftableTradeAmount. |
| Only trades above this amount close out (ProftableTradeAmount) | Минимальная прибыль для закрытия — Минимальная сумма прибыли (прибыль + своп + комиссия), при превышении которой ордер будет закрыт в режиме CloseProfitableTradesOnly. |
| closes pending orders only (ClosePendingOnly) | Только отложенные ордера — При значении true удаляются только отложенные ордера типа BuyStop и SellStop. |
| UseAlerts | Использовать оповещения — При значении true воспроизводится звуковой сигнал alert.wav при закрытии или удалении ордера. |
Поиск по коду файла
#define NL "\n"
extern string dnch="set to false to let the EA close the orders, otherwise only reporting onscreen";
extern bool DoNotCloseOrders=true;
extern string pth="false:Target in Money, true:in Pips";
extern bool ProfitTargetInPips = false;//fxdaytrader
extern double ProfitTarget = 25.0;
extern bool CloseAllNow = false; // closes all orders now
extern bool CloseProfitableTradesOnly = false; // closes only profitable trades
extern double ProftableTradeAmount = 1; // Only trades above this amount close out
extern bool ClosePendingOnly = false; // closes pending orders only
extern bool UseAlerts = false;
int Multiplier;
double pips2dbl;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
}
void CloseAll()
{
int i;
bool result = false;
while(OrdersTotal()>0)
{
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i, SELECT_BY_POS)==false) continue;
result = false;
if ( OrderType() == OP_BUY) if (!DoNotCloseOrders) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 15, Red );
if ( OrderType() == OP_SELL) if (!DoNotCloseOrders) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 15, Red );
if (UseAlerts) PlaySound("alert.wav");
}
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i, SELECT_BY_POS)==false) continue;
result = false;
if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_BUYLIMIT) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_SELLLIMIT) result = OrderDelete( OrderTicket() );
if (UseAlerts) PlaySound("alert.wav");
}
Sleep(1000);
}
}
void CloseAllinProfit()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
bool result = false;
if ( OrderType() == OP_BUY && OrderProfit()+OrderSwap()+OrderCommission()>ProftableTradeAmount) if (!DoNotCloseOrders) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
if ( OrderType() == OP_SELL && OrderProfit()+OrderSwap()+OrderCommission()>ProftableTradeAmount) if (!DoNotCloseOrders) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
if (UseAlerts) PlaySound("alert.wav");
}
return;
}
void ClosePendingOrdersOnly()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
bool result = false;
if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() );
}
return;
}
int start()
{
// код доступен только после оплаты
}
int OrdersBUY;
int OrdersSELL;
double BuyLots=0.0, SellLots=0.0, BuyProfit=0.0, SellProfit=0.0, BuyProfitPips=0.0, SellProfitPipsПоказано первые 50% кода (символов: 4463)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.