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

Javier Gold Scalper

javier gold scalper.mq4
Вы автор или правообладатель?

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

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

О программе

Javier Gold Scalper — торговый советник для MetaTrader 4, предназначенный для скальпирования на валютных парах. Советник анализирует текущие рыночные условия и открывает длинные и короткие позиции в зависимости от движения цены, заданного параметром PipsStep, с учётом ограничений по времени и спреду.

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

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

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

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

НастройкаОписание
FixedLots Фиксированный размер лота для открытия позиций при выбранном режиме Fixed
PercentageRiskSettings Группа настроек процентного риска для автоматического расчёта размера лота
PercentageRisk Процент риска от баланса счёта, используемый для расчёта размера лота в режиме AutoMM
PercentageRiskBasedOnPointsMovement Количество пунктов движения цены, используемое в расчёте размера лота при процентном риске
BalanceRatioSettings Группа настроек балансового соотношения для расчёта размера лота на основе баланса счёта
ForEvery Размер баланса счёта, на каждый единичный интервал которого рассчитывается дополнительный лот в режиме BalanceRatio
UseLotsForEveryBalance Размер лота, используемый на каждый единичный баланс в режиме BalanceRatio
LotsSelection Группа настроек выбора метода расчёта размера лота
LotAssignment Режим назначения размера лота: Fixed — фиксированный, AutoMM — процентный риск, BalanceRatio — балансовое соотношение
TakeProfit Тейк-профит в пунктах для закрытия позиций
Tral Расстояние трейлинг-стопа в пунктах для защиты прибыли
TralStart Начальное расстояние в пунктах от цены открытия, после которого трейлинг-стоп начинает срабатывать
TimeStart Час начала торговой сессии (в локальном времени сервера), в пределах которого разрешено открытие позиций
TimeEnd Час окончания торговой сессии (в локальном времени сервера), в пределах которого разрешено открытие позиций
MaxSpread Максимально допустимый спред в пунктах для открытия позиций; при значении 0 ограничение не действует
PipsStep Шаг в пунктах, при котором советник оценивает возможность открытия новой позиции на основе изменения цены
OpenTime Время в часах с последнего обновления, через которое допускается повторное открытие позиции
Magic Магический номер для идентификации ордеров, управляемых советником
Info Переключатель отображения информационной панели на графике
TextColor Цвет основного текста в информационной панели
InfoDataColor Цвет данных (значений) в информационной панели
FonColor Цвет фона информационной панели на графике
FontSizeInfo Размер шрифта текста в информационной панели
SpeedEA Период работы внутреннего таймера советника в миллисекундах, определяющий частоту проверки рыночных условий
CloseTradesAtPercentageDrawdown Переключатель для автоматического закрытия всех сделок при достижении процентной просадки от баланса
PercentageDrawdown Процент просадки от баланса, при достижении которого происходит закрытие сделок
CloseTradesAtFixedDrawdown Переключатель для автоматического закрытия всех сделок при достижении фиксированной просадки
FixedDrawdown Значение фиксированной просадки в денежном эквиваленте, при достижении которой происходит закрытие сделок
ResumeTradingAtNextDayAfterDrawdown Переключатель возобновления торговли на следующий день после закрытия сделок из-за просадки
Получить полный код

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

#property version   "1.00"
#property strict

#import "stdlib.ex4"

string ErrorDescription(int);

#import

enum LotAss
{
   Fixed = 0, // FixedLots
   AutoMM = 1, // Percentage Risk
   BalanceRatio = 2 // BalanceRatio
};

