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


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

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

Убрать "лишние" сигналы проще всего функцией ExRem()
Типа так
Код:

Buy1 = ExRem(Buy1, Sell1);

Про то, как отображать лог в exele не знаю.

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



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

СообщениеДобавлено: Пн Июл 23, 2012 11:02 am Ответить с цитатой Вернуться к началу

Ок. Спасибо.
1. Вопрос, отдельное окно тикера для визуального контроля работы робота: на одной свече есть сигнал на код Sell1 и Short1 , стрелочка рисуется только одна для сигнала Short1. Как реализовать чтоб стрелочек было две как и в коде на Sell1 и Short1 одна над другой (чёрная -Sell1 , и красная соответственно Short1 ).
2. Как убрать сигналы на одной свече. Код Short1 = Short1 AND Sell1 ==0 ;
работает , но убирает некоторые правильные сигналы на Short1 ?

Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = Cross(MA(C, 20), C);
Short1 = Cross(MA(C, 40), C) AND C < MA(C, 20);
Cover1 = Cross(C, MA(C, 20));

Short1 = Short1 AND Sell1 ==0 ;

///////////Конец Системы////////////

Buy1 = Ref(Buy1, -1); // условие "на следующей свече"
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);

Buy1 = ExRem(Buy1, Sell1); // переключатель (пока не совершиться закрытие длинной позиции, новая длинная позиция открытся не может)
Sell1 = ExRem(Sell1, Buy1);
Short1 = ExRem(Short1,Cover1);
Cover1 = ExRem(Cover1,Short1);



///////////Рисование////////////

PlotShapes( Buy1*shapeUpArrow, colorGreen, 0, L );
PlotShapes( Sell1*shapeDownArrow, colorBlack, 0, H );
PlotShapes( Short1*shapeDownArrow, colorRed, 0, H );
PlotShapes( Cover1*shapeUpArrow, colorBlue, 0, L );
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
000
Site Admin


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

СообщениеДобавлено: Пн Июл 23, 2012 1:18 pm Ответить с цитатой Вернуться к началу

Возможно у тебя стрелки накладываются. Посмотри в хелпере функцию PlotShapes у неё последний параметр позволяет сдвигать значек вверх-вниз.

Попробуй вместо ExRem() для фильтрации сигналов использовать функцию Equity()

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



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

СообщениеДобавлено: Пн Июл 23, 2012 11:00 pm Ответить с цитатой Вернуться к началу

Олег, странно, но периодически бывает, робот делает больше сделок, чем нужно, т.е., например:
был шорт 1 фьюча, пошел сигнал на лонг, робот сначала закрывает шорт( покупает 1 лот), потом входит в лонг - покупает еще 1 лот, и на этом должен бы остановится. Но вместо этого еще через секунду он покупает еще 1 лот. Такое чувство, что имеющаяся позиция не успевает отобразиться, робот думает, что ее нет, и продолжает.
Почему - понять не могу, обновление выставлено 1 сек, комп достаточно мощный, вся связка не должна тормозить
В лог пишет так:
Код:
23.07.2012 23:30:02  SBRF  Cover  заяка исполнена ответ сервера=##########  позиция на момент исполнения -1
23.07.2012 23:30:02  SBRF  Cover  заяка исполнена ответ сервера=##########  позиция на момент исполнения -1
23.07.2012 23:30:03  SBRF  Buy  заяка исполнена ответ сервера=##########  позиция на момент исполнения 0

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


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

СообщениеДобавлено: Пн Июл 23, 2012 11:05 pm Ответить с цитатой Вернуться к началу

Хм. Два ковера подряд (два закрытия шорта) и время у них одинаковое. Похоже, что оба ковера исполнены за один прогон. Проверь код робота. Есть подозрение, что у тебя там 2 раза if(Cover1[BarCount-1]...

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



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

СообщениеДобавлено: Вт Июл 24, 2012 11:17 am Ответить с цитатой Вернуться к началу

Для того чтоб стрелки не накладывались сделал так.(чередую закрашенный треугольник с не закрашенным квадратом)

PlotShapes( Buy1*shapeUpArrow, colorGreen, 0, L );
PlotShapes( Sell1*shapeHollowSquare, colorGreen, 0, H );
PlotShapes( Short1*shapeDownArrow, colorRed, 0, H );
PlotShapes( Cover1*shapeHollowSquare, colorRed, 0, L );

Спасибо!
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
vadimal



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

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

Привет!" Робот открыл длинную позицию, я ( в качестве эксперимента) закрыл этот лонг руками в квике. Робот в АА в столбце позиция так и оставил цифру "1", когда робот "увидел" что пора закрывать тот лонг который он открывал, то не смог его исполнить и с логом
24.07.2012 17:30:18 SBER Sell заяка НЕ исполнена ответ сервера=0 безуспешно пытался несколько раз позу закрыть.
Вопрос. При закрытии лонга робот должен был спросить квик о состоянии позы и тот по моему должен был ответить что лонга нет. Тогда робот должен был обновить свой столбец в АА "Позиция" с цыфры "1" на "0". А он этого не сделал. Если так и должно быть то скажи как возобновить (в экстренных случаях) правильное отображение позы в столбце "позиция" АА.
Спасибо!
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
000
Site Admin


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

СообщениеДобавлено: Вт Июл 24, 2012 6:22 pm Ответить с цитатой Вернуться к началу

Увы. Робот не может спросить Квик о состоянии позы. Такой функционал в плагине не реализован. Этому есть 2 причины.
Если руками влез в работу робота, то надо руками залезть в robot.ini и там изменить позу по соответствующей бумаге.

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



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

СообщениеДобавлено: Ср Июл 25, 2012 10:30 am Ответить с цитатой Вернуться к началу

Спасибо. Работает всё как ты и сказал.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
BRTO



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

СообщениеДобавлено: Ср Июл 25, 2012 7:26 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Хм. Два ковера подряд (два закрытия шорта) и время у них одинаковое. Похоже, что оба ковера исполнены за один прогон. Проверь код робота. Есть подозрение, что у тебя там 2 раза if(Cover1[BarCount-1]...

В том то и дело, что код - скопирован с сайта без изменений...
И такое не при каждом закрытии шорта...
В общем буду разбираться Shocked
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июл 25, 2012 7:30 pm Ответить с цитатой Вернуться к началу

Пришли мне свой код в личку.
Account и Client_Code убери. Посмотрю....

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



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

СообщениеДобавлено: Ср Июл 25, 2012 7:59 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Пришли мне свой код в личку.
Account и Client_Code убери. Посмотрю....

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


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

СообщениеДобавлено: Ср Июл 25, 2012 8:10 pm Ответить с цитатой Вернуться к началу

Отвечу тут в назидание.
1. Что у тебя в коде делает строка
_SECTION_END();

Она там не нужна совершенно и я затрудняюсь предположить акой она дает эфект.

2. У тебя в системе используется ApplyStop();
Он там не работает.
Это конечно к делу не относится, но...

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



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

СообщениеДобавлено: Ср Июл 25, 2012 8:33 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Отвечу тут в назидание.
1. Что у тебя в коде делает строка
_SECTION_END();

Она там не нужна совершенно и я затрудняюсь предположить акой она дает эфект.

2. У тебя в системе используется ApplyStop();
Он там не работает.
Это конечно к делу не относится, но...


_SECTION_END(); - не заметил, действительно.

Я систему скопировал из кода, который тестирую, вместе с ним и ApplyStop(). Действительно, в таком виде толку не много, а с Equity()?
Олег, ты вроде писал, что на крайняк и ApplyStop в робот подойдет.
Там только стоп-профит, и он так редок, что проще руками закрыть.

В любом случае, спасибо за помощь - так ведь и знал, что какие-то корявые ошибки будут, все от невнимательности...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июл 25, 2012 9:18 pm Ответить с цитатой Вернуться к началу

с Equity() будет работать, но лучше использовать эту схему

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen