Автор |
Сообщение |
knell009
Зарегистрирован: 21.11.2011
Сообщения: 24
|
Привет!
Задача на первый взгляд не трудная.
Есть переворотная стратегия.
При ее запуске выполняются сразу 2 условия:
Buy = a1 > bbtop;
Cover = a1 > bbtop;
или
Sell = a1 < bbbot;
Short = a1 < bbbot;
Вопрос: Как сделать так чтобы при первом сигнале Buy/Short не выполнялись Cover/Sell
(в последующем же необходимо чтобы все условия выполнялись)
В тестере эти вопросы не возникают, т.к. тестер по умолчанию работает правильно.
Как же избавится от того что в начале торгового для закрываем несуществующую позицию и открываем новую.
КОД:
//--условия входа/выхода------------
Buy = a1 > bbtop;
Sell = a1 < bbbot;
Short = a1 < bbbot;
Cover = a1 > bbtop;
//---снятие избыточных сигналов.----
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
//----------------------------------
Buy = Ref(Buy, -1);
Sell = Ref(Sell, -1);
Short = Ref(Short, -1);
Cover = Ref(Cover, -1); |
_________________ knell |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я так понял, что в конце дня реально позиция закрывается в любом случае (руками) а в роботе/системе этого закрытия нет и робот пытается закрыть позу открытую вчера?
Проще всего исправить добавив в правила системы закрытие в конце дня.
Типа
Sell = ... OR TimeNum() == 235400;
Cover = ... OR TimeNum() == 235400;
Время надо изменить в зависимости от рынка и рабочего фрейма. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
knell009
Зарегистрирован: 21.11.2011
Сообщения: 24
|
000 писал(а): |
Я так понял, что в конце дня реально позиция закрывается в любом случае (руками) а в роботе/системе этого закрытия нет и робот пытается закрыть позу открытую вчера?. |
Нет. У меня в стратегии есть ограничение по времени. и выходит она четко. Закрывает как надо, т.е. не переносит позы на следующий день. Просто я убрал все лишнее из кода.., чтобы не отвлекаться на мелочи.
Проблема только при начале торгов. В соответствии с условиями робот кинет 2 сделки, а нужно чтобы только одну. А в следующих сигналах он работает гуд, закрывает и открывает. |
_________________ knell |
|
Посмотреть профиль Отправить личное сообщение |
|
knell009
Зарегистрирован: 21.11.2011
Сообщения: 24
|
Подумав логически, можно было бы написать так:
Buy = a1 > bbtop;
Sell = IIf( a1 < bbbot AND LastValue(Buy), 1, 0);
Short = a1 < bbbot;
Cover = IIf( a1 > bbtop AND LastValue(Short), 1, 0);
но оно не работает |
_________________ knell |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я никак не могу понять откуда и почему берется лишний сигнал. Тут надо не устранить появившийся лишний сигнал а убрать причину его появления. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
knell009
Зарегистрирован: 21.11.2011
Сообщения: 24
|
000 писал(а): |
Я никак не могу понять откуда и почему берется лишний сигнал. Тут надо не устранить появившийся лишний сигнал а убрать причину его появления. |
Спасибо за ответ. Он мне помог понять что такого в принципе не должно быть... так и есть все дело оказалось в условиях стратегии..., она оказалась не совсем переворотной... Переделал код и все получилось.
Еще раз спасибо. |
_________________ knell |
|
Посмотреть профиль Отправить личное сообщение |
|
|