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

 
Ashes:

Считаем: год тиковой истории (при режиме все тики на M1) требует  примерно 3Gb дискового пространства под временные файлы (понаблюдайте за папкой "...\tester\Agent-0.0.0.0-xxxx\temp", когда идёт тяжёлое задание). Умножаем на число агентов. 17 Gb уже на грани (а если 8 агентов, то и за ней)

Прикольное название эксперта. ;)

Спасибо! Не мог и прикинуть, что 16Гб может быть мало. Перенесу агентов на другой диск - 650 Гб надеюсь хватит.

У меня тоже такое наблюдалось - особенно когда компьютер загружен. Но в последнее время, при нагруженном копмпьютере, одиночный проход теста просто завешивает терминал (дело не в нехватке места - терминал стоит там, где есть 650Гб свободного места). Но если поубивать все возможные процессы - всё проходит на ура. 
 
voix_kas:

Помогите, пожалуйста. Почему не находит сделку (ошибка 4755)?

С HistoryDealSelect возможно проблемы, если код тестировался в тестере стратегий.

тынц 


[Удален]  
sion:

С HistoryDealSelect возможно проблемы, если код тестировался в тестере стратегий.

тынц 


Если использую конструкцию с HistorySelect(), то всё работает норм.

В OnTradeTransaction не работает. Вероятно, данное событие наступает до помещения информации о сделки в некую БД. Не смотря на явное указание в документации:

TRADE_TRANSACTION_DEAL_ADD - Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.

 
voix_kas:

Если использую конструкцию с HistorySelect(), то всё работает норм.

В OnTradeTransaction не работает. Вероятно, данное событие наступает до помещения информации о сделки в некую БД. Не смотря на явное указание в документации:

TRADE_TRANSACTION_DEAL_ADD - Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.

Тут тестировали,  через HistorySelect() работало, то-же запрос через HistoryDealSelect уже фейлился. На данном примере скорость размещения в бд не влияла.

Так в тестере стратегий проверяете? На реал, скорее всего, будет нормально работать.

[Удален]  
sion:

Тут тестировали,  через HistorySelect() работало, то-же запрос через HistoryDealSelect уже фейлился. На данном примере скорость размещения в бд не влияла.

Так в тестере стратегий проверяете? На реал, скорее всего, будет нормально работать.

Подтверждаю, вот этот код с кастылём в виде HistorySelect() исправно работает: 

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result) {
  if ((trans.type == TRADE_TRANSACTION_DEAL_ADD) && (trans.symbol == _Symbol)) {
    if (HistorySelect(0, TimeTradeServer())) {
      for (int i = 0; i < HistoryDealsTotal(); i++) {
        ulong Ticket = HistoryDealGetTicket(i);
        if (trans.deal == HistoryDealGetInteger(Ticket, DEAL_ORDER)) {
          Print(HistoryDealGetInteger(Ticket, DEAL_MAGIC));
          break;
        }
      }
    }
    else Log("HistorySelect(0, TimeTradeServer() = false! GetLastError() = ", GetLastError());
  }
}

Остаётся ждать, когда разработчик исправит явный баг.

[Удален]  
Да, проверяю в тестере стратегий. В реал-тайм проблемы не наблюдается.
 
voix_kas:
Да, проверяю в тестере стратегий. В реал-тайм проблемы не наблюдается.
Тынц. Может пригодится, скорее всего, тоже ничего не изменилось.
[Удален]  
sion:
Тынц. Может пригодится, скорее всего, тоже ничего не изменилось.

В общем, нашёл обходной путь для свой потребности. Без OnTradeTransaction.

Возник дополнительный вопрос относительно функции HistoryDealGetTicket().

В документации сказано, что она возвращает номер тикета сделки. При этом явно не описаны случае возврата ошибки, например, нужно ли проверять возвращаемое значение на ">0"?

Аналогично с HistoryOrderGetTicket(). Однако у последней в примере указана проверка на положительное возвращаемое значение.

Поиск по форуму показывают, что народ проверяет возвращаемое значение как в случае ордера, так и в случае сделки.

 

Скорее всего, такую проверку делать надо на случай, например, запроса сделки с порядковым номером более HistoryDealTotal()-1. Но я был признателен разработчикам за внесение ясности в документацию к языку MQL5.

 
sion:
void OnInit()
{
uint as=iCustom(_Symbol,PERIOD_M10,"Examples\\CCI");
}

void OnTick()
{
}

Повторилась ошибка?

 В 770 билде, чарт с м10 не появляется, в предыдущем нормально.

Эх..., брокер терминал обновил, там только визуализация косячит, иль можно что угодно ждать?
 

Здравствуйте при присоединении индикатора к графику получил 

Access violation read to 0x0000000000000001 in 'C:\Program Files\Alpari NZ MT5\MQL5\Indicators\название индикатора.ex5'

как с этим бороться? билд 770 64-бит ОС 7-ка 


Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - Документация по MQL5