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

 
costy_:

Наклон конечно важен, но от угла (количественно) что нить зависит?

Можно скользящую среднюю от баланса сообразить,

во время направления вниз запрещать_торг./мин.лот вверх разрешать/мах.лот

(на практике в единичных случаях работает).

Пролистайте в голове данную кривую баланса по углу...

Наверное, Вы не очень внимательно прочитали статью.

Ни от угла (количественно), ни от наклона (качественно) - не зависит ровным счетом ничего.

Насчет средней - это примерно тоже самое, что и ЛР - вид в профиль))

 

Отличнейшая статья! Большое спасибо!

 Вот решил прикрутить к своему советнику. Но столкнулся с какими-то проблемами, которые не могу решить уже некоторое время.

Советник работает одновременно по трём валютным парам. На каждой паре идёт управление с помощью предложенной системы с индивидуальными настройками для каждой валютной пары (параметр TradesNumberToCalcLR разный для каждой пары). В целях проверки запускаю советник для работы по отдельным парам. Записываю итоговый баланс за определённый промежуток времени в тестере. Затем складываю балансы на трёх валютных парах и запускаю советник на прогон на всех трёх валютных парах одновременно. Получаю результат, который почему-то расходится с суммой балансов при запуске по  валютным парам по отдельности. Хотя очевидно, что такого не должно быть (все возможные влияния маржинальных требований гарантированно устранены). Моё предположение состоит в том, что возможно при управлении наклоном баланса система просматривает массив сделок размера TradesNumberToCalcLR не по задаваемому инструменту, а по совокупности инструментов. То есть сделки с других валютных пар оказывают влияние на управляемый инструмент, уменьшая количество сделок заданного инструмента в анализируемом массиве.

 

Вроде со своей стороны сделал всё необходимое. Перед каждым расчётом лота вставляю в код

BalanceControl.SetTradeSymbol(symbol_to_trade[i]);
BalanceControl.RefreshSymbolInfo();
BalanceControl.SetSlopePoints(TradesNumberToCalcLR[i]);
current_lots = BalanceControl.CalcTradeLots(RejectedLots, v_calc);

Уже не знаю где у себя в коде смотреть ещё. Придётся разбираться с самой библиотекой, если автор не откликнется.

 

 
solandr:

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

А работа по тикам? Если сделать по таймеру или по тикам всех валют - результат тоже отличается?
 
komposter:
А работа по тикам? Если сделать по таймеру или по тикам всех валют - результат тоже отличается?

Работа происходит в функции OnTick(). Тестировал советник на M1 OHLC. Расчёт индикаторов осуществляется 1 раз в час при обязательном контроле синхронизации часовых баров. Для расчёта используется предыдущий часовой бар. Текущий часовой бар в расчётах не участвует. Открытие позиции по каждой валюте возможна только один раз в час. При этом на 0, 1 и 2 минуте каждого часа эксперт "отдыхает".

 

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

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

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

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

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

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

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

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

 

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

 

solandr:

Советник работает одновременно по трём валютным парам. На каждой паре идёт управление с помощью предложенной системы с индивидуальными настройками для каждой валютной пары (параметр TradesNumberToCalcLR разный для каждой пары). В целях проверки запускаю советник для работы по отдельным парам. Записываю итоговый баланс за определённый промежуток времени в тестере. Затем складываю балансы на трёх валютных парах и запускаю советник на прогон на всех трёх валютных парах одновременно. Получаю результат, который почему-то расходится с суммой балансов при запуске по  валютным парам по отдельности. Хотя очевидно, что такого не должно быть (все возможные влияния маржинальных требований гарантированно устранены). Моё предположение состоит в том, что возможно при управлении наклоном баланса система просматривает массив сделок размера TradesNumberToCalcLR не по задаваемому инструменту, а по совокупности инструментов. То есть сделки с других валютных пар оказывают влияние на управляемый инструмент, уменьшая количество сделок заданного инструмента в анализируемом массиве.

Посмотрел текст еще раз на предмет выделенного - там все в порядке - из истории берутся только сделки по заданному символу.

Возможно, такой эффект дают какие-то особенности тестера. Так понимаю, что различия не значительные?

 

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-файла котировок для тестирования. Но, идеал пока не достижим))
Причина обращения: