Автор |
Сообщение |
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
Приветствую!
Как закрыться в конце дня по Close?
Пишу:
Код: |
EndDay = TimeNum()>=234500;
Sell = EndDay; |
Закрывается где попало, даже не на Open. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Попробуй так
Код: |
EndDay = Day() != Ref(Day(), - 1);
Sell = EndDay;
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
000 писал(а): |
Попробуй так |
Спасибо, разобрался, оказывается - это из-за моих условий входов выходов продавал не там.
TimeNum, как у меня оказался тоже рабочим, а в твоём коде продавал на Open первой свечи, асли поставить 1 вконце, то по Close.
А Может ли Амиброкер не торговать определённые участки времени, например с 13:00 до 16:00.
Пока смог убрать первую свечу, можно ли это модифицировать:
Код: |
InDay = TimeNum()>=103500 AND TimeNum()<234500;
CloseDay = TimeNum()==234500;
Buy = УсловиеВхода AND InDay;
Sell = УсловиеВыхода AND InDay;
Sell = CloseDay;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
может. Примерно так.
Код: |
TimeOn = Hour() < 13 OR Hour() > 16;
Buy ... AND TimeOn; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
000 писал(а): |
может. Примерно так. |
Спасибо! То, что нужно |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Osiris
Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk
|
Osiris писал(а): |
Как закрыться в конце дня по Close? |
Оказывается всё оказалось просто, можно указать цену закрытия непосредственно для этого времени и мои остальные условия на это не повлияют:
Код: |
EndDay = TimeNum()==234500;
Sell = EndDay;
SellPrice = Close; |
Рисует красиво, как и хотелось, как считает ещё не смотрел, исправте, если не прав. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Все правильно.
Только надо посмотреть какое время последнего бара показывает Ами. Оно зависит от настроек. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
000 писал(а): |
Все правильно.
Только надо посмотреть какое время последнего бара показывает Ами. Оно зависит от настроек. |
А если, например, я не знаю в шорте я или в лонге , можно написать так?
EndDay = TimeNum()==234500;
Sell OR Buy = EndDay;
SellPrice = Close;
BuyPrice = Close;
Заранее спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Так нельзя. Надо так
Код: |
EndDay = TimeNum()==234500;
Sell = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close;
|
Кстати. Почему там Buy? Buy это открытие лонга.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SImple
Зарегистрирован: 31.12.2009
Сообщения: 31
|
000 писал(а): |
Нет. Так нельзя. Надо так
Код: |
EndDay = TimeNum()==234500;
Sell = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close;
|
Кстати. Почему там Buy? Buy это открытие лонга.... |
Ой, правда. Что-то я намудрил. Спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
А если в коде уже определены цены исполнения сделок
Код: |
BuyPrice = CoverPrice = Band_Top;
ShortPrice = SellPrice = Band_Bot;
|
можно ли еще добавить условия закрывать позиции в конце дня, как тут
Код: |
EndDay = TimeNum()==234500;
Sell = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close; |
или они будут мешать друг другу??
Может можно сделать разветвление через IF?
Код: |
IF EndDay
{
Sell = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close;
}
else
{
...
BuyPrice = CoverPrice = Band_Top;
ShortPrice = SellPrice = Band_Bot;
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если надо установить различные цены исполнения в разных случаях то типа так
Код: |
BuyPrice = CoverPrice = IIf( EndDay, Close, Band_Top);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Боюсь что код
Код: |
Endday = Timenum() == 234500;
...
Sell = ... or Endday;
|
у меня на 5-минутном ТФ (в АА и на графике) робот будет выкидывать заявку уже после закрытия сессии.
А брать в тесте:
Timenum() == 234000;
или Endday = Day() != Ref(Day(),1);
даёт хуже результаты, чуть ли не вдвое (но тут больше 2005 год портит статистику).
Правда я ещё не оптимизировал все параметры.
Какой вариант закрытия, например по закрытию предпоследней минуты для робота Меха или твоего, Олег, подойдет?
Для робота Меха:
График 1 минута, АА 1 или 5 минут, в коде устанавливать Timeframeset(in5minute), делать все расчеты, получать сигналы и, перед "РУКАМИ НЕ ЛАЗИТЬ", закрывать TimeFrameRestore(). Только все Plot придется убрать из этого куска. Либо вставить их в конец кода с помощью TimeFrameExpand(). |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Начнем с того, что Endday = Day() != Ref(Day(),1); в роботе совсем работать не будет. Эта строка предполагает, что правее есть еще свечка а в реале мы работаем с самой правой.
Пиши типа
Timenum() == 234000;
Только почему там 40? Если фрейм минутный, то можно смело писать 234900. Только если бумага малоликвидная, то есть опасность что в последную минуту сделок не будет, соответственно не будет свечки и сделка не пройдет.
Тогда можно использовать локальное время компа при помощи функции Now(), только надо посматривать, чтобы локальное время было точное.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tim
Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров
|
Ооо, про Now() я думал, но почему-то не применительно к этому вопросу.
Спасибо.
Тайм я взял 5-минутный - система лучше на нём работает.
Поэтому 234000 как вариант, но протестировав с ним на истории понял, что результаты чуть ухудшились. Но не смертельно в принципе.
Прооптимизировав пару параметров, решил, что можно и 234000 взять в принципе. Хотя такие дооптимизации напрягают немного.
Кстати если указать Now(4) == 234920;
то робот прямо в это время сработает? даже если тайм 5 минут или 1 день?
конечно учитываю, что время на компе и Квике должно быть одинаковым. |
_________________ УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|