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

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 и перейдите к оплате.

Стоимость полного кода
446,30₽ ≈ $5.45