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



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

СообщениеДобавлено: Чт Мар 01, 2012 11:32 am Ответить с цитатой Вернуться к началу

Добрый день, возник вопрос, как можно запустить цикл на другом таймфрейме? Есть базовый таймфрейм, пусть будет минутка, мне надо сжать массив mass до дневок, в цикле посчитать другой массив и использовать его на минутке. Думал использовать

TimeFrameSet(inDaily);
for( i = 1; i < BarCount; i++ )
{
mass[i]=....
Но судя по всему TimeFrameSet(inDaily); работает только для встроенных функций, а для циклов нет, индекс цикла все равно прогоняет все бары минутки.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Мар 01, 2012 1:26 pm Ответить с цитатой Вернуться к началу

Угу.
Длинна массива BarCount не измениться если переключиться на дневки. Проблемма только в этом. Массив дневок должен быть короче чем внутридневной.

Может напишешь что именно хотел посчитать на дневках? Попробуем без цикла.

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



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

СообщениеДобавлено: Чт Мар 01, 2012 2:07 pm Ответить с цитатой Вернуться к началу

Не без у цикла не обойтись, на дневках сигналы лонг шорт формируются на основе данного массива, массив тоже дневной, т.е. на минутках он постоянен в течении дня. Дневные сигналы лонг шорт будут фильтрами на минутке, грубо говоря 2 системы хочу совместить(на дневках и на минутке). Но стратегию на дневках без цикла не написать. Чувствую придется тяжелую артилерию подключать в виде .Net для ами, хотя там тоже пока не понятно как.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Чт Мар 01, 2012 3:10 pm Ответить с цитатой Вернуться к началу

Garry$on писал(а):
на минутках он постоянен в течении дня.

Если постоянен в течении дня, ну, как пивот уровни прошлого дня, то расчитай вечером( ночью) по истории, далее, сохрани в файл, утром Ами прочитает и вперёд. Или
Код:

inter=1440*60;
IntervalH = TimeFrameGetPrice("H", inter, -1);// yesterdays high
IntervalL = TimeFrameGetPrice("L", inter, -1);//            low
IntervalC = TimeFrameGetPrice("C", inter, -1);//            close
IntervalO = TimeFrameGetPrice("O", inter,0);   // current day open
/*Example time intervals in seconds:
tick bars = 0
5 sec bars = 5
1 Min bars = 60 (inMinute constant)
hourly bars = 3600
daily bars = 86400 (inDaily constant)
weekly bars = 432001 (inWeekly constant)
monthly bars = 2160001 (inMonthly constant)
*/

Посмотреть профиль Отправить личное сообщение
Garry$on



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

СообщениеДобавлено: Чт Мар 01, 2012 3:55 pm Ответить с цитатой Вернуться к началу

Понятно , что можно отдельно системы посчитать, скинуть в файл массив сигналов или другие данные и потом подкачать. Но еще не протестировал, как они в связке работать будут, параметры надо оптимизировать и т.д. Т.е. надо цельно как то сделать, чтоб бэктесты проводить и оптимизацию, в ручную не очень хочется.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Мар 01, 2012 9:49 pm Ответить с цитатой Вернуться к началу

Тогда такое предложение. Переключаемся на дневки, берем там нужные массивы цен, переключаемся обратно, потом экспандим цены, потом пишем цикл на внутридевках, но берем значения дневок только в момент начала нового дня и таким макаром считаем стратегию на дневках...
Надеюсь понятно объяснил.

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



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

СообщениеДобавлено: Сб Мар 03, 2012 5:23 pm Ответить с цитатой Вернуться к началу

Спасибо за ответы, все оказалось просто, вопрос решил так, TimeframeCompress inDaily выдает итоговый массив из того же количество элементов что и на текущем таймфрейме, но заполненных там будет столько сколько всего дней, эти заполненные элементы будут в самом конце итогового массива и идут подряд, соответственно первый заполненный элемент и будет началом для индекса нужного цикла, конец цикла как обычно Barcount - 1, затем считаю нужные данные, массивы сигналов и т.д. и использую TimeframeExpand.
Посмотреть профиль Отправить личное сообщение
ZDN



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Ср Мар 21, 2012 8:55 pm Ответить с цитатой Вернуться к началу

Уважаемые коллеги!
Тоже сейчас озадачился подобной конструкцией. Если не сложно выложите код для внутридневного цикла, где используются значения вчерашнего дня (OHLC).
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Мар 21, 2012 9:55 pm Ответить с цитатой Вернуться к началу

Ну вот смотри этот код
Код:

Plot(C, "", colorBlack, styleCandle);

qqq = TimeFrameGetPrice("C", inDaily, -1);
Plot(qqq, "", colorRed);

Тут qqq это вчерашнее закрытие. Можешь спокойно использовать его в цикле. Аналогично можно получить и OHL

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



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Чт Мар 22, 2012 12:01 pm Ответить с цитатой Вернуться к началу

Спасибо, Олег!

Хочу уточнить... у меня не получается внутри тела цикла брать данные с других фреймов с помощью TimeFrameGetPrice. За пределами цикла всё работает, - так и делал ранее, но вот как только переношу в тело цикла, то ami падает и конец всем начинаниям, приходится править код в Program Files\ иначе не запускается ami.

Я не сильно волоку в программировании, но стараюсь. Мне нужно сделать структуру файла - алгоритм робота, который автоматом бы брал данные с других фреймов и использовал бы их внутри фильтра. Может я не до конца понимаю еще работу цикла в ами при реальной торговле, но мне кажется, что если запущен код и в коде появился цикл, в котором идет перебор баров (значения последнего бара меняются каждую секунду, у меня рабочий фрейм 5 мин), то цикл будет крутится до тех пор, пока я не отключу робота и соответственно данные с другого фрейма не поменяются до отключения робота, если TimeFrameGetPrice будет не в теле цикла .... или это не так???
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Мар 22, 2012 12:10 pm Ответить с цитатой Вернуться к началу

Не так.
Вл первых не надо функции работы с временными интервалами пихать внутрь цикла. Сначала получай нужные цены за пределами цикла а потом работай с ними в цикле.

Код AFL прогоняется один раз (в случае с роботом с заданной переодичностью) и изменение последней цены никак на его работу не влияют. Он просто берет текущую цену которая актуальна в тот момент когда AFL добрался до конца цикла.

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



Зарегистрирован: 13.01.2011
Сообщения: 27
Откуда: Severodvinsk

СообщениеДобавлено: Чт Мар 22, 2012 2:02 pm Ответить с цитатой Вернуться к началу

Получается что если рабочий фрейм 5 мин., то робот будет проходить код не чаще, чем один раз в 5 минут и ничего с этим поделать нельзя если я буду делать связку с помощью, например, плагина AS_QuikTrade или продукта с этого ресурса http://www.traderassistant.ru?
Еще вопрос - при тестировании в бэктестере нужно придерживаться того же подхода (выносить работу с др. фреймами за приделы тела цикла), что и при торговле роботом?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Мар 22, 2012 2:12 pm Ответить с цитатой Вернуться к началу

Если робот работает в АА, то он запускается так часто, как установишь в настройках Run Every. Минимальное время 1 секунда.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen