Автор |
Сообщение |
DenCommander
Зарегистрирован: 07.04.2013
Сообщения: 2
|
Извиняюсь может быть за тупой вопрос, но за 2 часа на форуме не нашел ответа.
Есть график акции (вкладка А). Жмем new alalysis window. открывается новая вкладка Б, в которой я редактирую свой файл afl и в нем формирую все что мне надо. у меня получаются свои переменные/массивы которые мне нужно вывести на соседнюю вкладку (Вкладку А), в которой у меня сам график акции. я понимаю что можно еще раз в том окне - во вкладке А вызвать edit formula и продублировать код, и заново, с нуля, в том окне рассчитать все переменные и массивы, но это же неправильно как-то. Ведь они уже рассчитаны в АА. можно ли обратиться из окна графика (А) к результатам анализа, вернее к моим переменным, объявленным в коде из анализатора (Б) ? я вижу, что к ПАРАМЕТРАМ анализа (например from-to dates) можно достучаться через команду STATUS(), но она получает кучу полезного, но не мои переменные и массивы из анализа. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Анализ это анализ, вывод на график это вывод на график. Это разные коды. Лично я предпочитаю не смешивать.
Да и изменить не трудно.
Убираем AddColumn(), добавляем Plot(). |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DenCommander
Зарегистрирован: 07.04.2013
Сообщения: 2
|
Хм. В таком случае, оказалось что нужно вовсе не "просто продублировать код". У меня в коде анализа перебираются все бары от 1 по barcount, строится массив уровней (цен) входа и выхода. Но они могут быть рассчитаны только с самого первого бара, т.е. чтобы рассчитать уровень 5-го входа надо знать уровень 4-го, а чтобы рассчитать уровень 4-го входа надо знать уровень 3 и т.д. В общем, нужно иметь весь массив цен и прогонять его циклом от 1 до последнего бара. В АА это делается 1 раз, а на чарте код выполняется при каждом движении ползунка, причем я не знаю как обратиться к барам, которые находятся намного раньше первого отображаемого в окне бара, потому что barindex()[0] возвращает уже не нулевой бар в базе, а хрен пойми какой. Здесь на форуме я обнаружил ответ как найти абсолютный номер текущего бара: BarBaseIndex = Status("quickaflfirstdatabar") + BarIndex() и я теперь знаю что 1-й элемент barindex()а в данный момент это 1100 элемент всей базы, но как обратиться к 500му элементу базы? И можно ли сделать так, чтобы мой массив рассчитался 1 раз, а не рассчитывался при каждом движении ползунка графика, иначе, я так понимаю, скроллиться график будет просто вечность.
(UPD) Ага, увидел что рекомендуют использовать SetBarsRequired( sbrAll, sbrAll ). Да? Или есть другие способы заглядывания ниже нулевого элемента в barindex() ?
Вопрос про расчет моей формулы 1 раз, а не при каждом скроллинге остается открытым
UPD2 ура, нашел все что нужно. Можно получить переменную из бэктеста. Нужно использовать AddToComposite().Решаются обе проблемы - не надо использовать SetBarsRequired а значит не падает быстродействие отображения графиков и не нужно заново пересчитывать переменные в чартах да еще и тратить время на их пересчет при скроллинге.
/* AddToComposite statements are for Automatic Analysis -> Scan */
/* add Close price to our index OHLC fields */
AddToComposite(Close, "~MyIndex", "X" );
/* add one to open intest field (we use this field as a counter) */
AddToComposite( 1, "~MyIndex", "I" );
buy = 0; // required by scan mode
/* this part is for Indicator */
graph0 = Foreign( "~MyIndex", "C" )/Foreign( "~MyIndex", "I" ); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да, совершенно верною В таком случае AddToComposite() это то, что надо. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|