Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В двух словах.
Если стоп произошел на том же баре где был и вход, то получается такой цикл.
Позиции нет но есть вход - исполняем. Следующий прогон, позиция есть и есть выход (стоп) - исполняем.
Для того, чтобы такого цикла не было с обычными сигналами я использовал запрещение выхода если на этом баре есть вход (Sell1 = (Sell[BarCount - 2] AND Buy[BarCount - 1]==0))
а вот защиту от такой же фигни со стопом забыл добавить.
Суть в том, что надо проверять исполнение стопа в зависимости от уровня входа и если он есть, то запрещать вход.
Если сам не разберешься, то напиши, постараюсь завтра или в субботу написать подробный код.
Ща уже спать хочу... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sserk
Зарегистрирован: 15.01.2012
Сообщения: 23
|
Столкнулся вот с такой неожиданностью в работе робота, использую версию, которая со стопами в коде, а так же использую программу планировщик для автоматического запуска и закрытия квика и ами по дням и часам. Система показала "селл" на самой последней свече в сессии, по идее робот должен был продать на следующей свече, но её в этой сессии уже не было и "планировщик" закрыл программы, потом началась новая торговая сессия, но робот уже не вспомнил, что на предыдущей свече был сигнал. Как можно обойти такую проблемку? Может заставить робота при наличии сигнала на последней свече покупать скажем за 20 секунд до конца сессии? Вот файлик скрин с ситуацией наглядно. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Странно это.
По идее робот обязательно должен был вспомнить, что надо продать. Ему пофигу, что сигнал был вчера. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sserk
Зарегистрирован: 15.01.2012
Сообщения: 23
|
В общем разобрался сам, прогнал еще раз бэктест на формуле этой же системы, оказалось, что там сигнал не "селл", а срабатывает "стоп". Поэтому робот и не продавал в "шорт". |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну в результате то робот этот стоп отработал или так и остался в лонге? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
sserk
Зарегистрирован: 15.01.2012
Сообщения: 23
|
да да, робот молодец!!! стопы он отрабатывает как надо. Просто в этом случае, робот был запущен без планировщика где то уже после входа в лонг и был вне позиции. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
Подскажите как еще поменять минимальный шаг цены торгуемой бумаги? В information TickSize = 0.01. И в коде TickSize = 0.01; все равно заявки в квик уходят с шагом 1 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А какой собственно робот? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
000 писал(а): |
А какой собственно робот? |
этот
http://www.amisite.ru/afl/exp/files/Quik_Robot1.afl
Цена заявки по сберу округляется.Т.е, если цена последней сделки 88.51 покупает по 89 ,если 88.49, то по 88. Получается так, что Otstup нельзя делать меньше 0.5
Код: |
TimeFrame= 300; // таймфрейм в секундах.
Account= "NL0011100043"; // Номер счета
Client_Code= "45519"; // Код Клиента
Quik = "С:\\QUIK"; // путь к Квику
SecCode= "SBER";
Class = "QJSIM";
Lots = 1;
TickSize = 0.01; // Минимальный шаг цены торгуемой бумаги
Otstup = 0.2;
Tickers = "SBER"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
Buy = C;
Sell = C;
Short=0;
Cover=0;
Buy = Ref(Buy, -1);
Sell = Ref(Sell, -1);
Short = Ref(Short, -1);
Cover = Ref(Cover, -1);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В коде робота никаких округлений нет. Берется текущая цена, к ней прибавляется или отнимается отступ и результат отправляется в Квик.
Как давно качал плагин TRANS2QUIK.dll ???? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
Обновил плагин проблема остается. В моем случае берется текущая цена сбера с шагом 1, к ней прибавляется или отнимается отступ и результат отправляется в Квик.
TickS после присвоения значения 0.01 нигде в коде не встречается, это норм? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ой ё...
Не заметил. Есть там округление.
orders("B", round(C[BarCount-1]) + Otstup, Lots);
Не помню зачем я его вставил. Ну если тебе так принципиальна цена рыночной заявки, то убери round().
Только непонятно почему это так важно? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
ну пока разбираюсь, думал если рыночная заявка с отступом не сработала то удалить.
И еще проблема не могу понять, как получить "ORDER_KEY "- номер сделки для AS_QUIK_KILL_ORDER? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
zyanov писал(а): |
ну пока разбираюсь, думал если рыночная заявка с отступом не сработала то удалить.
И еще проблема не могу понять, как получить "ORDER_KEY "- номер сделки для AS_QUIK_KILL_ORDER? |
???
Цитата: |
AS_QUIK_SEND_SYNC_NEWORDER("TRANS_ID", "ACCOUNT", "CLIENT_CODE", "TYPE", "CLASSCODE", "SECCODE", "OPERATION", ЦЕНА, РАЗМЕР ЗАЯВКИ)
Отравляет синхонную заявку на сервер. Синхронную, значит функция обязательно дождется и вернет ответ Квика на поданную заявку
В случае успешного исполнения заявки вернет номер заявки в ТЕКСТОВОМ формате. В случае ошибки вернет код ошибки
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
Вопрос неправильный получился, важнее было узнать как снять заявку не зная момент её исполнения? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|