Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Вт Дек 20, 2011 2:52 pm Заголовок сообщения: Buy-Limit ордер в стратегии |
цитата |
|
Выставляю в стратегии buy-limit ордер на открытие длинной позиции.
При прогоне на истории ордер исполняется когда до установленного limit доходит цена ПРОДАЖИ а не ПОКУПКИ.
При переводе стратегии в автомат ордер исполняется как и положено, то есть когда limit-а достигает цена ПОКУПКИ.
Как подправить симулятор чтоб не врал?
|
|
Вернуться к началу |
|
Admin Site Admin
Зарегистрирован: 01.01.1970 Сообщения: 249
|
Добавлено: Пт Дек 23, 2011 2:31 pm Заголовок сообщения: |
цитата |
|
А точный вид скрипта можете привести или это "коммерческая тайна"? Если так, то может в асю или на почту, чтобы наши разработчики могли глянуть?
|
|
Вернуться к началу |
|
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Вс Дек 25, 2011 6:00 pm Заголовок сообщения: |
цитата |
|
До состояния "Коммерческой тайны" пока еще не дорос
Скрипт прилагаю здесь.
Сигнал использовался в стратегии на паре EUR/USD,15min, Спред на покупку=0, Спред на продажу=4.
Несоответствие истории и авт.режима замечал при исполнении ордеров Buy-Limit и ExitSort-Limit. C Sell-Limit и ExitLong-Limit вроде всё в порядке.
Если научите как это сделать - могу дополнительно прислать скриншоты.
Спасибо за поддержку.
Description: |
|
Download |
Имя файла: |
OFR.rar |
Filesize: |
2.02 KB |
Downloaded: |
0 Time(s) |
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Пн Дек 26, 2011 4:08 pm Заголовок сообщения: |
цитата |
|
На истории система работает следующим образом
пусть в 7:45 выставлен ордер Buy ("BuyRet") Next Bar At EntryLevel Limit;
где EntryLevel равен 1.3029
что означает купить ПРИ ПЕРВОЙ ВОЗМОЖНОСТИ на следующем баре (8:00) по цене 1.3029 или НИЖЕ
следующий бар в истории имеет HIGH = 1.3035 и LOW = 1.3027, как менялась цена в течении 15 минут на баре неизвестно, следовательно берется худший вариант 1.3029
следовательно на баре 8:00 будет совершена покупка по цене 1.3029 + спред на покупку(у Вас он = 0)
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Пн Дек 26, 2011 4:20 pm Заголовок сообщения: |
цитата |
|
при работе в автоматическом или полуавтоматическом режиме в качестве текущей цены ВСЕГДА берется CLOSE (совпадающий с ASK) как это и видно на графике
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Пн Дек 26, 2011 4:23 pm Заголовок сообщения: |
цитата |
|
те модель такая: нет отдельной цены на покупку и продажу, а есть текущая цена к которой прибавляется спред на покупку или отнимаеся спред на продажу
|
|
Вернуться к началу |
|
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Пн Дек 26, 2011 7:01 pm Заголовок сообщения: |
цитата |
|
Уважаемый LanguageSupport!
Благодарю за подробное разъяснение работы на истории.
Вы привели очень показательный пример, который я сейчас и продолжу рассматривать.
Беда в том, что значение LOW берется по BID (а не по ASK).
И если LOW (он же BID) = 1.3027, то в этот момент значение ASK (а следовательно и CLOSE) составит скорее всего 1.3027+0.0004=1.3031
(В данном случае 0.0004 - стандартное значение спреда на рассматриваемой паре).
Таким образом, в (полу)автомате при EntryLevel=1.3029 BuyLimit-ордер на данном баре 8:00 НЕ исполнится вовсе...
А на графике очень странно наблюдать - как отметки входов в длинную позицию, выполненные только что в (полу)автомате - при нажатии
клавиши F5 переезжают не только на другие уровни, но и вообще на другие бары...
Такая работа симулятора делает бессмысленными любые попытки отптимизации разрабатываемой стратегии, так как на деле результаты её работы будут совершенно другими.
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Вт Дек 27, 2011 11:49 am Заголовок сообщения: |
цитата |
|
Да, в Ваших рассуждениях есть резон. При разработке симулятора у нас было несколько вариантов его реализации на истории. Предполагалось, что пользователи оценят и внесут свои предложения, но многие годы никакого фидбека не было, видать никто так глубоко в систему лезть не хотел. В следующей версии программы мы поменяем учет спреда при торговле на истории, а именно: ордер Buy Next Bar At Price Limit будет исполнятся ТОЧНО по цене Price (а не Price + спред) если Price >= LOW + спред на покупку. Соответсвенно изменятся и условия входа для других ордеров. Правильно ли мы поняли суть Ваших замечаний или у Вас есть другие предложения?
|
|
Вернуться к началу |
|
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Вт Дек 27, 2011 2:33 pm Заголовок сообщения: |
цитата |
|
Я думаю, такая корректировка будет правильной.
Единственное, в чем я Вас не понял - это относительно изменения условий входа для других ордеров. Отмеченная мной неточность проявляется только в покупочных лимит-ордерах Buy и ExitShort, по крайней мере мне так показалось. В работе лимит-ордеров Sell и ExitLong на мой взгляд всё в порядке.
В любом случае, тестирование новой версии я обязательно проведу и о результатах отпишу здесь.
Еще раз благодарю Вас за оперативный отзыв на замечания пользователя.
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Вт Дек 27, 2011 2:49 pm Заголовок сообщения: |
цитата |
|
Ну ведь HIGH считается по ASK (High = max(High,Ask)) а значит цена на продажу никогда не достигнет High, максимум High - спред(на продажу)
|
|
Вернуться к началу |
|
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Ср Дек 28, 2011 8:35 am Заголовок сообщения: |
цитата |
|
OK, ждем новую версию.
P.S. А со стоп-ордерами у нас всё в порядке?
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Ср Дек 28, 2011 10:36 am Заголовок сообщения: |
цитата |
|
Все посмотрим-проверим
|
|
Вернуться к началу |
|
Ilja0301 Студент
Зарегистрирован: 07.10.2011 Сообщения: 12
|
Добавлено: Чт Май 17, 2012 12:14 pm Заголовок сообщения: |
цитата |
|
Прошу прощения за мое долгое отсутствие, но теперь я снова в теме и, как обещал, отписываюсь о результатах.
Действительно, в новой версии с уровнями входа в позицию вроде бы всё нормализовалось.
Однако теперь вызывает некоторое недоумение влияние параметра "спред" на выполнение ордеров.
Прилагаю два скриншота, снятых при прогоне на истории одной и той же стратегии (скрипт см.выше), но с разными значениями спреда на покупку.
Вопросов собственно (пока) два:
1. Почему при изменении значения спреда на покупку с 0 на 4 выполнение ордера на покупку смещается всего лишь на 2 пункта вместо 4 (в данном случае с 1.2707 на 1.2709)?
2. Почему при этом "прыгает" в сторону исполнение ордера на продажу ExitLong...Limit , которое по идее должно бы остаться на своем месте?
Если по первому вопросу можно предположить относительно простую ошибку в программе (типа лишнего деления или умножения на 2 при расчете влияния спреда), то второй вопрос сбивает с толку напрочь... Ведь мы меняем покупочный спред, а не продажный, или я что-то недопонимаю?
Description: |
|
Download |
Имя файла: |
BuySpr.rar |
Filesize: |
208.95 KB |
Downloaded: |
0 Time(s) |
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Вт Май 22, 2012 1:25 pm Заголовок сообщения: |
цитата |
|
По п.1 - таки да, спред делится на два, у нас были свои соображения для этого, но похоже перемудрили уберем
|
|
Вернуться к началу |
|
LanguageSupport разработчик языка
Зарегистрирован: 18.08.2005 Сообщения: 111
|
Добавлено: Вт Май 22, 2012 1:49 pm Заголовок сообщения: |
цитата |
|
По п.2 - High бара рассчитывается по Ask, т.е. при проверке попадания цены продажи в бар(которая равна Bid и отличается от Ask на спред), от High отнимается спред на ПОКУПКУ. Для ордера Buy к Low прибавляется спред на ПРОДАЖУ. Получается универсальная формула. Ордер срабатывает если его цена P попадает в диапазон [Low + SellSpread, High - BuySpread]. А его конечная цена уже получается для покупки P' = P + BuySpread и для продажи P" = P - SellSpread. Таким образом P' лежит в [Low + SellSpread + BuySpread, High], а P" в [Low, High - BuySpread - SellSpread]. BuySpread и SellSpread обычно равны реальному полуспреду (отсюда и деление спреда на 2 - хотя пользователь указывает привычное для пары значение - 4 в нашем случае)
|
|
Вернуться к началу |
|
|