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

ilan_lite_1.mq4

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

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

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

О программе

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

Советник проверяет наличие открытых позиций и при их отсутствии формирует направление сделки на основе анализа движения цены. При работающих позициях периодически выставляет уровни фиксации прибыли. Расчёт объёма лота учитывает начальный размер, множитель роста и текущее количество позиций с проверкой доступного свободного маржи.

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

НастройкаОписание
TakeProfit Тейк-профит — Уровень фиксации прибыли в пунктах от средней цены открытия позиций
StartLot Начальный лот — Базовый объём позиции, используемый при открытии первой сделки
LotExponent Экспонента лота — Множитель, определяющий скорость увеличения объёма лота с ростом количества сделок
LotStep Шаг цены — Минимальное движение цены в пунктах от последней цены позиции для формирования сигнала на открытие следующей сделки
MaxTrades Максимум сделок — Ограничение на количество одновременных позиций с данным магическим номером
Получить полный код

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

extern double TakeProfit = 10;
extern double StartLot = 0.1;
extern double LotExponent = 1.5;
extern double LotStep = 30;
extern int MaxTrades = 10;
int Magic = 12345;

int PrevTime = 0, cnt = 0, Ticket;
bool TradeNow = FALSE, LongTrade = FALSE, ShortTrade = FALSE, NewOrdersPlaced = FALSE, Flag;

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

int deinit() {
   ObjectsDeleteAll();
   return (0);
}

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

   double B = AccountEquity(), C = AccountBalance();
   color Color;
   if (B < C) Color = Yellow;
   if (B > C) Color = Lime; 
   ObjectCreate("A", OBJ_LABEL, 0, 0, 0);
   ObjectSet("A", OBJPROP_CORNER, 3);
   ObjectSet("A", OBJPROP_XDISTANCE, 25);
   ObjectSet("A", OBJPROP_YDISTANCE, 60);
   ObjectSetText("A", ""+OrdersTotal()+"", 12, "Courier", OrangeRed);
   ObjectCreate("B", OBJ_LABEL, 0, 0, 0);
   ObjectSet("B", OBJPROP_CORNER, 3);
   ObjectSet("B", OBJPROP_XDISTANCE, 25);
   ObjectSet("B", OBJPROP_YDISTANCE, 40);
   ObjectSetText("B", ""+DoubleToStr(AccountEquity(), 2)+"", 12, "Courier", Color);
   ObjectCreate("C", OBJ_LABEL, 0, 0, 0);
   ObjectSet("C", OBJPROP_CORNER, 3);
   ObjectSet("C", OBJPROP_XDISTANCE, 25);
   ObjectSet("C", OBJPROP_YDISTANCE, 20);
   ObjectSetText("C", ""+DoubleToStr(AccountBalance(), 2)+"", 12, "Courier", Lime);

   if (PrevTime == Time[0]) return (0);
      PrevTime = Time[0];

   if (CountTrades() == 0) Flag = FALSE;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
         if (OrderType() == OP_BUY) {
            LongTrade = TRUE;
            ShortTrade = FALSE;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
         if (OrderType() == OP_SELL) {
            LongTrade = FALSE;
            ShortTrade = TRUE;
         }
      }
   }

   if (CountTrades() > 0 && CountTrades() <= MaxTrades) {
      if (LongTrade && LastPrice() - Ask >= LotStep * Point) TradeNow = TRUE;
      if (ShortTrade && Bid - LastPrice() >= LotStep * Point) TradeNow = TRUE;
   }

   if (CountTrades() < 1) {
      LongTrade = FALSE;
      ShortTrade = FALSE;
      TradeNow = TRUE;
   }

   if (TradeNow) {
      if (ShortTrade) {
         Ticket = OrderSend(Symbol(), OP_SELL, Lots(StartLot), NormalizeDouble(Bid, Digits), 3, 0, 0, NULL, Magic, Red);
         TradeNow = FALSE;
         NewOrdersPlaced = TRUE;
      }
      if (LongTrade) {
         Ticket = OrderSend(Symbol(), OP_BUY, Lots(StartLot), NormalizeDouble(Ask, Digits), 3, 0, 0, NULL, Magic, Blue);
         TradeNow = FALSE;
         NewOrdersPlaced = TRUE;
      }
   }

   if (TradeNow && CountTrades() < 1) {
      double PrevCl = iClose(Symbol(), 0, 2);
      double CurrCl = iClose(Symbol(), 0, 1);
      if (

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

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

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

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

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

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

Стоимость полного кода
401₽ ≈ $4.90