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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Вс Июл 03, 2011 7:50 am Ответить с цитатой Вернуться к началу

000 писал(а):
Ясно. Иногда ITOrder() отдает отрицательную величину но при этом приходит ITOrderMessage() доставлен на сервер
Надо посмотреть что там приходит на ITOrder()

Я и сам уже приготовился смотреть всё, что отвечает It Trade. Параллельно сейчас смотрю на код spitfire из ветки "Новая версия робота для связки Ami-QUIK", ведь у СмартТрейда есть динамический вывод заявок в Эксель, если встать на таблицу заявок и правой кнопкой мыши выбрать из списка. Таскать за собой Эксель не очень, но интересно посмотреть как сделано. Может пригодиться для чего- нибудь.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

Сегодня запустил робота на демо Riu1, 1-минутная база, частота работы АА - 5-секунд. Результат 34 покупки, 34 продажи, ни одного замечания, всё четко отработало. Торговый результат -1000 деморублей одним контрактом. После 19-00 демосервер не стартовал, эксперимент приходится прекратить.
Начал думать о причинах прошлых ошибок в работе робота. Сейчас пробую робота с дачи через Скайлинк, средний пинг до боевых серверов около 200 мсек. А до тестового даже не могу померить, никогда такого не видел. Набираю в cmd:
Код:

ping 89.175.35.229 -t -w 200000
, что по моим представлениям ждать ответ сервера 200 секунд,
и стабильно получаю
Request timed out, Pathping стабильно дает 100% потерь пакетов,
но данные в Ами поступают, задержку сандартную для СмартКома не менял, даже не знаю какая она по умолчанию, если дата плагин несколько раз выдает ошибку Request timed out, то просто перегружаю СмартКом и Ами и все работает. Возможно из-за большого пинга сервер не успевает ответить за период работы АА, и робот выставляет вторую, третью заявку. Олег, плиз, посмотри пинг до тестового сервера, он в принципе есть?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Сейчас попробовал пингануть.
твой
89.175.35.229
Не пингуется.
Мой
82.204.220.7
Прекрасно пингуется 65-66mc

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

Странно, не пингуется, а данные идут исправно, за день всего один, два разрыва соединения. Эксперимент продолжается, вчера на вечерке было ещё семь сделок, все нормально, купил, продал по 1 контракту.
Робот ушел в позе на ночь, на открытии сегодня продал, с 5сек периодом работа АА всё четко отрабатывает. Сегодня ещё пускай молотит так, может вечером попробую уменьшить это время. Или может не стоит трогать, меньше мне лично пока не нужно.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

Поймал таки сдвоенные заявки во время сильного движения.
Робот переворотный Short=Sell и Cover=Buy
Код:
05.07.2011 16:33:23  RIU1  заявка НЕ исполнена ответ

сервера=сервер не ответил номер заявки=-3  sell
05.07.2011 16:33:28  RIU1  заявка исполнена ответ

сервера=доставлен на сервер номер =70227321  sell

и далее
Код:
05.07.2011 16:41:04  RIU1  заявка НЕ исполнена ответ

сервера=сервер не ответил номер заявки=-3  Cover
05.07.2011 16:41:54  RIU1  заявка исполнена ответ

сервера=доставлен на сервер номер =70227621  Cover

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


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

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

С большой долей вероятности это косяк демосервера или плохого интернета.
Тут ничего не сделаешь... В принципе руками в терминале так можно 2 раза ткнуть...

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Ср Июл 06, 2011 7:35 am Ответить с цитатой Вернуться к началу

000 писал(а):
С большой долей вероятности это косяк демосервера или плохого интернета.

Это я смогу проверить на боевом компе, там средний пинг 7-8 мсек до торговых серверов мо жет даже на этой неделе. Но возникает вопрос, что будет при торговле в реале, если на форуме Айти в ЛИСА ежедневно пишется о задержках в выставлении заявок по несколько секунд. При скальпировании сам часто замечал, если идут большие объёмы при большом движении маркет заявка в терминале появляется через 2-3 секунды после нажатия хоткея, лимитная побыстрее. Олег, ты же в плагине какое-то время ожидаешь ответ сервера, нельзя ли его регулировать извне. Каждый смог бы делать это под свой инет и свою стратегию. А по обсуждению на форумах инет с пингом 250 мсек далеко не самый плохой. 250-посылка заявки, 250 ответ сервера, 2-3 сек обработка заявки, вот и набегает. Судя по отклику твоего плагина время ожидания у тебя около 1 сек.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июл 06, 2011 8:15 am Ответить с цитатой Вернуться к началу

Сейчас стоит время ожидания ответа 5 сек. По моему более чем достаточно...

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Ср Июл 06, 2011 9:14 am Ответить с цитатой Вернуться к началу

Если 5 секунд, то период работы АА надо ставить не меньше. Про секунду писал по личным ощущениям, если все нормально, моргнул Ами, через секунду появляется заявка в СмартТрейде.
А при большом пинге Dataplugin для Ами и СмартКом разрывают соединение с сообщением:
Disconnected, Timout detected. check your internet connectivity or event handler code, я обсуждал этот вопрос с разработчиками СмартКом и Amisupport. Ниже кусок из ветки форума Айти.
Задержку описаную в этой ветке я не менял, т.к. разрывы соединения происходят крайне редко (два, три раза в день) и на 3G и на выделенной линии и похоже не всегда зависят от моего инета.
Код:


#5    somovis 

Отправлено 30 Ноябрь 2010 - 17:36
Событие disconnected происходит практически сразу после коннекта с такой ошибкой, но вчера иногда получалось соединиться. Тогда уже само не разъединялось.Правда, коннектить пытаюсь через 3G модем, но в России.
SmartTrade работает нормально.
--------------------------------------------------------------------------------
#6    SmartCOM 
 
Знаток SmartCOM

пинг до сервера проверьте, результат выложите. возможно вреям ожидания нужно увеличить
ping 82.204.220.34
--------------------------------------------------------------------------------
#7    somovis 

ping плохой. Видимо, дело в плохой связи  Но лучше домой мне пока нет возможности протянуть.
Превышен интервал ожидания для запроса.
Ответ от 82.204.220.34: число байт=32 время=1162мс TTL=243
Ответ от 82.204.220.34: число байт=32 время=341мс TTL=243
Ответ от 82.204.220.34: число байт=32 время=333мс TTL=243

А как увеличить время ожидания?
--------------------------------------------------------------------------------
#8    SmartCOM 
 
Знаток SmartCOM

через реестр измените параметр
[HKEY_LOCAL_MACHINE\SOFTWARE\IT Invest\smartcom]
"logLevel"=dword:00002000
--------------------------------------------------------------------------------
аксель (02 Декабрь 2010 - 22:06) писал:

а мне кажется, начиная с SmartCOM 2.0:

[HKEY_LOCAL_MACHINE\SOFTWARE\IT Invest\smartcom]
"pingTimeout"=dword:000007d0
вроде как задает время таймфута в миллисекундах, 7d0 = 2000 мсек
--------------------------------------------------------------------------------
#10    SmartCOM 
 
Знаток SmartCOM

число написал от "фанаря" :-) 2000 = 8192 мсек, вот уж не ожидал что по нему коментарий будет )
--------------------------------------------------------------------------------
#12    mshumilov 

У меня видимо дело тоже в пинге. стабильный, но в районе 1500мс.
С виртуальных машинок, где пинг хороший - все работает на ура.
Выставление большего таймаута (0x00002000) не помогает.
Придется работать с виртуальной машинки.

Кстати, SmartTrade такой пинг вполне устраивает. Притормаживает, но работает.
--------------------------------------------------------------------------------
#14    mshumilov 
 
Первый раз менял logLevel. Для smartCOM 2.0 надо выставить
"pingTimeout"=dword:00002000
Моя проблема решилась, спасибо!
--------------------------------------------------------------------------------
#16    bsg 

Тоже бывает - Disconnected, Timout detected. check your internet connectivity or event handler code

А в Айти и не такое бывает: Как то в середине торгового дня отправил в чат сообщение:
Данные на одном торговом сервере отстают от данных на другом на две минуты, проверьте.
Ответ: Перейдите на более быстрый, отстающий сейчас будет перегружен. И ничего, народ торгует.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июл 06, 2011 9:32 am Ответить с цитатой Вернуться к началу

Цитата:
Если 5 секунд, то период работы АА надо ставить не меньше. Про секунду писал по личным ощущениям, если все нормально, моргнул Ами, через секунду появляется заявка в СмартТрейде.

Не, не так.
AFL обращается к функции ITOrder() и ждет пока она не ответит. После ответа AFL дорабатывает и запускается в следующий раз в соответствии с временем установленным в Run...
Если сервер отвечает быстро, то и функция быстро отдает ответ в AFL, а вот если сервер молчит, то функция ждет 5сек. и говорит, что "сервер не ответил".

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

Вставил в код второй Now(0), посмотреть сколько времени уходит в среднем на ответ сервера, запустился.
Код:

