# Советник безубытка по АТР: нужна помощь программиста

Раздел: Язык программирования MQL4
Автор темы: Skyrider60
Создана: 2023-12-18 15:10
Ответов: 4 | Просмотров: 2455
Страница 1 из 1
Источник: https://forexsystemru.com/threads/92117/

---

## Skyrider60 — 2023-12-18 15:10

Не могу заставить работать его на всех парах одновременно. На одно паре на которой он установлен все прекрасно работает.
Подскажите, как изменить код, чтобы он пробегал по всем парам и устанавливал БУ.

```
//+------------------------------------------------------------------+
//|                                                           BU.mq4 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double BULevel       = 1;      // уровень БУ
extern double BUPoint       = 0.2;       // пункты БУ
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  BU();
  }
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
 
   double atr = iATR(Symbol(),PERIOD_M15,14,0);
 
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*atr) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*atr,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*atr) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*atr,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  } 
```

## MakarFX — 2023-12-18 19:14

> Цитата (Skyrider60):
> if(OrderSymbol()==Symbol())

Эта строка определяет работу советника в пределах символа на котором он установлен.
Вам надо создать перебор символов по которым открыты ордера или ставить на каждый символ

## Skyrider60 — 2023-12-18 19:35

> Цитата (MakarFX):
> Эта строка определяет работу советника в пределах символа на котором он установлен.
> Вам надо создать перебор символов по которым открыты ордера или ставить на каждый символ

Да я знаю, я уже перепробовал много вариантов, и с массивами, что-то не получается. Не хватает знаний и опыта.

## MakarFX — 2023-12-18 20:27

> Цитата (Skyrider60):
> Да я знаю, я уже перепробовал много вариантов, и с массивами, что-то не получается. Не хватает знаний и опыта.

```
input string Symbols = "EURUSD,GBPUSD,AUDUSD,USDCHF,EURJPY,GBPJPY,USDJPY,CHFJPY"; // Список символов-разделены ",")
ushort sep = StringGetCharacter(",",0); // Код разделителя
string LV_1[]; // Массив для символов
int szl; // Размер массива
//---
int OnInit()
  {
   szl = StringSplit(Symbols,sep,LV_1); // Заполняем массив и получаем размер
   return(INIT_SUCCEEDED);
  }
//---
void OnTick()
  {
   for(int i=0; i<szl; i++) Print(LV_1);
  }

```

Тренируйтесь)

## ИванМН — 2023-12-18 21:54

Да можно и проще: сканируем "Обзор рынка" и бежим по тем символам, которые в нём отображены. Тогда не надо будет ничего вбивать от руки.

