Ошибки, баги, вопросы - страница 3334

 
fxsaber #:

Не требовалась сортировка, т.к. просто шла дозапись в конец. За два года разработчикам тонны аргументов были направлены через все виды контактов.

Проверил в последнем билде 3802 в надежде, что это исправили, но увы ...

 
Artyom Trishkin #:

Наличие кэшированных данных гарантирует их актуальность на каждый момент времени?

По теме.

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

MT5 и скорость в боевом исполнении

Renat Fatkhullin, 2020.08.28 00:38

И эти таблицы могут в любой момент измениться. Как и отдельные записи в них.

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

Как я писал выше, мы применим методы интеллектуального кеширования, что снизит до нуля расходых на Select функции. Если, конечно, не будете специально рандомизировать пределы выборок. Последнюю дату можно менять и она не будет инвалидировать кеш, если она всегда будет в будущем/послднем времени. Последние транзакции будут экономно добавляться в кеш.

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

MT5 и скорость в боевом исполнении

Renat Fatkhullin, 2020.08.27 22:58

Поэтому и такие расходы на копирование. Тем более, если специально заниматься одновременным принудительным копированием этой истории в кеш из множества потоков.

Мы уже многое оптимизировали в операциях выборок и сейчас думаем над оптимальным обновлением кеша, когда в реальности 99% выборок будут полностью бесполезными и пропускаться по факту.

То есть, если не будете специально рандомизировать пределы выборок, то кеш будет показывать попадания, близкие к 100%.

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

MT5 и скорость в боевом исполнении

Renat Fatkhullin, 2020.09.01 14:18

нужно четко понимать, что подход "вызову HistorySelect на всю историю, а потом сразу еще сделаю выборку HistorySelectByPosition" будет убивать ранее созданные кеши истории. Это выстрел себе в ногу.

Как сейчас - не знаю. Разработчики, вроде, ни разу не комментировали.

 
Добрый день!

Столкнулся с такой проблемой. 

Решил установить себе один торговый ассистент на мт5 на macOS. Но так как один ассистент уже был установлен, новый мне установить не удавалось и он не появлялся в общем. 

И тут я решил удалить все файлы с папки "каталог данных" вместо того что бы сделать это разумно. (файлы что удалил прикрепил как пример с мт4)

Теперь после того как я скачиваю мт5 и устанавливаю его и перемещаю иконку. Сразу же при нажатии на иконку мт5 выскакивает окошко на 1 секунду и сразу тухнет и так все время комп перезагружал, удалял и скачивал повторно. (окошко что выскакивает закрепил).

С корзины тоже все файлы удалил) пробовал восстанавливать на рабочий стол в папку но не помогло)


В общем не знаю что делать остается наверное либо бек спать мак либо пользоваться только мт4))

Буду очень признателен за ответ и за помощь, кто знает выход из ситуации.

 
crleo #:
... Решил установить себе один торговый ассистент на мт5 на macOS ...

У меня нет компьбтера на MacOS, но я нашел один пост (там была похожая проблема в той ветке) -

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

после обновления не запускается платформа.

MetaQuotes, 2023.06.09 23:10

На Маке надо удалить старую инсталляцию на Wine 6.0 и переустановить новый пакет с Wine 7.7

Ссылка на инсталлятор внизу страницы справа.

 

Странно, что релогин не приводит к отправке события Init в эксперты (MT4). Но при этом в журнале

Automated trading disabled because the account has been changed

То есть, аккаунт в достаточной мере изменился для отключения автоторговли, но этого не достаточно для отправки Init в эксперты.

 
fxsaber #:

Пример 1% случаев, когда не в конце окажется и buy/sell.

  1. Асинхронно отправляется Buy-приказ.
  2. Асинхронно отправляется BuyLimit-приказ.
  3. Как только появился BuyLimit-тикет, делается его удаление.

В этом случае часто будет происходить ситуация, когда Buy-приказ будет не в конце таблицы ордеров.


Давайте разберем, что это обозначает. Пусть в таблице истории ордеров 1000 записей - ордера с индексами (HistoryOrderGetTicket) от 0 до 999.

Вот произошло событие п.3 выше - BuyLimit удалился и попал в таблицу истории ордеров. Он имеет индекс 1000 - его тикет отдается вызовом HistoryOrderGetTicket(1000).


Теперь произошло срабатывание Buy-приказа из п.1 - Buy-приказ попал в таблицу истории ордеров. Вы думаете, что его индекс 1001?

-Нет, его индекс 1000! Т.е. HistoryOrderGetTicket(1000) возвращал одно значение (BuyLimit-ticket), а через некоторое время - другое (Buy-ticket).


Интересна реакция не MQ, а форумчан. Либо это "красноречивое молчание", либо пофигизм.

Можно ли утверждать обратное?

То есть, если HistoryOrderGetTicket(prevTotal - 1) не изменился, значит ли это, что ордера добавлены в конец и можно брать их оттуда? Или не факт?


Я думаю, вы поняли. Детектить таким образом факт перетасовывания истории. И анализировать всю историю заново только если она перетасована

 

Доброе время суток.

Хотел кое-что актуальное предложить. В настройках MetaEditor не нашел полных шаблонизированных настроек для "шапки" создаваемых файлов исходного кода (я про #property и т.д. , хотя при создании есть Author и Link).

Хотел предложить рассмотреть вопрос расширенной шаблонизации части генерируемых файлов с исходным кодом - в частности автоматического добавления предопределённых #property и т.д.

В чем польза - в каждом новом советнике или индикаторе или скрипте будет автоматически с #property добавляться например предопределенное кастомное уведомление об отказе от ответственности все такое. Вообще, это положено делать всем, но почти никто не утруждает себя той юридически традиционной процедурой. А если в MetaEditor будет возможность настроить генерируемую шапку с #property для интеграции в каждый создаваемый советник и т.д. - будет очень удобно.

Спасибо за внимание.

 
Vladislav Boyko #:

Можно ли утверждать обратное?

То есть, если HistoryOrderGetTicket(prevTotal - 1) не изменился, значит ли это, что ордера добавлены в конец и можно брать их оттуда? Или не факт?

Факт.


Я думаю, вы поняли. Детектить таким образом факт перетасовывания истории. И анализировать всю историю заново только если она перетасована

Довольно много сил потратил на разные реализации, где пытался максимально заоптимизировать. Например, исходя из списка живых ордеров можно точно сказать, какая часть таблицы 100% не будет перетряхиваться.

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

К сожалению, все несколько не так с коммуникацией с MQ, как хотелось бы.

 

Ошибка при выполнении:

int i=0;
void f1() { if (!i++) Print(1); }
void f2() { if (!i++) Print(2); }
void OnStart()
{
    if (1)
#define MACRO    /*
комментарий
  */f1();
    f2();
}

Результат:   1

Ожидалось: 2

 
A100 #:


Результат:   1

Ожидалось: 2

Вроде, и должно быть "1"