str = str + " заявка исполнена" + " ответ сервера в"+ Now(0)+" и =" + N + " номер =" + M;
о результатах сообщу вечером.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

belin писал(а):
Вставил в код второй Now(0), посмотреть сколько времени уходит в среднем на ответ сервера, запустился.

За день из 128 заявок две более 2 секунд, одна более 3 и одна более 4. Каждый раз ITOrder возвращал номер заявки
Демосервер действительно лагает. За день три маркет заявки висели без исполнения несколько минут , а одна была отклонена "Не разрешена встречная заявка на один счет и/или ИНН". Бред. Ставится заявка на закрытие шорта, далее, после ответа через 5 секунд открытие лонга. Обе в одном направлении. Предыдущие и следующие в пределах 5 минут. Отклонена первая - на закрытие шорта. И каждый раз плагин возвращал номер заявки.
Сегодня задал вопрос на форуме Айти и получил ответ знатока СмартКома
belin писал(а):
Прошу ответить сколько по опыту проходит времени от отправки заявки до получения её номера. Понимаю, что в событийной модели всё просто: отправил и жди события: принята к исполнению, отклонена и т.д. Спрашиваю для программ, не работающих с событиями, для Амиброкера. Там отправил заявку и нужно задать время ожидания ответа сервера. А какое? Поделитесь опытом.
Ответ:
Код:
средний максимум примерно два пинга до сервера, но я торгую через пол страны :-(
остальную статистику не веду, так как считаю её не информативной
если с событиями не работает, то ставьте "до посинения", иначе позиция разбежится.

Мой вывод из всего вышеизложенного: Лаги демосервера. На данный момент заканчиваю с тестированием Маркет заявок, завтра приступаю к тестированию лимитных. По сему вопрос, а в функции ITOrder параметр цены для стоп-приказа работает?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Цитата:

а в функции ITOrder параметр цены для стоп-приказа работает?

Нет.
Лично я не использую стоп приказы. Всегда можно исполнять стоп в коде робота. Если связь нормальная, то это практически не хуже чем стоп на сервере брокера, а если плохая, то о каком роботе может идти речь....
Зато если стоп исполняет робот, то нет сомнений по поводу открытых/закрытых позиций...

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

Сегодня гонял робота на RIU1, в котором маркет заявки заменил на лимитные со сдвигом от клоуза прошлого бара на 200, в плюс для покупки, в минус для продажи . Сто восемнадцать заявок, сделок меньше. Только один раз получилась фигня:
Цитата:

07.07.2011 13:03:05 RIU1 заявка НЕ исполнена ответ сервера в 13:03:05 и = нет соединения с сервером номер заявки=-1 sell
07.07.2011 13:03:11 RIU1 заявка НЕ исполнена ответ сервера в 13:03:11 и = сервер не ответил номер заявки=-3 sell

Олег, обрати внимание номер второй заявки -3, а время первое до вызова твоей функции, второе сразу после, заявка прошла, а сервер ответил -3 вместо номера заявки. В прошлый раз тоже было "нет соединения с сервером номер заявки=-1", а следующая -3 и проходит. А соединение инета в этот момент было - пинговал непрерывно, правда другой сервер. Похоже заявка не проходит, только если ответ= -1 и -4 в момент подсоединения. А так он до сих пор молотит нормально, но буду выключать, т.к. света из-за дождя давно нет, а батарейка садится.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ага.
Вот смотри. Когда отправляется заявка возможны 3 исхода.
1. Хороший исход. Приходит событие OpderSucceeded. Ордер принят.
При этом оно отдает номер ордера и в плагине в OrderMessage записывается "доставлен на сервер" Это уже от IT не зависит. Я сам пишу.
2. Плохой исход. Приходит событие OrderFailed. Ордер НЕ принят.
При этом оно отдает причину (ответ сервера) которую плагин пишет в OrderMessage.
3. Ответ не пришел вовсе. Тогда по истечении 5сек. в OrderMessage записывается "сервер не ответил".

Нет соединения с сервером...
Такое сообщение отдает именно IT.
Перед тем как попытаться отправить заявку плагин спрашивает у IT есть ли связь и если есть, то шлет заявку, а если IT ответил нет, то даже не пытается.

В данном случае мой косяк. Я запускал таймер ответа до проверки связи и получилось так.
Запустился таймер ожидания ответа,
опросили IT о наличии связи
он ответил, что нет
Прекратили это дело, а таймер идет.
Потом следующая попытка отправить ордер, а таймер как раз подошел и сработал....

Вроде исправл. Пробуй новую версию.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen