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



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

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

Приветствую!
Как закрыться в конце дня по Close?
Пишу:
Код:
EndDay = TimeNum()>=234500;
Sell = EndDay;

Закрывается где попало, даже не на Open.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Попробуй так
Код:

EndDay  =  Day() != Ref(Day(), - 1);
Sell  =  EndDay;

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



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

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

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

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

может. Примерно так.
Код:
TimeOn = Hour() < 13 OR Hour() > 16;
Buy ... AND TimeOn;

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



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

СообщениеДобавлено: Чт Дек 24, 2009 4:25 pm Ответить с цитатой Вернуться к началу

000 писал(а):
может. Примерно так.

Спасибо! То, что нужно Wink Very Happy
Посмотреть профиль Отправить личное сообщение
Osiris



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

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

Osiris писал(а):
Как закрыться в конце дня по Close?

Оказывается всё оказалось просто, можно указать цену закрытия непосредственно для этого времени и мои остальные условия на это не повлияют:
Код:
EndDay = TimeNum()==234500;
Sell = EndDay;
SellPrice = Close;

Рисует красиво, как и хотелось, как считает ещё не смотрел, исправте, если не прав.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Все правильно.
Только надо посмотреть какое время последнего бара показывает Ами. Оно зависит от настроек.

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



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

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

000 писал(а):
Все правильно.
Только надо посмотреть какое время последнего бара показывает Ами. Оно зависит от настроек.


А если, например, я не знаю в шорте я или в лонге , можно написать так?

EndDay = TimeNum()==234500;
Sell OR Buy = EndDay;
SellPrice = Close;
BuyPrice = Close;

Заранее спасибо
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Нет. Так нельзя. Надо так
Код:

EndDay = TimeNum()==234500;
Sell  = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close;

Кстати. Почему там Buy? Buy это открытие лонга....

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



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

СообщениеДобавлено: Сб Мар 20, 2010 4:53 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Нет. Так нельзя. Надо так
Код:

EndDay = TimeNum()==234500;
Sell  = EndDay;
Cover = EndDay;
SellPrice = Close;
CoverPrice = Close;

Кстати. Почему там Buy? Buy это открытие лонга....


Ой, правда. Что-то я намудрил. Спасибо.
Посмотреть профиль Отправить личное сообщение
Nero Wolfe



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

СообщениеДобавлено: Пт Апр 23, 2010 4:17 pm Ответить с цитатой Вернуться к началу

А если в коде уже определены цены исполнения сделок
Код:
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

СообщениеДобавлено: Пт Апр 23, 2010 6:00 pm Ответить с цитатой Вернуться к началу

Если надо установить различные цены исполнения в разных случаях то типа так
Код:

BuyPrice = CoverPrice = IIf( EndDay, Close, Band_Top);

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

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

Боюсь что код
Код:

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

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

Начнем с того, что Endday = Day() != Ref(Day(),1); в роботе совсем работать не будет. Эта строка предполагает, что правее есть еще свечка а в реале мы работаем с самой правой.
Пиши типа
Timenum() == 234000;
Только почему там 40? Если фрейм минутный, то можно смело писать 234900. Только если бумага малоликвидная, то есть опасность что в последную минуту сделок не будет, соответственно не будет свечки и сделка не пройдет.
Тогда можно использовать локальное время компа при помощи функции Now(), только надо посматривать, чтобы локальное время было точное....

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

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

Ооо, про Now() я думал, но почему-то не применительно к этому вопросу.
Спасибо.

Тайм я взял 5-минутный - система лучше на нём работает.

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

Кстати если указать Now(4) == 234920;
то робот прямо в это время сработает? даже если тайм 5 минут или 1 день?

конечно учитываю, что время на компе и Квике должно быть одинаковым.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen