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



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

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

Олег, привет,


Размышляю над рядом вопросов, в ходе изучения материалов не получилось найти решение, решил обратиться за помощью

2 вопроса по тестеру, один по роботу, чтобы не множить посты размещаю в одном сообщении

----------------------------------
1. вопрос по тестеру

Ситуация следующая

Открыта структурная позиция лонг/шорт из нескольких бумаг, позицию следует считать одним логическим целым, закрывать бумаги по отдельности нельзя, открывать/закрывать можно только все бумаги сразу

Требуется закрыть позицию в полном объеме по applystop как только эквити просядет на определенный процент

Если правильно понимаю, сложность в том, что тестер проходит бумаги последовательно, поэтому если на одной из бумаг будет зафиксирован сигнал по стоплоссу, тестер может закрыть данную бумагу, но не остальные

Можно было бы в этот момент записать сигнал в переменную, проверить данную переменную на следующем проходе и закрыть остальные бумаги, но тогда это будет на следующей свече, а свечи бывают длинные по времени (скажем, дневные), то есть так не пойдет

Вопрос: Есть идеи как при получении сигнала на просадку эквити на текущей свече закрыть все бумаги сразу?

----------------------------------
2. вопрос по тестеру

Есть индикатор, в нем код, который рисует на чарте несколько графиков через Plot/PlotOHLC

Но рисует только в данном индикаторе, а нужно часть Plot рисовать в соседнем окне (другом индикаторе)

Дублировать код в другой индикатор 1. неудобно, потому что он часто меняется (придется в двух местах изменять) 2. нагружает железо расчетами в двойном объеме (амиброкер тормозит)

Вопрос: можно ли из одного и того же кода рисовать Plot в разных индикаторах?

----------------------------------
3. вопрос по роботу ami-quik

По умолчанию робот выставляет лимитную заявку с отступом в размере Otstup.

Если правильно понимаю, робот делает это через синхронный вызов API квика

Другими словами, если квик по какой-то причине не может исполнить заявку (связи с сервером нет, цена резко сместилась больше Otstup), то квик, пока не истечет какой-то таймаут, ничего не отвечает (пытается исполнить)

Вопросы вот какие:

1. сколько времени ждет (пытается исполнить заявку) квик, прежде чем ответить "заявка не исполнена"
2. можно ли определить по коду возврата квика на выполненный вызов разницу "заявку не принял"/"заявку принял, но на биржу не выставил"/"заявку принял, выставил, получил подтверждение исполнения"/"заявку принял, выставил, получил подтверждение исполнения, но исполнил не в полном объеме"
3. правильно понимаю, что поскольку вызовы синхронные, то пока один вызов не исполнится, другой не начинается (то есть если бумаг много, то бумаги открываются/закрываются строго последовательно, одновременно выполняемые синхронные вызовы невозможны)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Отвечу пока на 2 и 3.
2.
Увы. К сожалению нельзя из одного кода рисовать на 2 окна.
3
Цитата:
1. сколько времени ждет (пытается исполнить заявку) квик, прежде чем ответить "заявка не исполнена"

Я не знаю. В документации этого нет, а сам я с Квиком не работаю.
Цитата:
2. можно ли определить по коду возврата квика на выполненный вызов разницу "заявку не принял"/"заявку принял, но на биржу не выставил"/"заявку принял, выставил, получил подтверждение исполнения"/"заявку принял, выставил, получил подтверждение исполнения, но исполнил не в полном объеме"

В данной реализации Квик про стоп зявку вообще ничего не сообщает. Он выставляет и если заявка принята, то Квик говорит ее номер. Все. Больше он ничего не говорит.
Квик через АПИ вообще может возвращать только
#define TRANS2QUIK_SUCCESS 0
#define TRANS2QUIK_FAILED 1
#define TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND 2
#define TRANS2QUIK_DLL_VERSION_NOT_SUPPORTED 3
#define TRANS2QUIK_ALREADY_CONNECTED_TO_QUIK 4
#define TRANS2QUIK_WRONG_SYNTAX 5
#define TRANS2QUIK_QUIK_NOT_CONNECTED 6
#define TRANS2QUIK_DLL_NOT_CONNECTED 7
#define TRANS2QUIK_QUIK_CONNECTED 8
#define TRANS2QUIK_QUIK_DISCONNECTED 9
#define TRANS2QUIK_DLL_CONNECTED 10
#define TRANS2QUIK_DLL_DISCONNECTED 11
#define TRANS2QUIK_MEMORY_ALLOCATION_ERROR 12
#define TRANS2QUIK_WRONG_CONNECTION_HANDLE 13
#define TRANS2QUIK_WRONG_INPUT_PARAMS 14
Цитата:
3. правильно понимаю, что поскольку вызовы синхронные, то пока один вызов не исполнится, другой не начинается (то есть если бумаг много, то бумаги открываются/закрываются строго последовательно, одновременно выполняемые синхронные вызовы невозможны)

Да.

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



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

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

Олег, принял, спасибо!

Очень ожидаю комментарий по п.1

Дополнительно хотел уточнить еще один момент.

Решаю задачу определения коэффициентов k1 и k2 уравнения

y=k1*x1 + k2*x2, где у,x1,x2 массивы цен инструментов (множественная линейная регрессия)

Решаю данную задачу в Excel функцией ЛИНЕЙН

Что очень неудобно, поскольку переносить результаты расчетов из Excel в ами приходится вручную

В ами кроме LinRegSlope, LinRegIntercept ничего на эту тему на нашел, но, если правильно понял, эти функции для решения указанной задачи не подходят

Может, кто-нибудь из западного сообщества amibroker составлял код/индикатор для решения задачи? Потому что для расчета корреляции двух массивов цен даже встроенная функция correlation есть (вместе с описанием реализации на afl), а тут несложнее задача.

Вопрос: можно ли решать уравнения указанного выше вида в ами? Или хотя бы как-нибудь обращаться из кода ами в Excel за результатами расчетов.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

На первый вопрос.
Это придется использовать Porfolio Backtester Interface.
Посмотри в хелпере и скачай вот такую почиталку
http://www.amibroker.com/docs/Houston2.pdf

Там обрати внимание на пример
Ex 2: Mid-level - pos. sizing
based on portfolio eq.

Это работа с позициями на основе эквити портфеля.
Не очень просто.

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


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

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

По вопросу о линейной регрессии. Напиши подробнее что именно делаешь. Я нифига не знаю что такое множественная линейная регрессия

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


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

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

Брр. Почитал про множественную регрессию...
Проще брать из екселя.
Посмотри тут
http://finance.groups.yahoo.com/group/amibroker/message/164131

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



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

СообщениеДобавлено: Вс Май 05, 2013 6:40 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Брр. Почитал про множественную регрессию...
Проще брать из екселя.
Посмотри тут
http://finance.groups.yahoo.com/group/amibroker/message/164131



Олег, принял, спасибо!

По линейной регрессии, простой и сложной, внятно изложено http://en.wikipedia.org/wiki/Regression_analysis

Ами умеет искать коэффициент b простой линейной регрессии y=a + b * x встроенной процедурой LinRegSlope (в примере в справке рисует линию регрессии на чарте). Думал, кто-нибудь из сообщества abmibroker приспособил процедуру для нахождения коэффициентов множественной линейной регрессии y=а + b1 *x1 + b2 * x2 + bN * xN.

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

Получается, простого решения нет, ну и ладно, значит, придется пробовать сложный способ

Сейчас не осилю, времени нет, пока буду продолжать вручную делать, а как надоест, начну изучать вопрос интеграции с excel (по ссылке, что ты прислал, вроде есть возможность сделать)

Еще раз спасибо!
Посмотреть профиль Отправить личное сообщение
belin



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

СообщениеДобавлено: Пн Май 06, 2013 11:59 am Ответить с цитатой Вернуться к началу

sLy писал(а):


Есть индикатор, в нем код, который рисует на чарте несколько графиков через Plot/PlotOHLC
Но рисует только в данном индикаторе, а нужно часть Plot рисовать в соседнем окне (другом индикаторе)
Дублировать код в другой индикатор 1. неудобно, потому что он часто меняется (придется в двух местах изменять) 2. нагружает железо расчетами в двойном объеме (амиброкер тормозит)

Вопрос: можно ли из одного и того же кода рисовать Plot в разных индикаторах?


Если только рисовать во втором окне, то можно после прорисовки в первом окне сохранить прорисованные массивы через StaticVarSet
Код:

temp = Nz(temp) + C/2;

// at the end of the formula store to static
StaticVarSet("mystaticarray", temp );

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


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

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

belin писал(а):

Если только рисовать во втором окне, то можно после прорисовки в первом окне сохранить прорисованные массивы через StaticVarSet

Точно! Красава!
А я не сообразил, блин.

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



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

СообщениеДобавлено: Пн Май 06, 2013 1:13 pm Ответить с цитатой Вернуться к началу

Сейчас сам порисовал, самому стало интересно.
Интересная особенность: Если в первом окне, где считается индикатор на базовом 1-минутном таймфрейме, стоит
SetBarsRequired(sbrAll,sbrAll);
то во втором окне индикатор рисуется на всей истории (у меня 60000 минуток) и на любых старших таймфреймах. Можно на 15 минутках нарисовать индикатор с минуток, только нужно, чтобы первое окно было открыто постоянно, иначе расчёт засыпает и индикатор вытягивается в горизонтальную линию. Амиброкер 5.40.3. Может быть весьма полезно.
Посмотреть профиль Отправить личное сообщение
sLy



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

СообщениеДобавлено: Пн Май 06, 2013 7:48 pm Ответить с цитатой Вернуться к началу

Спасибо, попробую!
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen