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

trade_protector-1.0.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Это торговый советник для платформы MetaTrader 4, предназначенный для мониторинга и модификации открытых позиций. Советник автоматически корректирует уровни стоп-лосса и тейк-профита в зависимости от текущей цены и заданных пользователем параметров. Поддерживается фиксированный и пропорциональный трейлинг-стоп, а также механизм экстренного закрытия сделок при достижении заданных уровней прибыли или убытка. При включённом логировании советник записывает данные о модификациях ордеров в CSV-файлы в каталог Experts/Files.

Настройки программы

НастройкаОписание
logging Логирование — Включает или отключает запись подробных логов в файл tp-100-log.txt и tp-100-log-sl.txt в каталоге Experts/Files
nTrailingStop Начальный трейлинг-стоп — Начальное расстояние трейлинг-стопа в пунктах, используемое до достижения определённого уровня прибыли
nPropSLThreshold Порог пропорционального стоп-лосса — Уровень прибыли в пунктах, после которого начинает применяться пропорциональная корректировка стоп-лосса
dPropSLRatio Коэффициент пропорционального стоп-лосса — Множитель, определяющий степень сужения стоп-лосса пропорционально текущей прибыли позиции
nUseEscape Использовать механизм экстренного закрытия — Включает или отключает автоматическое изменение ордеров при достижении заданного уровня прибыли или убытка
nEscapeLevel Уровень экстренного закрытия — Размер убытка в пунктах, при достижении которого срабатывает механизм экстренного закрытия позиции
nEscapeTP Тейк-профит экстренного закрытия — Уровень фиксации прибыли в пунктах, устанавливаемый при срабатывании механизма экстренного закрытия
nSlip Допустимое проскальзывание — Допустимое отклонение цены при модификации ордеров
Получить полный код

Поиск по коду файла

extern int logging=1;

extern int nTrailingStop=35;

extern int nPropSLThreshold=12;

extern double dPropSLRatio=0.35;

extern int nUseEscape=0;

extern int nEscapeLevel=0;

extern int nEscapeTP=35;

double dEscapeLevel;
double dStopLoss;
double dTrailingStop;
double dEscapeTP;
double dPropSLThreshold;
double dTakeProfit;
double dTakeProfitMin;
double dTakeProfitMax;
double dTakeProfitT;
int nBars, nSpread, nDigits, nBarsSameTrend, nCloseErr, nOpenErr, i;

double dDeltaPrice, dnBid, dnAsk, dSpread, dStopLevel, dMax, dMin, dMacdDelta, dMacd1, dMacd2;

int nTakeProfitMax=100;
extern int nSlip = 2;
int nBarsSinceTrade=0;

string strExpert = "tp-1.0.0";

int init ()
{
      // код доступен только после оплаты
   }

int deinit()
{
   return(0);
}

int start()
{
      // код доступен только после оплаты
   }

void ModifyOrders()
{ 
   double dSl;
   double arrSL[4];
   double arrTP[4];

   dTrailingStop = NormalizeDouble(nTrailingStop * Point,4);
   dEscapeTP = NormalizeDouble(nEscapeTP * Point,4);
   dPropSLThreshold = nPropSLThreshold * Point;
   dSpread = MarketInfo(Symbol(),MODE_SPREAD) * Point;
   dStopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * Point;

   for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++)
   {
      OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES);
      if(true) //(OrderMagicNumber() == nMagic)
      {
         if(OrderType() == OP_BUY)
         { 
            dSl=OrderStopLoss();
            if( dSl == 0 )
            dSl = dnBid - dTrailingStop;

            arrSL[0]=dSl; 
            arrSL[1]=dSl; 
            arrSL[2]=dSl;
            arrSL[3]=dSl;

            LogSL("OP_BUY-check",dSl,arrSL[0],arrSL[1],arrSL[2],arrSL[3]);

            if( dPropSLRatio > 0 ) 
            {
               if( Bid > (OrderOpenPrice() + dPropSLThreshold) )
               {
                  dSl = NormalizeDouble( OrderOpenPrice() + dPropSLRatio*(Bid - OrderOpenPrice()) - dSpread,4 ); 
                  if(OrderStopLoss() < dSl)
                  arrSL[1]=dSl;
               } 
            }

            if(Bid < OrderOpenPrice() + 4*dSpread )
            {
               arrSL[2]=dnBid - dTrailingStop;
            }

            dSl=arrSL[ArrayMaximum(arrSL)];

            LogSL("OP_BUY - max",dSl,arrSL[0],arrSL[1],arrSL[2],arrSL[3]);

            if( dSl > OrderStopLoss() || OrderStopLoss() == 0 )
               {
                  OrderModify(OrderTicket(), OrderOpenPrice(), 
                     dSl, OrderTakeProfit(), 0, Yellow);
                  Log("Buy - modify", 8888, 8888, 0, nBarsSameTrend, OrderOpenPrice(), dSl);
               }

            if( nUseEscape == 1 && dnBid < OrderOpenPrice() - dEscapeLevel - 5 * Point ) 
            {
               OrderModify(OrderTicket(), OrderOpenPrice(), 
               OrderStopLoss()

Показано первые 50% кода (символов: 4297)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
429,70₽ ≈ $5.25