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

ea8.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный файл представляет собой торговый советник для платформы MetaTrader 4 (MQL4). Советник отслеживает изменение цены текущего инструмента и при достижении заданного минимального движения цены в указанный промежуток времени времени открывает сделки в направлении движения — покупку или продажу. Количество одновременно открытых ордеров ограничивается настраиваемым параметром.

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

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

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

НастройкаОписание
cSeconds Временной интервал в секундах, в течение которого оценивается движение цены для принятия решения об открытии ордера.
MinPriceShot Минимальное движение цены в пунктах, при достижении которого советник открывает новый ордер.
MaxOrdersCount Максимальное количество одновременно открытых ордеров, управляемых советником.
RiskPercent Процент риска от баланса счёта, используемый для расчёта объёма сделки.
TakeProfit Значение тейк-профита в пунктах для открытых ордеров. При значении 0 тейк-профит не устанавливается.
StopLoss Значение стоп-лосса в пунктах для открытых ордеров. При значении 0 стоп-лосс не устанавливается.
TrailingStop Расстояние трейлинг-стопа в пунктах для автоматического перемещения стоп-лосса по ходу движения цены.
Slippage Допустимое отклонение цены исполнения от запрашиваемой цены при открытии ордера.
BuyMagic Магический номер для ордеров на покупку, используемый для идентификации и фильтрации сделок советника.
SellMagic Магический номер для ордеров на продажу, используемый для идентификации и фильтрации сделок советника.
Получить полный код

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

#import "stdlib.ex4"
   string ErrorDescription(int a0); 
#import

extern int cSeconds = 14;
extern int MinPriceShot = 6;
extern int MaxOrdersCount = 1;
extern double RiskPercent = 10.0;
double Gd_104 = 0.1;
extern int TakeProfit = 20;
extern int StopLoss = 15;
extern int TrailingStop = 3;
extern int Slippage = 3;
extern int BuyMagic = 25;
extern int SellMagic = 65;
int G_datetime_136 = 0;
double G_close_140 = -1.0;
string Gs_148 = "TT scalper ea";
double Gd_156;

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

int deinit() {
   return (0);
}

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

int f0_9(int A_cmd_0, int A_magic_4) {
   int count_8 = 0;
   for (int pos_12 = OrdersTotal() - 1; pos_12 >= 0; pos_12--) {
      if (!OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES)) Print("OrderSelect error : " + ErrorDescription(GetLastError()));
      else {
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == A_cmd_0)
               if (OrderMagicNumber() == A_magic_4) count_8++;
         }
      }
   }
   return (count_8);
}

void f0_3(double A_lots_0) {
   int error_8;
   double price_16 = 0;
   double price_24 = 0;
   RefreshRates();
   while (IsTradeContextBusy()) Sleep(1000);
   int datetime_32 = TimeCurrent();
   int ticket_12 = OrderSend(Symbol(), OP_BUY, A_lots_0, Ask, Slippage, 0, 0, "", BuyMagic, 0, Blue);
   if (ticket_12 == -1) {
      while (ticket_12 == -1 && TimeCurrent() - datetime_32 < 60 && !IsTesting()) {
         error_8 = GetLastError();
         Print("Error Opening BUY. (" + error_8 + ")" + ErrorDescription(error_8));
         if (error_8 == 148/* TRADE_TOO_MANY_ORDERS */) return;
         Sleep(1000);
         while (IsTradeContextBusy()) Sleep(1000);
         Print("??????");
         RefreshRates();
         ticket_12 = OrderSend(Symbol(), OP_BUY, A_lots_0, Ask, Slippage, 0, 0, "", BuyMagic, 0, Blue);
      }
      if (ticket_12 == -1) {
         error_8 = GetLastError();
         Print("Error opening BUY. (" + error_8 + ")" + ErrorDescription(error_8));
      }
   }
   if (ticket_12 != -1) {
      Print("Opened BUY for " + Symbol() + " " + Period() + " Lots " + DoubleToStr(A_lots_0, 2) + "!");
      if (OrderSelect(ticket_12, SELECT_BY_TICKET, MODE_TRADES)) {
         if (StopLoss != 0 || TakeProfit != 0) {
            if (TakeProfit > 0) price_16 = f0_8(0);
            if (StopLoss > 0) price_24 = Ask - StopLoss * Gd_156 - (Ask - Bid);
            price_16 = f0_2(price_16);
            price_24 = f0_2(price_24);
            int status=OrderModify(ticket_12, OrderOpenPrice(), price_24, price_16, 0, Green);
         }
      }
   }
}

void f0_5(double A_lots_0) {
   int error_8;
   double price_16 = 0;
   double price_24 = 0;
   RefreshRates();
   while (IsTradeContextBusy()) Sleep(1000);
   int datetime_32 = TimeCurrent();
   int ticket_12 = OrderSend(Symbol(), OP_SELL, A_lots_0, Bid, Slippage, 0, 0, "", SellMagic, 0, Red);
   if (ticket_12 == -1) {
      while (ticket_12 == -1 && TimeCurrent() - datetime_32 < 60 && !IsTesting()) {
         error_8 = GetLastError();
         Print("Error opening SELL. (" + error_8 + ")" + ErrorDescription(error_8));
         if (error_8 == 148/* TRADE_TOO_MANY_ORDERS */) return;
         Sleep(1000);
         while (IsTradeContextBusy()) Sleep(1000);
         Print("??????");
         RefreshRates();
         ticket_12 = OrderSend(Symbol(), OP_SELL, A_lots_0, Bid, Slippage, 0, 0, "", SellMagic, 0, Red);
      }
      if (ticket_12 == -1) {
         error_8 = GetLastError();
         Print("Error opening SELL. (" + error_8 + ")" + ErrorDescription(error_8));
      }
   }
   if (ticket_12 != -1) {
      Print("Opened SELL for " + Symbol() + " " + Period() + " Lots " + DoubleToStr(A_lots_0, 2) + "!");
      if (OrderSelect(ticket_12, SELECT_BY_TICKET, MODE_TRADES)) {
         if (StopLoss != 0 || TakeProfit != 0) {
 

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

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

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

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

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

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

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