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

ilan_mql5.mq5

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

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

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

О программе

Илан_mql5 — торговый советник для платформы MetaTrader 5, работающий на текущем символе в рамках одного таймфрейма. Советник анализирует рыночные цены в каждом тике и управляет открытыми позициями, применяя усреднение и фиксацию прибыли.

При открытии позиции без текущей сделки советник определяет направление по отношению открытия и закрытия предыдущей свечи: при бычьем свечном паттерне открывается продажа, при медвежьем — покупка. Для управления позицией используется усреднение по заданному шагу в пунктах с нарастающим размером лота.

Фиксация прибыли устанавливается автоматически при открытии каждой новой позиции на уровне, заданном параметром TakeProfit. Советник отслеживает количество сделок в позиции и не превышает установленный лимит MaxTrades. Все ордера помечаются магическим номером для идентификации.

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

НастройкаОписание
TakeProfit ? ??????? (TakeProfit) TakeProfit — Уровень фиксации прибыли в пунктах, устанавливаемый автоматически при открытии позиции
?????? ???? ???????? ????? (PipStep) PipStep — Шаг в пунктах для срабатывания усреднения или изменения направления позиции
????????? ????? ???? (Lots) Lots — Базовый размер лота для расчёта объёма сделок
?????????? ?????? ????? ??????? ? ?????? ???? (LotDecimal) LotDecimal — Количество знаков после запятой для нормализации рассчитанного размера лота
?????????? ?????????? ?????? ???? (LotExponent) LotExponent — Множитель экспоненты для увеличения размера лота при каждом последующем усреднении
?????????? ????? ????????? (MagicNumber) MagicNumber — Магический номер для идентификации ордеров и сделок советника
???????????? ?????????? ???????? ????? (MaxTrades) MaxTrades — Максимальное количество сделок, допустимых в рамках одной позиции
??????????????? (Slip) Slip — Допустимое проскальзывание цены при выставлении и модификации ордеров
Получить полный код

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

#property version   "1.00"

input     double  TakeProfit       = 10;          // TakeProfit ? ???????
input     double  PipStep          = 30;          // ?????? ???? ???????? ?????
input     double  Lots             = 0.10;        // ????????? ????? ????
input     int     LotDecimal       = 1;           // ?????????? ?????? ????? ??????? ? ?????? ????
input     double  LotExponent      = 1.70;        // ?????????? ?????????? ?????? ????
input     int     MagicNumber      = 70707;       // ?????????? ????? ?????????
input     int     MaxTrades        = 8;           // ???????????? ?????????? ???????? ?????
input     int     Slip             = 3;           // ???????????????

/*input*/ bool    UseEquityStop    = false;       // ???????? ??????????? ?? ??????
/*input*/ double  TotalEquityRisk  = 50.0;        // ??????? ????????? ???????? ????? ???????? ?????? ???

/*input*/ bool    UseTimeOut       = false;       // ????????? ??????????? ?? ????? ????? ???????
/*input*/ double  MaxTradeOpenHours = 48;         // ???????????? ????? ????? ??????? ? ?????

double     Spread;
string     ExpertName = "Ilan_mql5";
datetime   Expiration;
double     LotSize;
int        i = 0, Total;
bool       TradeNow = false, LongTrade = false, ShortTrade = false;
int        Ticket = 0;
bool       NewOrdersPlaced = false;
double     LastBuyPrice, LastSellPrice;
double     iTakeProfit, iPipStep;
long       PositionID = 0;     // ????????????? ???????? ???????

bool       Position = false;   // true - ???? ???????? ???????, false - ???
double     OpenPrice;          // ???? ???????? ???????

double     OldOpenPrice = 0;   // ????????? ???? ???????? ???????

MqlTick          LastPrices;   // ????????? ??? ????????? ????????? ??????? ??????
MqlTradeRequest  Request;      // ????????? ??? ???????? ?????? ???????? OrderSend()
MqlTradeResult   Result;       // ????????? ? ??????????? ???????? ???????? ??????

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

void OnDeinit(const int reason)
  {
    return;
  }

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

    if (UseTimeOut && TimeCurrent() >= Expiration)
      {
        Print("????? ????? ??????? ???????, ?????????????? ???????? ???????");
        ClosePosition();  // ????????? ???????
      }

    if (UseEquityStop)
      {

        double AccountEquity = AccountInfoDouble(ACCOUNT_EQUITY);
        double AccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);

        if (AccountEquity <= AccountBalance * (1 - TotalEquityRisk / 100))
          {
            Print("???????? ", TotalEquityRisk, "% ????????, ?????????????? ???????? ???????");
            ClosePosition();
          }
      }

    if (!PositionSelect(_Symbol))    // ??? ????? ???????
      {
        Position = false;
      }
    else  // ???? ???? ???????
      {
        Position = true;
        PositionID = PositionGetInteger(POSITION_IDENTIFIER); // ????????????? ???????
      }

    if (Position)  // ???? ???? ???????? ???????
      {
        if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)  // ??????? Buy
          {
            LongTrade = true;
            ShortTrade = false;
          }
        if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)  // ??????? Sell
          {
            LongTrade = false;
            ShortTrade = true;
          }
      }

    if (Position) Total = CountTrades(PositionID);
    else Total = 0;

    if (Position && (Total > 0 && Total <= MaxTrades))
      {

        LastBuyPrice = FindLastBuyPrice(PositionID);
        LastSellPrice = FindLastSellPrice(PositionID);

        if (SymbolInfoTick(_Symbol, LastPrices))  // ??????? ? LastPrices ????????? ????
          {
            if (LongTrade && LastBuyPrice - LastPrices.ask >= iPipStep * _Point)  // ???? ???? ????
              TradeNow = true;

            if (ShortTrade && LastPrices.bid - LastSellPrice >= iPipStep * _Point) // ???? ???? ?????
              TradeNow = true;
          }
      }  // if (Total > 0 && Total <= MaxTrades)

    if (!Position)
      {
        ShortTrade = false;
        LongTrade = false;
        TradeNow = true;

      }

    if (Position && TradeNow)
      {

        LotSize = NormalizeDouble(Lots * MathPow(LotExponent, Total), LotDecimal);

        Request.action       = TRADE_ACTION_DEAL;  // ??????????? ?????????? ??????
        Request.symbol       = _Symbol;            // ???????? ??????????
        Request.volume       = LotSize;            // ????? ????
        Request.sl           = 0;                  // StopLoss
        Request.tp           = 0;                  // TakeProfit
        Request.deviation    = Slip;               // ???????????????
        Request.type_filling = ORDER_FILLING_AON;  // ??? ?????? ?? ??????????
        Request.magic        = MagicNumber;        // ?????????? ?????

        if (!SymbolInfoTick(_Symbol, LastPrices))
          {
            Print("?? ??????? ???????? ????????? ??????? ??????");
            return;
          }

        if (ShortTrade)  // Sell - ?????
          {
            Request.price = ND(LastPrices.bid);      // ???? ???????
            Request.type = ORDER_TYPE_SELL;          // ??? ??????

            if (!OrderSend(Request, Result))
              {
                Print("?? ??????? ??????? ????? Sell, ??? ?????? ", Result.retcode);
                return;
              }

            TradeNow = false;
            NewOrdersPlaced = true;  // ????? ????? ??????
          }
        else if (LongTrade)  // Buy - ?????
          {
            Request.price = ND(LastPrices.ask);     // ???? ???????
            Request.type = ORDER_TYPE_BUY;          // ??? ??????

            if (!OrderSend(Request, Result))
              {
                Print("?? ??????? ??????? ?????, ??? ?????? ", Result.retcode);
                return;
              }

            TradeNow = false;
            NewOrdersPlaced = true;  // ????? ????? ??????
          }
      }  // if (TradeNow)

   if (!Position && TradeNow)  // ???? ??? ???????? ???????
      {

        MqlRates Rates[1];

        if (CopyRates(_Symbol, _Period, 1, 1, Rates) != 1)
          {
            Print("?? ??????? ???????? ??????? ?????? ??? ?????????? ?????");
            return;
          }

        if (!ShortTrade && !LongTrade)
          {

            LotSize = NormalizeDouble(Lots * MathPow(LotExponent, Total), LotDecimal);

            Request.action       = TRADE_ACTION_DEAL;  // ??????????? ?????????? ??????
            Request.symbol       = _Symbol;            // ???????? ??????????
            Request.volume       = LotSize;            // ????? ????
            Request.sl           = 0;                  // StopLoss
            Request.tp           = 0;                  // TakeProfit
            Request.deviation    = Slip;               // ???????????????
            Request.type_filling = ORDER_FILLING_AON;  // ??? ?????? ?? ??????????
            Request.magic        = MagicNumber;        // ?????????? ?????

            if (!SymbolInfoTick(_Symbol, LastPrices))
              {
                Print("?? ??????? ???????? ????????? ??????? ??????");
                return;
              }

            if (Rates[0].open > Rates[0].close)  // ???? ????????? ????? ?????? - ???????
              {

                Request.price = ND(LastPrices.bid);      // ???? ???????
                Request.type = ORDER_TYPE_SELL;          // ??? ??????

                if (!OrderSend(Request, Result))
                  {
                    Print("?? ??????? ??????? ?????, ??? ?????? ", Result.retco

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

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

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

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

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

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

Стоимость полного кода
1 021,90₽ ≈ $12.49