Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Вывод на график результатов анализа Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
DenCommander



Зарегистрирован: 07.04.2013
Сообщения: 2

СообщениеДобавлено: Ср Апр 24, 2013 8:54 pm Ответить с цитатой Вернуться к началу

Извиняюсь может быть за тупой вопрос, но за 2 часа на форуме не нашел ответа.
Есть график акции (вкладка А). Жмем new alalysis window. открывается новая вкладка Б, в которой я редактирую свой файл afl и в нем формирую все что мне надо. у меня получаются свои переменные/массивы которые мне нужно вывести на соседнюю вкладку (Вкладку А), в которой у меня сам график акции. я понимаю что можно еще раз в том окне - во вкладке А вызвать edit formula и продублировать код, и заново, с нуля, в том окне рассчитать все переменные и массивы, но это же неправильно как-то. Ведь они уже рассчитаны в АА. можно ли обратиться из окна графика (А) к результатам анализа, вернее к моим переменным, объявленным в коде из анализатора (Б) ? я вижу, что к ПАРАМЕТРАМ анализа (например from-to dates) можно достучаться через команду STATUS(), но она получает кучу полезного, но не мои переменные и массивы из анализа.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Апр 24, 2013 9:29 pm Ответить с цитатой Вернуться к началу

Нет. Анализ это анализ, вывод на график это вывод на график. Это разные коды. Лично я предпочитаю не смешивать.
Да и изменить не трудно.
Убираем AddColumn(), добавляем Plot().

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DenCommander



Зарегистрирован: 07.04.2013
Сообщения: 2

СообщениеДобавлено: Чт Апр 25, 2013 9:30 am Ответить с цитатой Вернуться к началу

Хм. В таком случае, оказалось что нужно вовсе не "просто продублировать код". У меня в коде анализа перебираются все бары от 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

СообщениеДобавлено: Чт Апр 25, 2013 10:45 am Ответить с цитатой Вернуться к началу

Да, совершенно верною В таком случае AddToComposite() это то, что надо.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen