Обсуждение статьи "Контроль наклона кривой баланса во время работы торгового эксперта" - страница 4

 

solandr:

Провёл следующий эксперимент. Поставил счётчик на срабатывание уменьшенного лота по каждой валютной паре. И провёл тестирование во всех комбинациях тестирования на М1 OHLC. Вот результат.  

35 0 0 - тестирование только на первой паре

0 36 0 - тестирование только на второй паре

0 0 168 - тестирование только на третьей паре

36 35 0 - тестирование на первой и второй парах

0 35 162 - тестирование на второй и третьей парах 

35 35 166 - тестирование на всех трёх парах

Хотя по идее должно получаться 35 36 168 при тестировании на всех трёх парах.

 

Завтра попробую прогнать советник на всех тиках для сравнения. 

Если правильно Вас понял, - различается число сделок? Так каким образом на это может влиять размер лота?

 
Dima_S:

Если правильно Вас понял, - различается число сделок? Так каким образом на это может влиять размер лота?

Нет, суммарное количество сделок по 3м валютным парам одновременно соответствует сумме сделок при отдельных прогонах.

В результатах приведены количества открытия ордеров с уменьшенным лотом. 

Сейчас ещё гоняю советник. Пытаюсь понять что это в итоге меняет результаты при суммарном прогоне. Попозже напишу сообщение.

Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
solandr:

Нет, суммарное количество сделок по 3м валютным парам одновременно соответствует сумме сделок при отдельных прогонах.

В результатах приведены количества открытия ордеров с уменьшенным лотом. 

Сейчас ещё гоняю советник. Пытаюсь понять что это в итоге меняет результаты при суммарном прогоне. Попозже напишу сообщение.

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

Как-то так.

 
Dima_S:

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

Как-то так.

В принципе мысль хорошая. Под МТ4 я даже использую специальную программу Spread Changer, которая позволяет задать спред для тестирования произвольным образом. и результаты не плавают.

Под МТ5 пока такого не встречал (может плохо искал). Было бы просто замечательно если бы в будущих релизах терминала разработчики встроили такую функцию в тестер для желающих. 

 
solandr:

В принципе мысль хорошая. Под МТ4 я даже использую специальную программу Spread Changer, которая позволяет задать спред для тестирования произвольным образом. и результаты не плавают.

Под МТ5 пока такого не встречал (может плохо искал). Было бы просто замечательно если бы в будущих релизах терминала разработчики встроили такую функцию в тестер для желающих. 

В идеале, не помешал бы простой импорт из csv-файла котировок для тестирования. Но, идеал пока не достижим))
 

Погонял советник на всех тиках. Получил такие результаты:

При отключенном управлении баланса прибыль на прогонах: 

0 0 0 6702,44 первая пара

0 0 0 5735,78 вторая пара

0 0 0 3461.48 третья пара

0 0 0 15901,66  все три пары - Должно было получиться 15899,7. Разница 1,96

 

С включенным управлением лотом прибыль на прогонах: 

35 0 0 = 6550,94

0 36 0 = 6956,95

0 0 184 = 3386.44

35 36 179 = 15991.56 - Должно было получиться 16894,33. Разница 902,77

 

Как видно при отключенном автобалансе тоже есть разница, но она обычно микроскопична. При включении контроля лотом разница весьма заметна 5,3% (за счёт разного количества срабатываний уменьшенного лота). Как интересно тут проводить оптимизацию параметров? Какой выход можно придумать?

Каждый прогон на всех тиках занимает  примерно 20-30 минут.

Собираюсь поставить ещё вот такой эксперимент. Взять какой-нибудь простой советник, прикрутить туда систему контроля лота и посмотреть на предмет разницы по прогонам. 

 

Кстати при компиляции файла mqh из статьи получаю вот такие вот сообщения:

possible loss of data due to type conversion BalanceSlopeControl.mqh 117 25
possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21
declaration of 'current_slope' hides member declaration at line 682 BalanceSlopeControl.mqh 909 9
0 error(s), 3 warning(s)  1 4
 

Я их в самом начале подправил. Первые два - указал тип приведения. А третье сообщение подправил с помощью корректировки имени сcurrent_slope в 909 строке и соответствующей корректировкой далее в double TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots ) 

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

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
solandr:

Погонял советник на всех тиках. Получил такие результаты:

...

Как видно при отключенном автобалансе тоже есть разница, но она обычно микроскопична.

Добейтесь идентичных результатов во всех режимах при тестировании на любом символе.

Для этого  работайте либо по тикам всех символов, либо по таймеру. и контролируйте появление нового бара на всех инструментах.

Баланс расходиться не должен ни на цент. 

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
solandr:

Кстати при компиляции файла mqh из статьи получаю вот такие вот сообщения:

possible loss of data due to type conversion BalanceSlopeControl.mqh 117 25
possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21
declaration of 'current_slope' hides member declaration at line 682 BalanceSlopeControl.mqh 909 9
0 error(s), 3 warning(s)  1 4
 

Я их в самом начале подправил. Первые два - указал тип приведения. А третье сообщение подправил с помощью корректировки имени сcurrent_slope в 909 строке и соответствующей корректировкой далее в double TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots ) 

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

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

Файлы:
 
Dima_S:

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

Спасибо за новую версию файла!

Сравнение содержимого файла с файлом из статьи показывает несколько отличий в новом файле в строках 37, 115, 116, 907, 966.

Посмотрим насколько эти изменеия могут оказать влияние на советник