Автор |
Сообщение |
sLy
Зарегистрирован: 28.07.2012
Сообщения: 41
|
Олег, привет,
Есть вот какой вопрос
Требуется из кода АА в режимах бэктеста/оптимизации вызывать функцию Excel и возвращать результат расчетов в Ami
Как работать с wsh/vba в целом разобрался, однако чтобы вызвать функцию Excel ей требуется передать массив значений цены
При этом передать требуется не весь массив базы, а только ту его часть, которая в данный момент ограничена в настройках бэктестера/wf-оптимизатора, чтобы Excel считал только по тому набору свечей, с которым в данный момент работает бэктестер
Вопрос: как из кода узнать установленный в настройках бэктестера интервал свечей и присвоить его какой-либо переменной-массиву Ami, чтобы передать эту переменную как входной параметр для функции Excel? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если я правильно понял вопрос, то по моему, никак нельзя.
Вот есть общий массив цены. Даже если ты оставишь кусок этого массива, а остальным элементам присвоишь Null, то длинна массива от этого не измениться и передашь ты длинный массив.
Кроме того из AFL никак не узнать даты начала и конца теста (или я забыл такой способ)
Можно правда запустить тест из стороннего скрипта (через OLE) и при этом задать границы. Тогда, разумеется в этом скрипте будут известны границы.
Код: |
Analysis.RangeFromDate - defines "From" date
Analysis.RangeToDate - defines "To" date
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sLy
Зарегистрирован: 28.07.2012
Сообщения: 41
|
Здесь основная идея вот в чем
Когда работаешь с бэктестером, ожидаешь, что все его компоненты (включая вызываемые внешними скриптами) работают с одним массивом (интервалом, набором свечей)
То есть ставим, к примеру, 30 свечей в настройках бэктестера, запускаем тест
В ходе выполнения ожидаем, что компоненты внешнего скрипта тоже работают с 30 свечами, а не с массивом С, равным всем ценам закрытия базы данных
Чтобы компоненты внешнего скрипта так делали, им надо как-то сказать, что свечей 30, то есть передать в качестве входного параметра для обработки
Вот вопрос в том как во внешний скрипт сказать "сейчас работаю с 30 свечами, вот тебе 30 свечей, считай", "а вот сейчас работаю с января по май, вот тебе 1200 свечей, считай" |
|
|
Посмотреть профиль Отправить личное сообщение |
|
sLy
Зарегистрирован: 28.07.2012
Сообщения: 41
|
Олег,
Возникла мысль
А не получается ли так, что когда в настройках бэктестера (или wf-оптимизатора) ставишь "с января по май" бэктестер при запуске (или wf-оптимизатор при запуске конкретного шага) встроенным массивам OHLCV присваивает четко значения заданного в настройках интервала, то есть первое значение массива С будет 1 января, последнее значение 31 мая?
Тогда это решает вопрос - можно просто передавать внешнему скрипту для расчета массивы OHLCV
Как думаешь? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Думаю, что нифига. В режиме explore наверняка не так. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sLy
Зарегистрирован: 28.07.2012
Сообщения: 41
|
Да, проверил, ты прав
В режиме бэктеста последняя свеча массива С равна последней в базе, даже если выставлен конкретный период тестирования
Ну это засада, как тогда скрипту-то говорить что считать!?
Выставил период в настройках, запустил бэктестер считать на этом периоде, а внешнему скрипту свечи этого периода отдать в расчет не можешь...
Мда, буду думать дальше |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|