Новая версия платформы MetaTrader 5 build 3660: Улучшения и исправления - страница 5

 
Переустановилось с синим экраном, часть вкладок поменялось на EURUSD, в воскресенье вышло новое обновление 3661 и история повторилась.
 
Denis Kirichenko #:

Да, буферы заполняются при первом вызове OnCalculate():

SBuffer gBuffer[] - это не просто массив, а массив  структур буферов.

Поэтому так массив структур буферов не заполнить:


Алексей, тут наверное тема про ООП вторична... Спасибо, что обратили своё внимание на мой вопрос.

Да вторична. Я об этом сказал только потому, что мне это понять сложно. Соответственно понять в чём ошибка мне не по силам.

 
Denis Kirichenko #:

Вот как-то так:


Структура индикаторного буфера:

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

Для чего там эта проверка? Вы же наверняка удаляете все в OnDeinit(). Как объект может существовать там?

int OnInit()
  {
 //--- indicator buffers mapping  
   string labels[BUFF_NUM] = {"Middle", "Upper", "Lower"};   
   for(int b_idx=0; b_idx<BUFF_NUM; b_idx++)
     {
      ::SetIndexBuffer(b_idx, gBuffer[b_idx].data, gBuffer[b_idx].type);
      ::PlotIndexSetDouble(b_idx, PLOT_EMPTY_VALUE, EMPTY_VALUE);
      ::PlotIndexSetString(b_idx, PLOT_LABEL, labels[b_idx]);
     }
//--- BB object
   if(::CheckPointer(gPtrBbObj) == POINTER_DYNAMIC)
      delete gPtrBbObj;
   gPtrBbObj = new CiBollingerCircularBuffer();
   if(!gPtrBbObj.Init(InpPeriod))
      return INIT_FAILED;
//---
   return INIT_SUCCEEDED;
  }
 
Alexey Viktorov #:

Да вторична. Я об этом сказал только потому, что мне это понять сложно. Соответственно понять в чём ошибка мне не по силам.

Алексей, как ранее написал, ошибка была в этом:

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots 3

//#property indicator_type1 DRAW_COLOR_LINE // error
#property indicator_type1 DRAW_LINE         // ok
#property indicator_type2 DRAW_LINE
#property indicator_type3 DRAW_LINE


Для DRAW_COLOR_LINE в таком случае возникает нехватка буферов (нужно не 3, а 4).

 
Denis Kirichenko #:

Алексей, как ранее написал, ошибка была в этом:


Для DRAW_COLOR_LINE в таком случае возникает нехватка буферов (нужно не 3, а 4).

Ну да, если цветных линий должно быть только 1. Но ведь в таком случае нулевой индекс буферов индикатора должен быть для данных средней линии, а первый для цвета. Соответственно в цикле надо чудить с чередованием индекса цикла.

В общем чем проще писать, тем проще искать ошибки.

 

Если есть горячие клавиши, значит должны быть и способы их замены? Пока конфликтует с CHARTEVENT_KEYDOWN.  Хотя бы уберите с дополнительной клавиатуры команды графика.

 
Глобальным переменным, дать категории или структуру папок, для более компактного вида всего этого ?  
 
BillionerClub #:
Глобальным переменным, дать категории или структуру папок, для более компактного вида всего этого ?  

Тоже считаю полезным.

 

Хорошее обновление, полезные исправления багов; команде MQ большая благодарность!

Дальше вперед - к созданию нового, важного и полезного MQL-сообществу функционала МТ5.

Ниже компиляция точек улучшения функционала, собранная из наиболее часто обсуждаемых тем.

 

Community Wishlist MT5 2023

 

1. Устранение узких мест в части работы с кастомарными символами и управлением качественным исторических данных

1. Добавить в настройки кастомарных символов параметр для задания глубины пересчета истории символа при изменении формулы

2. Добавить в функции для программного задания формулы инструмента (н-р "CustomSymbolFormulaUpdate") , установки глубины пересчета и запуска пересчета исторических данных;

3. Обеспечить передачу информации об объеме сделок (real_volume ) и флагов TICK_FLAG_BUY и TICK_FLAG_SELL при копировании тиков из исходного символа в кастомарный с использованием формулы типа IntrumentA=X*IntrumentB.

4. Предоставить возможность записи истории баров и тиков в брокерские символы, у которых на сервере стоит отметка о том что торговля отключена (Trad=Disabled), т.е. это скленные фьючерсы брокеров

5. Создать функционал для проверки глубины истории закаченных тиков и получения данных в части тиков, через дополнение ENUM_SERIES_INFO_INTEGER идентификаторами TICKS_TERMINAL_FIRSTDATE и TICKS_SERVER_FIRSTDATE

P.S: О каком качестве GPT/ONNX/ИИ может идти речь, когда не решена проблема с качеством данных: у брокеров либо нет фьючерсных склеек, а в тех что есть кривые данные на роллаутах, которые поправить невозможно, +  собственные качественные склейки построить штатными средствами тоже невозможно!

 

2. Модернизация Тестера Стратегий

1. Обеспечить в Тестере полноценную работу системы событий ChartEvents

2. Разработать спец. стартовые функции для программного задание периода тестирования, таймфрейма и инструментов из кода советника при старте тестера

3. Обеспечить поддержку многооконности и возможность программно располагать окна в заданном порядке

4. Активировать поддержку экрана Экономический Календарь, загрузку исторических значений экономических событий на  заданную дату и функцию заполнению экрана ЭК событиями на заданную  зату

5. Добавить функцию RestartTester() - в целях того чтобы автоматически вызвать второй проход тестера на тех же даных.

6. Возможность задать при старте тестера стратегий произвольную глубину подгружаемых исторических данных, н-р  set_rates_total = 100000 (вместо текущего ограничения в 1000 баров)

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

 

3. Создание Модулей (в т.ч. Платных)  для независимого использования МТ5

3.1. Crypto-модуль -  подключение терминала МТ5 к 4м крупнейшим крипто-биржам, с возможностью подключать "налету" к анализу и торговле доступные на крипто-биржах инструменты

3.2. CQG/Rithmic- модуль  - подключение терминала МТ5  к анализу и торговле фьючерсами через крупных американских брокеров, чья инфраструктура основана на CQG/Rithmic.

P.S: Создание данных модулей, основанных на принципе ежемесячной подписки со стороны частных трейдеров, даст возможность MQ как монетизировать вложения в "незвлетейший" функционал Подписка на данные, так и потеснить на поле отдельно стоящих терминалов текущих игроков (SierraCharts, MultuCharts, ATAS, Quantower etc).

 

4. Добавление функций и улучшения в работе отдельных функций

4.1. В событии OnTradeTransactions: при типе события TRADE_TRANSACTION_HISTORY_ADD обеспечить в структуре MqlTradeResult наличие всей информации , которая отражается на закладке 'History ' (т.е. заполнение адекватными значениями полей OrderType, Magic, Commet etc)

4.2. В рамках функций SymbolInfoXXX  создать доп. параметра для SymbolInfoInteger() для получения типа брокерской комиссии установленной по инструменту (фикс.за лот, либо %.), и доп. параметр для SymbolInfoDouble() для получения численного значения комиссии.

4.3. Добавить функцию для программного сохранения Профайла терминала.

4.4. В настройках Tools>Options>EsxpertAdvisors добавить опцию дающую право советникам отключать ручную торговлю в терминале , и добавить соотв. функции для отключения/включения ручной торговли

4.5. Добавить в структуру MqlRates поле для хранения маржинальных требований биржи по фьючерсам, обеспечить на стороне Мт5-Сервера ежечасную передачу информации о размере маржи в 0м минутном баре, и автоматическую использование данной информации при построении  часовых барах на стороне пользовательского терминала.

 

5. Найтивная поддержка продвинутых типов графиков технического анализа

5.1. Добавить поддержку графиков типа Renko, т.е. построение графиков по барам сформированным по объемам, без привязки к оси времени

5.2. Добавить поддержку графиков типа DomSurface, т.е. наложение на график цены объемов установленных в стакане заявок с их цветовой разметкой в зависимости от относительного размера .

P.S:  В части графиков терминал МТ5 необходимо  вывести на уровень ATAS, Bookmap, Quantower и других современных платформ.

 
Gladiator WXT #:

5. Добавить функцию RestartTester() - в целях того чтобы автоматически вызвать второй проход тестера на тех же даных.

Forum on trading, automated trading systems and testing trading strategies

Genetic Backtesting Feature

fxsaber, 2023.03.25 11:26

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

input int inTesterAmount = 5;

void OnStart()
{    
  int i = 0;
  
  while (!IsStopped() && (i < inTesterAmount))
    if (MTTESTER::IsReady() && MTTESTER::ClickStart())
      Alert("Tester " + (string)++i + "/" + (string)inTesterAmount);
}
Причина обращения: