Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях - страница 25

 
Carl Schreiber:
  1. Some people have a VPS but cannot renew the subscription.
  2. I don't have any VPS and cannot start the subscription - I do have enough money on my MQ-account.
  1. Некоторые люди имеют VPS, но не могут продлить подписку.
  2. У меня нет VPS и я не могу начать подписку - у меня достаточно денег на моем MQ-счете.

По-моему, уже все исправлено -
I think it was already fixed -

 

b3014

Во вкладке тестер плитки не смещаются на вторую строку (как например плитки маркета).

Если не должны смещаться, то также нет горизонтальной прокрутки



 
Vitaliy Kuznetsov:

Убрал все виды новостей


Но кол-во "99" по прежнему висит и звуковое бульканье постоянно всплывает в терминале. Это жуть, как отвлекает.

Как отключить? Порой прилетает по 5-7 звуков за раз!



Где можно включить или отключить метки новостей на графике?

Сам себя процитировал, т.к. нашёл на часть поднятых вопросов ответы.


1. Как отключить звуковые оповещения новостей:

Идём Tools-Options-Events

Кликаем News и вуаля - отключено. Хотелось бы видеть данную функцию отключенной при установке нового терминала.

Реально отвлекает и 99% пользователям не нужно. Зачем их тогда раздражать? Пиликает и пиликает


2. Новости на экране. Отключить можно, если кликнуть на вкладку Календарь, потом правой кнопкой мыши

В меню "Show on Charts" снимаем птичку Auto Update и все остальные метки удаляем функцией "Delete All Events"

Новости тоже не всегда нужны экране, их бы тоже по умолчанию вырубить.

// А вкладка Календарь - действительно крутая и удобная вещь.

 

Предложение разработчикам.
Прошу добавить возможность, позиционировать(отображать) окна индикаторов слева(вертикально) или справа(вертикально) или сверху(горизонтально).
Появится возможность использовать окно индикатора как холст(слева, справа, сверху), для приложений на графических объектах. 

m

i

 

Просьба вынести в настройки ME галку отключения оптимизации компилятора.

Сейчас (b3014) совсем неприемлемое время.


Чтобы проверить синтаксическую корректность кода, приходится вот так выкручиваться, нажимая F5.


Для каждого кода создавать отдельный проект и ставить соответствующую галку - слишком.

 
b3016.
2021.08.10 18:41:38.200 Storage invalid MQL5 login or password
 

b3016, просьба исправить поведение на прежнее (b2958).

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна

fxsaber, 2021.06.19 14:39

Веский довод, почему сейчас в Терминале неправильно. Переделал скрипт в советник.
// Скрипт позволяет увидеть, как формируется таблица истории ордеров
// при создании/удалении новых ордеров и без этого.

#property script_show_inputs

input bool inFlag = true;  // Проверка истории с открытием ордеров
input datetime inFrom = 0; // Не ноль приведет к ошибке и с новыми ордерами

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

void OnTick()
{    
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick) && Tick.ask)
  {
    Print("------------\n" + (string)inFlag); // Отделили строки разных запусков скрипта.
  
    if (inFlag) // Проверка на новых ордерах.
    {
      // Попытка сформировать кеш на случай, если начальная дата будет всегда постоянной, но ненулевой.
      HistorySelect(inFrom, INT_MAX);
      
      Print("Create/Delete orders.");
      
      // Создали первый ордер.
      const TICKET_TYPE Ticket1 = OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Tick.ask - 1000 * _Point, 0, 0, 0);
      
      Sleep(2000); // Подождали и создали второй ордер.
      const TICKET_TYPE Ticket2 = OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Tick.ask - 1000 * _Point, 0, 0, 0);
      
      Print(Ticket1); // Тикет первого.
      Print(Ticket2); // Тикет второго.
      
      OrderDelete(Ticket2); // Удалили второй - попал в историю.
      
      Sleep(2000); // Подождали и удалили первый - попал в историю.
      OrderDelete(Ticket1);
    
      // Проверка последовательности ордеров в истории - последних двух.
      if (HistorySelect(inFrom, INT_MAX))
      {
        Print("Check the History. inFrom = " + (string)inFrom);
        
        const int Total = HistoryOrdersTotal();
        
        for (int i = Total - 2; i < Total; i++)
          Print(HistoryOrderGetTicket(i)); // Распечатываем тикеты в конце таблицы. 
      }
  
      ExpertRemove();  
    }  
  }  
}


Результат Тестера.

2021.06.19 15:30:46.582 Core 1  EURUSD,M1: testing of Experts\Test9.ex5 from 2021.06.18 00:00 to 2021.06.19 00:00 started with inputs:
2021.06.19 15:30:46.582 Core 1    inFlag=true
2021.06.19 15:30:46.582 Core 1    inFrom=0
2021.06.19 15:30:46.582 Core 1  EURUSD : real ticks begin from 2021.03.15 00:00:00
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:00   ------------
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:00   true
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:00   Create/Delete orders.
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:00   buy limit 0.1 EURUSD at 1.18097 (1.19057 / 1.19097)
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:02   buy limit 0.1 EURUSD at 1.18097 (1.19057 / 1.19069)
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:02   2
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:02   3
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:02   order canceled [#3 buy limit 0.1 EURUSD at 1.18097]
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:04   order canceled [#2 buy limit 0.1 EURUSD at 1.18097]
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:04   Check the History. inFrom = 1970.01.01 00:00:00
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:04   3
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:04   2
2021.06.19 15:30:46.582 Core 1  2021.06.18 00:00:04   ExpertRemove() function called

Все четко и правильно в Тестере! Это не повод ломать Тестер. Это повод вернуть хотя бы поведение Терминала к тому, что было еще в b2958. Там работало только для inFrom = 0, но работало. В Тестере работает для любого inFrom правильно. Это абсолютно логично.


Что имеем на данный момент. HistorySelect в Терминале и в Тестере работают разными алгоритмами. При этом в Тестере этот алгоритм удобный и логичный, да еще и супер-быстрый - дозапись всего, что приходит в историю, в конец таблицы. В Терминале же - нет.


Заметьте, не упоминаю сортировку по какому-либо признаку во время работы советника. Просто говорю о дозаписи в конец (а не в середину) новых элементов истории.

Если же говорить о сортировке, то она нужна только один раз - при запуске советника. И сортировка должна быть по ORDER_TIME_DONE_MSC (при совпадающих значениях - по тикету). Тогда будет полная однозначность HistorySelect-таблицы во время работы и сразу после запуска.


 

Я (b3014) только что открыл новый демо-счет, чтобы протестировать бесплатный сигнал: мы со StePo понимаем действительно странные вещи:

  1. Я установил первый график с активацией выставочных уровней торговли и показом торговой истории , и сохранил его как default.tpl.
    Но если после этого я открою новый график, все будет настроено соответствующим образом, кроме (?) Показывать торговые уровни и показывать торговую историю - и то, и другое будет деактивировано?
    Для каждого нового графика я должен снова применить default.tpl, и теперь активируются опции показывать торговые уровни и показывать торговую историю.
    Странный.

  2. Но, несмотря на то, что все графики должны показывать торговые уровни и отображать торговую историю, только на одном графике отображается синхронизированная открытая позиция - даже если они находятся в торговом списке?

  3. Сразу после того, как я подключил сигнал к вновь открытому (демо) счету, ВСЕ открытые позиции синхронизируются и открываются - независимо от того, выгодно ли это (покупать дешевле || продавать дороже) или просто плохо и как долго позиция уже открыта?

  4. С другой стороны, НЕТ отложенных ордеров вообще не синхронизируется ?? Поймите это, если сможете!
Я бы ожидал, что если учетная запись вновь подключена к сигналу, система синхронизирует только отложенные ордера и открытую позицию, которые были открыты до даты и времени, когда сигнал был арендован, если и только если цена входа лучше, чем цена открытия сигнал.



I (b3014) just opened a new Demo account to test a free signal: StePo and I realizes really odd things:

  1. I set the first chart with activation of show trade levels and show trade history, and I saved it as default.tpl.
    But if I open a new chart after that everything is set accordingly except (?) show trade levels and show trade history - both is deactivated?
    For each new chart I have to apply again the default.tpl and now the option show trade levels and show trade history are activated.
    Strange.

  2. But despite all chart should show trade levels and show trade history only on one charts shows the synchronized opened position - even though they are in the trade list?

  3. Right after I connected the signal with the newly opened (demo-) account ALL the open positions are synchronized and opened - no matter whether this is profitable (buying cheaper || selling higher)  or just bad and how long the position is already open?

  4. On the other hand NO pending orders are synchronized at all ?? Understand that if you can!
I would expect that if an account is newly connected with a signal the system only synchronizes the pending orders and  the open position that were opened before date and time the signal was rent if and only if the entrance price is better than the open price of the signal.
 

(b.2981 release version);

In isolated cases (not systematically reproducible), a division by zero occurs: / В отдельных случаях (систематически не воспроизводимых) происходит деление на ноль:

2021.08.11 07:23:40.026 MyMA (GBPCAD,M30) zero divide in 'MyMA.mq5' (278,92)

in this line of code: / в этой строке кода:

      BuffPrcRel[iB] = BuffPrcLong[iB]<MyZero ? 1.0 : (fmax(BuffPrc[iB],cV*BuffVolDiff[iB]) / BuffPrcLong[iB] );
                                                                                         // ^ char #92 of line 278 

MyZero определяется как MyZero = _Point * 0.00001;

Я заменил 0 в строке кода 278 сверху.

Индикатор работал на графике D1, потом я переключился на график M30, тогда и возникла ошибка, если я переключаюсь сейчас, не важно как, ошибка не возникает.



MyZero is defined as MyZero = _Point * 0.00001;

I replaced 0 in the code line 278 from above.

The indicator was running on D1 chart and then I switched to M30 chart, that's when the error occurred, if I switch now, no matter how, the error does not occur.

 
Carl Schreiber:

Я заменил 0 в строке кода 278 сверху.


Индикатор работал на графике D1, потом я переключился на график M30, тогда и возникла ошибка, если я переключаюсь сейчас, не важно как, ошибка не возникает.


В любом коде для МТ такая конструкция должна быть как Отче Наш:

double g_fPoint = 0.0

int OnInit()
{
   g_fPoint = Point();
}

int OnCalculate(...)
{
   if (g_fPoint <= 0.0)
   {
      g_fPoint = Point();
      if (g_fPoint <= 0.0)
         return 0;
   }
}
И только если уже получено значение величины пункта, его можно использовать. А до тех пор ждем полного соединения с сервером.
Причина обращения: