Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий - страница 55

 
Alain Verleyen :
Use a template.

Я могу просто изменить цвета графика тестера и сохранить его как шаблон.

Но я не могу загрузить какой-либо индикатор - это значит, что мне нужно установить нормальный график, сохранить его как шаблон и загрузить в тестер? Но тогда я не могу нажать на индикатор и изменить, например, его период :(

Я думаю, это еще не все ...

I can just change the colors of the tester's chart - and save it as template.

But I can't load any indicator - it means I have to set the normal chart save it as template and load it in the tester? But then I can't click on the indicator and change e.g. its period :(

I guess there is more to come ...

 
Carl Schreiber:

Я могу просто изменить цвета графика тестера и сохранить его как шаблон.

Но я не могу загрузить какой-либо индикатор - это значит, что мне нужно установить нормальный график, сохранить его как шаблон и загрузить в тестер? Но тогда я не могу нажать на индикатор и изменить, например, его период :(

Я думаю, это еще не все ...

I can just change the colors of the tester's chart - and save it as template.

But I can't load any indicator - it means I have to set the normal chart save it as template and load it in the tester? But then I can't click on the indicator and change e.g. its period :(

I guess there is more to come ...

Yes it's still very limited, I don't know what are Metaquotes plan about this.
 

В случае, если кто-то заботится об этом /

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

MT5: Проблемы и ошибки при работе с реальными тиками / пользовательскими тиками.

Артур Зас , 2019.09.15 19:08

Я начал писать код, но решил сначала протестировать функциональность, которая уже присутствует в MT5. Как вы можете видеть на скриншоте ниже, данные не синхронизированы. Это отражается одинаково в функциях CopyTicks () и CopyTicksRange () . Разработчики могут просто использовать саму платформу для проверки этого:

Как вы можете видеть в окне Market Watch, время последней котировки составляет 21:00:24 ( Bid = 103825, Ask = 103830, Last = 103885 )

Диаграмма отражает вышесказанное.

Теперь, когда я запрашиваю тиковые данные через диалог символов, я получаю время последней цитаты 19:14:00 ( Bid = 0, Ask = 0, Last = 0, Volume = 0 ).

Предыдущий тик - в 18:01:21 (Bid = 103880, Ask = 103885, Last 103885).

Последний тик явно недействителен, но, прежде всего, где находятся данные тиков с 19:14:00 до 21:00:24?

Этого должно быть достаточно, чтобы доказать, что функциональность тиковых данных в MT5 нарушена. Может кто-нибудь из Metaquotes, пожалуйста, посмотрите на это?


 
fxsaber:

Возможно ли добавить функцию для дебаг-режима?


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


Иногда нужно сделать DebugBreak по условию, когда произошла определенная вложенность функций. Здесь бы очень пригодилась DebugString. Спасибо.

Был вот такой вариант. Может, от него плясать? В принципе, в рамках DIY проповедуемого MQ, можно на своих простых статических объектах стек формировать. Я делал, только он притормаживает при выполнении, что естественно.

Статьи

Трассировка, отладка и структурный анализ кода

---, 2011.03.16 18:01

Весь комплекс задач создания структуры работающего кода и его трассировки можно решить без особых сложностей. Эта возможность появилась в MetaTrader 5 благодаря новому свойству языка MQL5 - автоматическое создание переменных сложного типа данных (структуры и классы) и их уничтожение при выходе из локальной области видимости. В статье описана методика и предоставлен готовый инструмент.

PS. Вот нашел свой исходник:


#include <RubbArray.mqh>

#undef  __SS__
#define __SS__ Stack _stack_(__FILE__, __LINE__, __FUNCSIG__);
#define _STACK_MQH_

class Stack
{
  static RubbArray<Stack> stack;
  
  string filename;
  int line;
  string funcsig;
  
  public:
    Stack(const string _filename, const int _line, const string _funcsig)
    {
      filename = _filename;
      line = _line;
      funcsig = _funcsig;
      stack << &this;
    }
    
    ~Stack()
    {
      stack.pop();
    }
    
    static string get()
    {
      string result = "";
      for(int i = stack.size() - 1; i >= 0; i--)
      {
        Stack *e = stack[i];
        string line;
        StringConcatenate(line, "(", i, ") ", e.filename, " / ", e.line, " / ", e.funcsig);
        result += line + "\n";
      }
      return result;
    }
};

static RubbArray<Stack> Stack::stack();
 
Stanislav Korotky:

PS. Вот нашел свой исходник:

Получается, что нужно в каждой функции/методе прописывать _SS_ вместе с __DEBUG__. Тяжко получается.

 
fxsaber:

Получается, что нужно в каждой функции/методе прописывать _SS_ вместе с __DEBUG__. Тяжко получается.

Да, делал автозаменой по открывающим фигурным скобкам, т.е. не только функции, но и блоки были охвачены. DEBUG не использовал. Добавил когда надо, потом убрал. Во время разработки даже не под отладчиком может прога вылететь, и стек все равно нужен.

 
Stanislav Korotky:

Да, делал автозаменой по открывающим фигурным скобкам, т.е. не только функции, но и блоки были охвачены. DEBUG не использовал. Добавил когда надо, потом убрал. Во время разработки даже не под отладчиком может прога вылететь, и стек все равно нужен.

Хорошая идея, Спасибо!


ЗЫ Как делать автозамену по всем файлам проекта?

 
fxsaber:

ЗЫ Как делать автозамену по всем файлам проекта?

Сторонней утилитой. Я пользовался SSHORTY.EXE (не могу сейчас найти ее в сети, готов скинуть в личку)

 
Может, и здесь пропустят.
Файлы:
SSHORTY.zip  336 kb
 
Andrey Khatimlianskii:

Сторонней утилитой. Я пользовался SSHORTY.EXE (не могу сейчас найти ее в сети, готов скинуть в личку)

Лучше освоить sed или awk, софт качественный и на многие случаи жизни. А SSHORTY.EXE, что это? С какого мусорного ведра ? ))

Причина обращения: