Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1154

 
SEM:

Пытаюсь нормализовать TakeProfit для Sell

SYMBOL_DIGITS - это тоже константа. Она НЕ возвращает значения "количество знаков после запятой в котировке символа". Она указывает функции SymbolInfoInteger() какое значение целочисленного свойства символа необходимо вернуть.
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
 
Artyom Trishkin:
SYMBOL_DIGITS - это тоже константа. Она НЕ возвращает значения " количество знаков после запятой в котировке символа". Она указывает функции SymbolInfoInteger() какое значение целочисленного свойства символа необходимо вернуть.

Хорошо, тогда как нормализовать ТП для Sell?

  Print(NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_POINT),(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)));

тоже возвращает непонятно что = (EURUSD,M15)    1e-05
 

 
SEM:

Хорошо, тогда как нормализовать ТП для Sell?

тоже возвращает непонятно что = (EURUSD,M15)    1e-05
 

1е-05 это единица в минус пятой степени, то-есть 0.00001. Чему вас учили в старших классах школы???

 
SEM:

Хорошо, тогда как нормализовать ТП для Sell?

тоже возвращает непонятно что = (EURUSD,M15)    1e-05
 

Для робота вы нормализовали.

Для вывода в принты нужно использовать DoubleToString

 Print(DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_POINT),(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)));
 
Vitaly Muzichenko:

Для робота вы нормализовали.

Для вывода в принты нужно использовать DoubleToString

Спасибо за помощь! В итоге:

double _SYMBOL_POINT_ = SymbolInfoDouble(Symbol(),SYMBOL_POINT);
int _SYMBOL_DIGITS_   = (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS);


{
  double _PriceCurrent_TakeProfit =NormalizeDouble(m_position.PriceOpen()-(TakeProfit*_SYMBOL_POINT_),_SYMBOL_DIGITS_) ;
  double _PriceCurrent=NormalizeDouble(m_position.PriceCurrent()-(TakeProfit*_SYMBOL_POINT_),_SYMBOL_DIGITS_);
}
 
Franklins100:

Это идея, но перекрестное тестирование не даст точных результатов, на мой взгляд. Тестирование, опять таки на мой неопытный взгляд, должно проводится в конечном, цельном варианте. И тут сразу вопрос - как и благодаря каким параметрам компьютера можно максимально ускорить тестирование, не прибегая к использованию сторонних мощностей. GPU или CPU?

Перекрёстное тестирование даёт такойже точный результат как и прямое. Если понимать все переменные то при разбивке на группы указываете приемлемый шаг для переменных. Потом по итогу прогонов тестов в зависимости от картинки 3Д по результатам можно выделить одну или несколько групп значений для кагдой группы переменных. И в итоге запускаете полный тест но уже с узким разбросом и высокой дискретностью параметров.

Я так прогоняю один советник каждую субботу. Более 300 переменных. В течении дня прогоняю перекрёстные тесты. И на ночь ставлю основной. В воскресенье уже результат анализирую. Смотрю что изменилось по сравнению с набором прошлой недели. Ну и там уже по ситуации иногда доп тесты врубаю. Всё кручу на двух компах.

В итоге уходит гдето 30 машино часов. Если на прямую врубать то думаю комп бы завис :) недели на две. Тут уж хощ ни хош выкручиваешся как можеш.

На скорость тестов влияет ядерность процессора (для мт5 точно).

На самые первые тесты ушло много времени. Теперь тока прогоняю последнюю неделю. Думаю у каждого советника свои премудрости. Я просто ввёл коэфициенты и основные параметры меняются очень редко. Получается что идёт подстройка под волантильность в основном. Плюсом серьёзный новостной модуль с индивидуальной разбивкой по типам новостей а не тупо три звезды :) Вообще думаю "новости" это самое слабое место у всех советников торговых. А ещё же есть периоды "смена контрактов", "опционные экспирации". С ними тоже работать есть резон.

 
Franklins100:

Это идея, но перекрестное тестирование не даст точных результатов, на мой взгляд. Тестирование, опять таки на мой неопытный взгляд, должно проводится в конечном, цельном варианте. И тут сразу вопрос - как и благодаря каким параметрам компьютера можно максимально ускорить тестирование, не прибегая к использованию сторонних мощностей. GPU или CPU?

Есть тема про тесты: Оцениваем ядра CPU для оптимизации

Оцениваем ядра CPU для оптимизации
Оцениваем ядра CPU для оптимизации
  • 2019.08.09
  • www.mql5.com
Предлагаю собрать статистику по производительности разных процессоров с целью оценки их эффективности для работы тестера стратегий в режиме оптимиз...
 
Vladimir Karputov:

Есть тема про тесты: Оцениваем ядра CPU для оптимизации

BenditO:

Перекрёстное тестирование даёт такойже точный результат как и прямое. Если понимать все переменные то при разбивке на группы указываете приемлемый шаг для переменных. Потом по итогу прогонов тестов в зависимости от картинки 3Д по результатам можно выделить одну или несколько групп значений для кагдой группы переменных. И в итоге запускаете полный тест но уже с узким разбросом и высокой дискретностью параметров.

Я так прогоняю один советник каждую субботу. Более 300 переменных. В течении дня прогоняю перекрёстные тесты. И на ночь ставлю основной. В воскресенье уже результат анализирую. Смотрю что изменилось по сравнению с набором прошлой недели. Ну и там уже по ситуации иногда доп тесты врубаю. Всё кручу на двух компах.

В итоге уходит гдето 30 машино часов. Если на прямую врубать то думаю комп бы завис :) недели на две. Тут уж хощ ни хош выкручиваешся как можеш.

На скорость тестов влияет ядерность процессора (для мт5 точно).

На самые первые тесты ушло много времени. Теперь тока прогоняю последнюю неделю. Думаю у каждого советника свои премудрости. Я просто ввёл коэфициенты и основные параметры меняются очень редко. Получается что идёт подстройка под волантильность в основном. Плюсом серьёзный новостной модуль с индивидуальной разбивкой по типам новостей а не тупо три звезды :) Вообще думаю "новости" это самое слабое место у всех советников торговых. А ещё же есть периоды "смена контрактов", "опционные экспирации". С ними тоже работать есть

Спасибо, Вам огромное.

 

Всем доброго дня!

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

Неужели и в Справочнике MQL5 тоже есть неточности? Подскажите, пожалуйста, что нужно исправить в коде (да и в самом Справочника MQL5 не помешало бы), чтобы не появлялось данное предупреждение?

С уважением, Владимир.




Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
MrBrooklin:

Всем доброго дня!

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

Неужели и в Справочнике MQL5 тоже есть неточности? Подскажите, пожалуйста, что нужно исправить в коде (да и в самом Справочника MQL5 не помешало бы), чтобы не появлялось данное предупреждение?

С уважением, Владимир.

Да, в справке бывают неточности.

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