input double FixedLots = 0.01;
input string PercentageRiskSettings = "***************************";
input double PercentageRisk = 0.1;
input int PercentageRiskBasedOnPointsMovement = 100;
input string BalanceRatioSettings = "***************************";
input double ForEvery = 1000;
input double UseLotsForEveryBalance = 0.01;
input string LotsSelection = "***************************";
input LotAss LotAssignment = Fixed;
input int TakeProfit = 30;
input double Tral = 20;
input double TralStart = 5;
input double TimeStart = 2;
input double TimeEnd = 23;
input double MaxSpread = 40;
input double PipsStep = 35;
input int OpenTime = 1;
input int Magic = 2021;
input bool Info = true;
input color TextColor = White;
input color InfoDataColor = DodgerBlue;
input color FonColor = 0;
input int FontSizeInfo = 7;
input int SpeedEA = 50;
input bool CloseTradesAtPercentageDrawdown;
input double PercentageDrawdown = 5;
input bool CloseTradesAtFixedDrawdown;
input double FixedDrawdown = 1000;
input bool ResumeTradingAtNextDayAfterDrawdown;

bool Ib_00000;
int Ii_00004;
int returned_i;
string Is_00008;
bool returned_b;
bool Ib_00014;
string Is_00018;
int Ii_0003C;
double Gd_00000;
int Gi_00001;
int Gi_00002;
string Is_00030;
double Ind_000;
double Gd_00001;
bool Gb_00001;
int Gi_00003;
int Gi_00004;
double Gd_00003;
bool Gb_00003;
bool Ib_00078;
bool Ib_00024;
double Ind_002;
double Id_00068;
long Il_00050;
long returned_l;
double Id_00048;
long Gl_00003;
double Ind_004;
double Gd_00005;
int Gi_00006;
int Gi_00007;
double Gd_00006;
double Id_00070;
int Gi_00008;
int Gi_00009;
int Gi_0000A;
double Gd_0000B;
double Gd_0000C;
double Gd_0000D;
int Gi_0000E;
double Gd_0000E;
bool Gb_0000E;
double Gd_0000F;
int Ii_00040;
int Gi_00010;
int Gi_00011;
int Gi_00012;
double Gd_00013;
double Gd_00014;
double Gd_00015;
int Gi_00016;
double Gd_00016;
bool Gb_00016;
double Gd_00017;
int Gi_00018;
int Gi_00019;
int Gi_0001A;
long Gl_00019;
long Gl_0001B;
int Gi_0001B;
int Gi_0001C;
int Gi_0001D;
int Gi_0001E;
long Gl_0001D;
int Gi_0001F;
int Gi_00020;
int Gi_00021;
double Gd_00022;
double Gd_00023;
double Gd_00024;
int Gi_00025;
double Gd_00025;
bool Gb_00025;
double Gd_00026;
int Gi_00027;
int Gi_00028;
int Gi_00029;
double Gd_0002A;
double Gd_0002B;
double Gd_0002C;
int Gi_0002D;
double Gd_0002D;
bool Gb_0002D;
double Gd_0002E;
double Gd_0002F;
int Gi_00030;
int Gi_00031;
double Gd_00032;
int Gi_00033;
int Gi_00034;
double Gd_00033;
bool Gb_00033;
int Gi_00035;
int Gi_00036;
int Gi_00037;
int Gi_00038;
double Gd_00036;
double Gd_00039;
int Gi_0003A;
double Gd_0003A;
double Gd_0003B;
int Gi_0003C;
int Gi_0003D;
int Gi_0003E;
int Gi_0003F;
long Gl_0003E;
double Gd_00040;
int Gi_00041;
int Gi_00042;
double Gd_00041;
long Gl_00041;
double Gd_00043;
int Gi_00044;
int Gi_00045;
double Gd_00044;
long Gl_00044;
double Gd_00046;
int Gi_00047;
int Gi_00048;
long Gl_00047;
double Gd_00047;
double Gd_00049;
int Gi_0004A;
int Gi_0004B;
long Gl_0004A;
double Gd_0004A;
double Gd_0004C;
int Gi_0004D;
int Gi_0004E;
long Gl_0004D;
double Gd_0004D;
double Gd_0004F;
int Gi_00050;
int Gi_00051;
long Gl_00050;
double Gd_00050;
long Il_00028;
double Id_00058;
double Id_00060;
int Ii_0007C;
bool Ib_00080;
int Ii_00084;
int Ii_00088;
bool Gb_00000;
double Gd_00002;
bool Gb_00002;
double Gd_00004;
int Gi_00000;
long Gl_00006;
double returned_double;
bool order_check;

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

void OnDeinit(const int reason)
{
   EventKillTimer();

   ObjectsDeleteAll(0, 23);
   ObjectsDeleteAll(0, 28);
}

void OnTick()
{
      // код доступен только после оплаты
   }
   string tmp_str00000;
   string tmp_str00001;
   string tmp_str00002;
   string tmp_str00003;
   string tmp_str00004;
   string tmp_str00005;
   string tmp_str00006;
   string tmp_str00007;
   string tmp_str00008;
   string tmp_str00009;
   string tmp_str0000A;
   string tmp_str0000B;
   string tmp_str0000C;
   string tmp_str0000D;
   string tmp_str0000E;
   string tmp_str0000F;
   string tmp_str00010;
   string tmp_str00011;
   string tmp_str00012;
   string tmp_str00013;
   string tmp_str00014;
   string tmp_str00015;
   string tmp_str00016;
   string tmp_str00017;
   string tmp_str00018;
   string tmp_str00019;
   string tmp_str0001A;
   string tmp_str0001B;
   string tmp_str0001C;
   string tmp_str0001D;
   string tmp_str0001E;
   string tmp_str0001F;
   string tmp_str00020;
   string tmp_str00021;
   string tmp_str00022;
   string tmp_str00023;
   string tmp_str00024;
   string tmp_str00025;
   string tmp_str00026;
   string tmp_str00027;
   string tmp_str00028;
   string tmp_str00029;
   string tmp_str0002A;
   string tmp_str0002B;
   string tmp_str0002C;
   string tmp_str0002D;
   string tmp_str0002E;
   string tmp_str0002F;
   string tmp_str00030;
   string tmp_str00031;
   string tmp_str00032;
   string tmp_str00033;
   string tmp_str00034;
   string tmp_str00035;
   string tmp_str00036;
   string tmp_str00037;
   string tmp_str00038;
   string tmp_str00039;
   string tmp_str0003A;
   string tmp_str0003B;
   string tmp_str0003C;
   string tmp_str0003D;
   string tmp_str0003E;
   bool Lb_FFFFF;
   bool Lb_FFFFE;
   bool Lb_FFFFD;
   bool Lb_FFFFC;
   double Ld_FFFF0;

   if (CloseTradesAtPercentageDrawdown)
   {
      Gd_00000 = 0;
      Gi_00001 = OrdersTotal() - 1;
      Gi_00002 = Gi_00001;

      if (Gi_00001 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00002, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol && OrderComment() == Is_00030)
            {
               Gd_00001 = (Gd_00000 + OrderProfit());
               Gd_00001 = (Gd_00001 + OrderSwap());
               Gd_00000 = (Gd_00001 + OrderCommission());
            }

            Gi_00002 = Gi_00002 - 1;
         }
         while (Gi_00002 >= 0);
      }

      Gd_00001 = -PercentageDrawdown;

      if ((Gd_00000 <= (Gd_00001 * AccountBalance()) / 100))
      {
         tmp_str00000 = "EP Closed At Percentage Drawdown";
         func_1037(tmp_str00000);
      }
   }

   if (CloseTradesAtFixedDrawdown)
   {
      Gd_00001 = 0;
      Gi_00003 = OrdersTotal() - 1;
      Gi_00004 = Gi_00003;

      if (Gi_00003 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00004, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol && OrderComment() == Is_00030)
            {
               Gd_00003 = (Gd_00001 + OrderProfit());
               Gd_00003 = (Gd_00003 + OrderSwap());
               Gd_00001 = (Gd_00003 + OrderCommission());
            }

            Gi_00004 = Gi_00004 - 1;
         }
         while (Gi_00004 >= 0);
      }

      Gd_00003 = -FixedDrawdown;

      if ((Gd_00001 <= Gd_00003))
      {
         tmp_str00001 = "EP Closed At Percentage Drawdown";
         func_1037(tmp_str00001);
      }
   }

   if (Ib_00078)
   {
      if (!IsDemo())
         return;
   }

   if (!Ib_00024)
   {
      Gd_00003 = (Ask - Bid);
      Id_00068 = (Gd_00003 / _Point);
      Lb_FFFFF = false;
      Lb_FFFFE = false;
      Lb_FFFFD = false;
      Lb_FFFFC = false;

      if (Il_00050 == 0)
         Il_00050 = TimeCurrent();

      if ((Id_00048 == 0))
         Id_00048 = Bid;

      Gl_00003 = OpenTime;
      Gl_00003 = Il_00050 + Gl_00003;

      if (Gl_00003 < TimeCurrent())
      {
         Il_00050 = TimeCurrent();
         Id_00048 = Bid;
      }

      Gl_00003 = OpenTime;
      Gl_00003 = Il_00050 + Gl_00003;

      if (Gl_00003 >= TimeCurrent())
      {
         Gd_00003 = (PipsStep * _Point);

         if (((Bid - Gd_00003) >= Id_00048))
            Lb_FFFFF = true;
      }

      Gl_00003 = OpenTime;
      Gl_00003 = Il_00050 + Gl_00003;

      if (Gl_00003 >= TimeCurrent() && PipsStep * _Point + Bid <= Id_00048)
         Lb_FFFFD = true;

      if (TimeHour(TimeCurrent()) >= TimeStart && TimeHour(TimeCurrent()) < TimeEnd)
      {
         if (MaxSpread == 0 || MaxSpread >= Id_00068)
         {
            if (Lb_FFFFF)
               Lb_FFFFE = true;
         }

         if (MaxSpread == 0 || MaxSpread >= Id_00068)
         {
            if (Lb_FFFFD)
               Lb_FFFFC = true;
         }
      }

      Gi_00003 = -1;
      Gd_00005 = 0;
      Gi_00006 = OrdersTotal() - 1;
      Gi_00007 = Gi_00006;

      if (Gi_00006 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00007, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && OrderMagicNumber() == Magic)
            {
               if (OrderType() == Gi_00003 || Gi_00003 == -1)
               {
                  Gd_00006 = OrderProfit();
                  Gd_00006 = (Gd_00006 + OrderSwap());
                  Gd_00005 = ((Gd_00006 + OrderCommission()) + Gd_00005);
               }
            }

            Gi_00007 = Gi_00007 - 1;
         }
         while (Gi_00007 >= 0);
      }

      Id_00070 = (Gd_00005 / (AccountBalance() / 100));
      Gi_00006 = -1;
      Gi_00008 = 0;
      Gi_00009 = OrdersTotal() - 1;
      Gi_0000A = Gi_00009;

      if (Gi_00009 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_0000A, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
            {
               if (Gi_00006 == -1 || OrderType() == Gi_00006)
                  Gi_00008 = Gi_00008 + 1;
            }

            Gi_0000A = Gi_0000A - 1;
         }
         while (Gi_0000A >= 0);
      }

      if (Gi_00008 == 0 && Lb_FFFFC)
      {
         tmp_str00002 = _Symbol;
         Gd_0000C = FixedLots;

         if (LotAssignment == 1)
         {
            Gd_0000D = (PercentageRisk * AccountBalance());
            Gi_0000E = PercentageRiskBasedOnPointsMovement * 100;
            Gd_0000E = (Gd_0000D / (Gi_0000E * MarketInfo(tmp_str00002, MODE_TICKVALUE)));
            Gd_0000C = Gd_0000E;

            if ((Gd_0000E < MarketInfo(tmp_str00002, MODE_MINLOT)))
               Gd_0000C = MarketInfo(tmp_str00002, MODE_MINLOT);
         }
         else if (LotAssignment == 2)
         {
            Gd_0000E = floor((AccountBalance() / ForEvery));
            Gd_0000C = (Gd_0000E * 0.01);
         }

         Gd_0000E = floor((Gd_0000C / MarketInfo(tmp_str00002, MODE_MINLOT)));
         Gd_0000E = (Gd_0000E * MarketInfo(tmp_str00002, MODE_MINLOT));
         Gd_0000C = Gd_0000E;
         returned_double = MarketInfo(tmp_str00002, MODE_MINLOT);
         Gd_0000F = Gd_0000E;

         if (Gd_0000E <= returned_double)
            Gd_0000E = returned_double;
         else
            Gd_0000E = Gd_0000F;

         Gd_0000C = Gd_0000E;
         returned_double = MarketInfo(tmp_str00002, MODE_MAXLOT);
         Gd_0000F = Gd_0000E;

         if (Gd_0000E >= returned_double)
            Gd_0000E = returned_double;
         else
            Gd_0000E = Gd_0000F;

         Gd_0000C = Gd_0000E;
         Ii_00040 = OrderSend(_Symbol, 1, Gd_0000E, Bid, 5, 0, 0, Is_00030, Magic, 0, 255);
      }

      Gi_0000E = -1;
      Gi_00010 = 0;
      Gi_00011 = OrdersTotal() - 1;
      Gi_00012 = Gi_00011;

      if (Gi_00011 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00012, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
            {
               if (Gi_0000E == -1 || OrderType() == Gi_0000E)
                  Gi_00010 = Gi_00010 + 1;
            }

            Gi_00012 = Gi_00012 - 1;
         }
         while (Gi_00012 >= 0);
      }

      if (Gi_00010 == 0 && Lb_FFFFE)
      {
         tmp_str00003 = _Symbol;
         Gd_00014 = FixedLots;

         if (LotAssignment == 1)
         {
            Gd_00015 = (PercentageRisk * AccountBalance());
            Gi_00016 = PercentageRiskBasedOnPointsMovement * 100;
            Gd_00016 = (Gd_00015 / (Gi_00016 * MarketInfo(tmp_str00003, MODE_TICKVALUE)));
            Gd_00014 = Gd_00016;
            if ((Gd_00016 < MarketInfo(tmp_str00003, MODE_MINLOT)))
            {
               Gd_00014 = MarketInfo(tmp_str00003, MODE_MINLOT);
            }
         }
         else if (LotAssignment == 2)
         {
            Gd_00016 = floor((AccountBalance() / ForEvery));
            Gd_00014 = (Gd_00016 * 0.01);
         }

         Gd_00016 = floor((Gd_00014 / MarketInfo(tmp_str00003, MODE_MINLOT)));
         Gd_00016 = (Gd_00016 * MarketInfo(tmp_str00003, MODE_MINLOT));
         Gd_00014 = Gd_00016;
         returned_double = MarketInfo(tmp_str00003, MODE_MINLOT);
         Gd_00017 = Gd_00016;

         if (Gd_00016 <= returned_double)
            Gd_00016 = returned_double;
         else
            Gd_00016 = Gd_00017;

         Gd_00014 = Gd_00016;
         returned_double = MarketInfo(tmp_str00003, MODE_MAXLOT);
         Gd_00017 = Gd_00016;

         if (Gd_00016 >= returned_double)
            Gd_00016 = returned_double;
         else
            Gd_00016 = Gd_00017;

         Gd_00014 = Gd_00016;
         Ii_00040 = OrderSend(_Symbol, 0, Gd_00016, Ask, 5, 0, 0, Is_00030, Magic, 0, 32768);
      }

      Gi_00016 = -1;
      Gi_00018 = 0;
      Gi_00019 = OrdersTotal() - 1;
      Gi_0001A = Gi_00019;

      if (Gi_00019 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_0001A, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic)
            {
               if (Gi_00016 == -1 || OrderType() == Gi_00016)
                  Gi_00018 = Gi_00018 + 1;
            }

            Gi_0001A = Gi_0001A - 1;
         }
         while (Gi_0001A >= 0);
      }

      Gl_00019 = AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);
      Gl_0001B = Gi_00018;

      if (Gl_0001B < Gl_00019 || AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) == 0)
      {
         Gi_0001B = -1;
         Gi_0001C = 0;
         Gi_0001D = OrdersTotal() - 1;
         Gi_0001E = Gi_0001D;

         if (Gi_0001D >= 0)
         {
            do
            {
               if (OrderSelect(Gi_0001E, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && OrderMagicNumber() == Magic)
               {
                  Gl_0001D = OrderOpenTime();

                  if (Gl_0001D >= iTime(_Symbol, 0, 0))
                  {
                     if (Gi_0001B == -1 || OrderType() == Gi_0001B)
                        Gi_0001C = Gi_0001C + 1;
                  }
               }

               Gi_0001E = Gi_0001E - 1;
            }
            while (Gi_0001E >= 0);
         }

         if (Gi_0001C == 0)
         {
            Gi_0001D = 0;
            Gi_0001F = 0;
            Gi_00020 = OrdersTotal() - 1;
            Gi_00021 = Gi_00020;

            if (Gi_00020 >= 0)
            {
               do
               {
                  if (OrderSelect(Gi_00021, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
                  {
                     if (Gi_0001D == -1 || OrderType() == Gi_0001D)
                        Gi_0001F = Gi_0001F + 1;
                  }

                  Gi_00021 = Gi_00021 - 1;
               }
               while (Gi_00021 >= 0);
            }

            if (Gi_0001F > 0 && Lb_FFFFE)
            {
               tmp_str00004 = _Symbol;
               Gd_00023 = FixedLots;

               if (LotAssignment == 1)
               {
                  Gd_00024 = (PercentageRisk * AccountBalance());
                  Gi_00025 = PercentageRiskBasedOnPointsMovement * 100;
                  Gd_00025 = (Gd_00024 / (Gi_00025 * MarketInfo(tmp_str00004, MODE_TICKVALUE)));
                  Gd_00023 = Gd_00025;

                  if ((Gd_00025 < MarketInfo(tmp_str00004, MODE_MINLOT)))
                     Gd_00023 = MarketInfo(tmp_str00004, MODE_MINLOT);
               }
               else if (LotAssignment == 2)
               {
                  Gd_00025 = floor((AccountBalance() / ForEvery));
                  Gd_00023 = (Gd_00025 * 0.01);
               }

               Gd_00025 = floor((Gd_00023 / MarketInfo(tmp_str00004, MODE_MINLOT)));
               Gd_00025 = (Gd_00025 * MarketInfo(tmp_str00004, MODE_MINLOT));
               Gd_00023 = Gd_00025;
               returned_double = MarketInfo(tmp_str00004, MODE_MINLOT);
               Gd_00026 = Gd_00025;

               if (Gd_00025 <= returned_double)
                  Gd_00025 = returned_double;
               else
                  Gd_00025 = Gd_00026;

               Gd_00023 = Gd_00025;
               returned_double = MarketInfo(tmp_str00004, MODE_MAXLOT);
               Gd_00026 = Gd_00025;

               if (Gd_00025 >= returned_double)
                  Gd_00025 = returned_double;
               else
                  Gd_00025 = Gd_00026;

               Gd_00023 = Gd_00025;
               Ii_00040 = OrderSend(_Symbol, 0, Gd_00025, Ask, 10, 0, 0, Is_00030, Magic, 0, 32768);
            }

            Gi_00025 = 1;
            Gi_00027 = 0;
            Gi_00028 = OrdersTotal() - 1;
            Gi_00029 = Gi_00028;

            if (Gi_00028 >= 0)
            {
               do
               {
                  if (OrderSelect(Gi_00029, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
                  {
                     if (Gi_00025 == -1 || OrderType() == Gi_00025)
                        Gi_00027 = Gi_00027 + 1;
                  }

                  Gi_00029 = Gi_00029 - 1;
               }
               while (Gi_00029 >= 0);
            }

            if (Gi_00027 > 0 && Lb_FFFFC)
            {
               tmp_str00005 = _Symbol;
               Gd_0002B = FixedLots;

               if (LotAssignment == 1)
               {
                  Gd_0002C = (PercentageRisk * AccountBalance());
                  Gi_0002D = PercentageRiskBasedOnPointsMovement * 100;
                  Gd_0002D = (Gd_0002C / (Gi_0002D * MarketInfo(tmp_str00005, MODE_TICKVALUE)));
                  Gd_0002B = Gd_0002D;

                  if ((Gd_0002D < MarketInfo(tmp_str00005, MODE_MINLOT)))
                     Gd_0002B = MarketInfo(tmp_str00005, MODE_MINLOT);
               }
               else if (LotAssignment == 2)
               {
                  Gd_0002D = floor((AccountBalance() / ForEvery));
                  Gd_0002B = (Gd_0002D * 0.01);
               }

               Gd_0002D = floor((Gd_0002B / MarketInfo(tmp_str00005, MODE_MINLOT)));
               Gd_0002D = (Gd_0002D * MarketInfo(tmp_str00005, MODE_MINLOT));
               Gd_0002B = Gd_0002D;
               returned_double = MarketInfo(tmp_str00005, MODE_MINLOT);
               Gd_0002E = Gd_0002D;

               if (Gd_0002D <= returned_double)
                  Gd_0002D = returned_double;
               else
                  Gd_0002D = Gd_0002E;

               Gd_0002B = Gd_0002D;
               returned_double = MarketInfo(tmp_str00005, MODE_MAXLOT);
               Gd_0002E = Gd_0002D;

               if (Gd_0002D >= returned_double)
                  Gd_0002D = returned_double;
               else
                  Gd_0002D = Gd_0002E;

               Gd_0002B = Gd_0002D;
               Ii_00040 = OrderSend(_Symbol, 1, Gd_0002D, Bid, 10, 0, 0, Is_00030, Magic, 0, 255);
            }
         }
      }

      Gi_0002D = -1;
      Gd_0002F = 0;
      Gi_00030 = OrdersTotal() - 1;
      Gi_00031 = Gi_00030;

      if (Gi_00030 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00031, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic)
            {
               if (OrderType() == Gi_0002D || Gi_0002D == -1)
                  Gd_0002F = (Gd_0002F + OrderLots());
            }

            Gi_00031 = Gi_00031 - 1;
         }
         while (Gi_00031 >= 0);
      }

      Ld_FFFF0 = (Gd_0002F * TakeProfit);
      Gi_00030 = -1;
      Gd_00032 = 0;
      Gi_00033 = OrdersTotal() - 1;
      Gi_00034 = Gi_00033;

      if (Gi_00033 >= 0)
      {
         do
         {
            if (OrderSelect(Gi_00034, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic)
            {
               if (OrderType() == Gi_00030 || Gi_00030 == -1)
               {

                  Gd_00033 = OrderProfit();
                  Gd_00033 = (Gd_00033 + OrderSwap());
                  Gd_00032 = ((Gd_00033 + OrderCommission()) + Gd_00032);
               }
            }

            Gi_00034 = Gi_00034 - 1;
         }
         while (Gi_00034 >= 0);
      }

      if ((Gd_00032 >= Ld_FFFF0) && (Ld_FFFF0 != 0))
      {
         Gi_00033 = -1;
         Gi_00035 = 0;
         Gi_00036 = OrdersTotal() - 1;
         Gi_00037 = Gi_00036;

         if (Gi_00036 >= 0)
         {
            do
            {
               if (OrderSelect(Gi_00037, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
               {
                  if (Gi_00033 == -1 || OrderType() == Gi_00033)
                     Gi_00035 = Gi_00035 + 1;
               }

               Gi_00037 = Gi_00037 - 1;
            }
            while (Gi_00037 >= 0);
         }

         if (Gi_00035 > 1)
         {
            Gi_00036 = OrdersTotal() - 1;
            Gi_00038 = Gi_00036;

            if (Gi_00036 >= 0)
            {
               do
               {
                  if (OrderSelect(Gi_00038, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic)
                  {
                     if (OrderType() == OP_BUY)
                     {
                        RefreshRates();
                        tmp_str00006 = OrderSymbol();
                        order_check = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(tmp_str00006, MODE_BID), _Digits), 10, 16777215);
                     }
                     else if (OrderType() == OP_SELL)
                     {
                        RefreshRates();
                        tmp_str00007 = OrderSymbol();
                        order_check = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(tmp_str00007, MODE_ASK), _Digits), 10, 16777215);
                     }
                  }

                  Gi_00038 = Gi_00038 - 1;
               }
               while (Gi_00038 >= 0);
            }
         }
      }

      Gi_0003C = -1;
      Gi_0003D = 0;
      Gi_0003E = OrdersTotal() - 1;
      Gi_0003F = Gi_0003E;

      if (Gi_0003E >= 0)
      {
         do
         {
            if (OrderSelect(Gi_0003F, SELECT_BY_POS, MODE_TRADES) && _Symbol == OrderSymbol() && Magic == OrderMagicNumber())
            {
               if (Gi_0003C == -1 || OrderType() == Gi_0003C)
                  Gi_0003D = Gi_0003D + 1;
            }

            Gi_0003F = Gi_0003F - 1;
         }
         while (Gi_0003F >= 0);
      }

      if (Gi_0003D == 1)
         func_1018();

      if (!Info)
         return;

      tmp_str00008 = "INFO_fon";

      if (ObjectCreate(0, tmp_str00008, OBJ_RECTANGLE_LABEL, 0, 0, 0))
      {
         ObjectSetInteger(0, tmp_str00008, 102, 220);
         ObjectSetInteger(0, tmp_str00008, 103, 20);
         ObjectSetInteger(0, tmp_str00008, 1019, 200);
         ObjectSetInteger(0, tmp_str00008, 1020, 225);
         ObjectSetInteger(0, tmp_str00008, 1025, FonColor);
         ObjectSetInteger(0, tmp_str00008, 1029, 2);
         ObjectSetInteger(0, tmp_str00008, 101, 1);
         ObjectSetInteger(0, tmp_str00008, 6, 16711680);
         ObjectSetInteger(0, tmp_str00008, 8, 1);
         ObjectSetInteger(0, tmp_str00008, 9, 0);
         ObjectSetInteger(0, tmp_str00008, 208, 0);
      }

      tmp_str00009 = "";
      tmp_str0000A = "INFO_LOGO";

      ObjectCreate(0, tmp_str0000A, OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, tmp_str0000A, 102, 165);
      ObjectSetInteger(0, tmp_str0000A, 103, 24);
      ObjectSetInteger(0, tmp_str0000A, 101, 1);
      ObjectSetString(0, tmp_str0000A, 999, tmp_str00009);
      ObjectSetString(0, tmp_str0000A, 1001, "Arial");
      ObjectSetInteger(0, tmp_str0000A, 100, FontSizeInfo);
      ObjectSetInteger(0, tmp_str0000A, 6, TextColor);
      ObjectSetInteger(0, tmp_str0000A, 208, 0);
      ObjectSetInteger(0, tmp_str0000A, 9, 0);

      tmp_str0000B = "___________________________";
      tmp_str0000C = "INFO_Line";

      ObjectCreate(0, tmp_str0000C, OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, tmp_str0000C, 102, 215);
      ObjectSetInteger(0, tmp_str0000C, 103, 27);
      ObjectSetInteger(0, tmp_str0000C, 101, 1);
      ObjectSetString(0, tmp_str0000C, 999, tmp_str0000B);
      ObjectSetString(0, tmp_str0000C, 1001, "Arial");
      ObjectSetInteger(0, tmp_str0000C, 100, FontSizeInfo);
      ObjectSetInteger(0, tmp_str0000C, 6, TextColor);
      ObjectSetInteger(0, tmp_str0000C, 208, 0);
      ObjectSetInteger(0, tmp_str0000C, 9, 0);

      tmp_str0000D = "Account information";
      tmp_str0000E = "INFO_txt1";

      ObjectCreate(0, tmp_str0000E, OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger

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

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

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

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

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

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

Стоимость полного кода
3 489,90₽ ≈ $42.65