Закрытие позиции не по указанной цене

Автор: anothar

Закрытие позиции не по указанной цене - Sat Jan 09 2010 09:00 PM

Закрытие позиции осуществляется по цене на 10 пунктов( по сберу) хуже чем указана. Указанное Проскальзывание -0. Из визуального дизайнера скрипта убрано все, кроме источника и внешнего скрипта. При этом лимитированное открытие позиции осуществляется в точности по указанной цене. Далее привожу простой код кот. это демонстрирует:
double OpenPrice;
double ClosePrice;

for (int i = 2; i < sec.Bars.Count; i++)
{

OpenPrice=sec.OpenPrices[i]+0.2d;
ClosePrice = sec.OpenPrices[i] + 0.1d;
//Long
if (sec.Positions.LastLongPositionActive == null)
sec.Positions.BuyIfGreater(i, 1,OpenPrice ,"Open: "+ OpenPrice.ToString());

//Stop
if (sec.Positions.LastLongPositionActive != null && sec.Positions.LastLongPositionActive.EntryBarNum < i)
sec.Positions.LastLongPositionActive.CloseAtStop(i, ClosePrice, "Close at: " + ClosePrice.ToString());


}
Автор: Nektodron

Re: Закрытие позиции не по указанной цене - Sat Jan 09 2010 11:59 PM

Если был разрыв в ценах между ценой закрытия предыдущей свечи и открытием новой, то закрытие условной заявки будет по цене открытия свечи. Нельзя закрыть позицию по цене, которой не было. Проскальзывание влияет только исполнение скрипта в "живую", на лабораторию не влияет.
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 11:49 AM

Я правильно понимаю, что если я выбрал CloseAtStop и указал бар, то она обязательно закроется именно на этом баре или как? Потому что в приведенном примере всегда идет закрытие по цене открытия, хотя я указал другую цену( при этом закрытие по указанной цене должно по идее произойти внутри бара)
Автор: Nektodron

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 11:58 AM

Нет, выбрав бар вы выставляете на нем условную заявку, и закрытие произойдет только, если диапазон цен этого бара "пересекает" цену условия. Это касается лаборатории.
В реальной жизни, на бар+1 происходит выставление заявки на сервере, и если цена дойдет до цены условия - она сработает. Скрипт об этом узнает, когда бар "закроется".
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 12:10 PM

Тогда вопрос остается открытым: почему закрытие в указанном выше скрипте происходит всегда по цене открытия(указанная цена почти всегда находится внутри бара!)(проверяю на сбер 30 минутки-разрывы между закрытием и открытием бара часто 0)
Автор: Nektodron

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 12:23 PM

Ваш скрипт неправильно написан, BuyIfGreater и CloseAtStop должны быть всегда по i+1, иначе вы по сути смотрите в будующее. Выставляете заявку уже по закрытому (прошедшему) бару. В лаборатории будут неверные результаты.

Что касается цены открытия - у вас явно таки написано:
ClosePrice = sec.OpenPrices[i] + 0.1d;

Однако закрытие по стопу означает, что цена должна равна или ниже указанной (для лонговой позиции). Что и происходит, система видит, что цена открытия всегда НИЖЕ вашей стоп заявки и закрывает ее. Чтобы и происходило, если бы отправили такую заявку на сервер.

Поменяйте на:
ClosePrice = sec.OpenPrices[i] - 0.1d;

Но еще раз повторяю, этот скрипт смотрит в будущее, при выставлении заявок необходимо указывать i+1.
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 12:41 PM

Разве? Почему он смотрит в будущее. Бар открылся и при открытии я (по идее) спокойной могу выставить заявку. Например, у нас открытие рынка. Вы предлагаете ставить заявку на прошлом баре? А тогда было вчерашнее закрытие)))Где логика? То есть вместо стопа мне нужно всегда использовать лимит если я хочу закрыть по указанной цене?
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 12:44 PM

Я честно говоря, не понимаю разницы между i и i++. Разве что результаты отобразятся не так? но и тут я везде укеазываю бар на кот. должно отобразиться. Да и мы же сами пробегаем по i а не лаборатория...
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 12:46 PM

ТО есть читерства в том коде кот я написал нет, ибо подразумевается что мы ставим лимит при открытии бара. Что возможно если цена отделена на разумное расстояние от открытия
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 01:04 PM

Ооо до меня допетрило. Спасибо, Nektodron! Нужно просто разбивать отдельно на профит и лосс. Один закрывается по цене или лучше, другой по цене или хуже.
Автор: Nektodron

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 01:53 PM

читерство в том, что в момент открытия рынка (в 10.30) свечи 10.30 еще нет, она появиться только в 10.31 (для минуток).
Поэтому при тестировании, если вы используете данные из свечи 10.30, то заявку должны выставить в 10.31, если хотите получить достоверные результаты.
Автор: anothar

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 03:35 PM

Понятно. То есть нет даже цены открытия((( Получается что заявки выставляются в момент закрытия свечи...
Автор: Nektodron

Re: Закрытие позиции не по указанной цене - Sun Jan 10 2010 03:42 PM

Ну такова жизнь. Собственно, какая разница есть цена закрытия свечи или открытия новой? Если не брать перерывы между торгами, то между ними разница в один тик, на высоколиквидных бумагах - разница не существенная.