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

 
Edgar Akhmadeev #:

Не должна сбивать, когда лучше поймёшь английский. Одиночное слово Rate обычно означает либо курс (валюты) либо скорость/частота (поступления тиков). А в Margin rate она означает лишь "Значение".

Конечно, это и так всем понятно. Но я к тому, что мне и в голову не пришла ассоциация с Margin rate.

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

 

Скрипт для создания кастомных символов:

void OnStart(){
   string S="0Test";
   SymbolSelect(S, false);  CustomSymbolDelete(S);
   if(!SymbolInfoInteger(S,SYMBOL_CUSTOM)){
      if(!CustomSymbolCreate(S)) { Print("CustomSymbolCreate() failed. Error ", GetLastError()); return;}
      CustomSymbolSetInteger(S, SYMBOL_START_TIME, 100000);//Значение типа datetime, содержащее количество секунд, прошедших с 01.01.1970.
      CustomSymbolSetInteger(S, SYMBOL_TRADE_CALC_MODE, SYMBOL_CALC_MODE_CFDLEVERAGE);
      CustomSymbolSetDouble(S, SYMBOL_VOLUME_MIN, 0.01);// только в таком порядке min сохраняется: max, min, step
      CustomSymbolSetDouble(S, SYMBOL_VOLUME_MAX, 100);
      
      Print("Symbol "+S);
      Print("SYMBOL_TRADE_CALC_MODE: ",SymbolInfoInteger(S,SYMBOL_TRADE_CALC_MODE));
      Print("SYMBOL_START_TIME: ",SymbolInfoInteger(S,SYMBOL_START_TIME));
      Print("SYMBOL_VOLUME_MAX: ",SymbolInfoDouble(S,SYMBOL_VOLUME_MAX));
      Print("SYMBOL_VOLUME_MIN: ",SymbolInfoDouble(S,SYMBOL_VOLUME_MIN));
      Print("SYMBOL_VOLUME_STEP: ",SymbolInfoDouble(S,SYMBOL_VOLUME_STEP));
   }
}
Вывод:
Symbol 0Test
SYMBOL_TRADE_CALC_MODE: 4
SYMBOL_START_TIME: 0
SYMBOL_VOLUME_MAX: 100.0
SYMBOL_VOLUME_MIN: 0.00000001
SYMBOL_VOLUME_STEP: 0.00000001

Старая проблема так и не исправлена: если SYMBOL_VOLUME_MIN сохраняется до SYMBOL_VOLUME_MAX, то она НЕ устанавливается и остается равной 0.00000001

Это будет когда нибудь отремонтировано? Именно из за такого неустойчивого поведения у меня остается недоверие кастомным символам.

Онаружил еще один баг: SYMBOL_START_TIME не сохраняется вообще. Пробовал его перемещать вверх-вниз в очереди записи. Пробовал разные SYMBOL_TRADE_CALC_MODE. Ничего не помогло. А оно мне нужно, чтобы знать с какой даты запрашивать историю по АПИ, если символ будет выбран. При этом SYMBOL_EXPIRATION_TIME сохраняется.

Подскажите как записать, если это не баг, а фича.

Просьба к разработчикам исправить обе проблемы.

ПС:
еще пара не сохраняется:
      CustomSymbolSetString(S, SYMBOL_INDUSTRY_NAME, "test");//не сохранилось
      CustomSymbolSetString(S, SYMBOL_BANK, "test2");//не сохранилось
но это не критично, сейчас для меня. Но общее впечатление  о кастомных символах портит.
 

Если SYMBOL_EXPIRATION_TIME сохранить до SYMBOL_START_TIME, то и SYMBOL_START_TIME сохраняется.

Почему такие зависимости в порядке записи? 2 часа потерял на такой ерунде ((

Причем

SYMBOL_EXPIRATION_TIME должно быть больше SYMBOL_START_TIME, иначе остается SYMBOL_START_TIME = 0. Видимо это такая проверка, которая отнимает время. Хотя бы сообщение сделали или в справке написали.
Но мне нужно указывать только SYMBOL_START_TIME, т.к. у большинства инструментов нет времени экспирации. Придется 3000 год ставить.



Просьба сохранять в любом порядке. Не все увидят эту запись. И будут так же задавать вопросы и тратить время...

 
Renat Fatkhullin #:

Мы меняем GUI и контролы, включая темную схему.

Пока это первая бета.

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


 

b4885, сейчас в Визуализаторе тестера есть возможность прокрутки его до определенного времени.

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


Однако, при отладке ТС, как правило, анализируются изменения позиций/ордеров. Поэтому просьба подумать о добавлении кнопки "Прокрутить до ближайшего OnTrade".

Тогда можно было бы, нажимая на эту кнопку, быстро переходить к следующим торговым изменениям. И, соответственно, значительно быстрее вести отладку ТС. Спасибо.

Строка для поиска: Uluchshenie 118.
 
Vladimir Pastushak #:

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

ALT+M не подходит?

 
fxsaber #:

Однако, при отладке ТС, как правило, анализируются изменения позиций/ордеров. Поэтому просьба подумать о добавлении кнопки "Прокрутить до ближайшего OnTrade".

Из моего опыта - чаще анализирую почему не открылась сделка/не модифицировалась или не выставилась заявка.

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

Я бы лучше добавил функцию в язык MQL5, которая ставила бы на паузу визуализатор при нужных определённых условиях.

 
fxsaber #:


Однако, при отладке ТС, как правило, анализируются изменения позиций/ордеров. Поэтому просьба подумать о добавлении кнопки "Прокрутить до ближайшего OnTrade".

Тогда можно было бы, нажимая на эту кнопку, быстро переходить к следующим торговым изменениям. И, соответственно, значительно быстрее вести отладку ТС. Спасибо.

Строка для поиска: Uluchshenie 118.

Для отладки было бы лучше сделать настраиваемые условия, - кому-то нужно не ближайший OnTrade, а сделка номер X, например, или срабатывание стоп-лосса.

 
Aleksey Vyazmikin #:
Я бы лучше добавил функцию в язык MQL5, которая ставила бы на паузу визуализатор при нужных определённых условиях.

А DebugBreak() разве не сделает это при отладке на исторических данных?

(я не знаю, я не пользуюсь дебагером)

 
Vladislav Boyko #:

А DebugBreak() разве не сделает это при отладке на исторических данных?

Отладка ТС - это более широкое понятие, чем дебагер.

Да, DebugBreak в режиме дебага на исторических данных остановит выполнение, но GUI-данные визуализатора не будут соответствовать окружению на момент остановки.