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



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

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

У меня на ST5015 демо сервер на ФОРТС заработал, приступаю к тестированию.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ну что там, как успехи?

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



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

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

000 писал(а):
Ну что там, как успехи?

Да только сегодня получилось попробовать. Но результат непонятен, Робот один и тот же, на GAZP ST5015-MS-01 робот сделки делает, а на ST5015-RF-01 на RIU1 получает ответ (из лога робота)
30.06.2011 13:11:18 RIU1 заявка НЕ исполнена ответ сервера=Торговые операции с данного счета проводить ЗАПРЕЩЕНО! Buy
Пробовал, купить из СмартХ, тоже ничего не получается. Разбираюсь с техподдержкой.
Посмотреть профиль Отправить личное сообщение
belin



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

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

Демо счет на ФОРТС не использовался две недели и был отключен, хотя сам сервер в это время не работал, на демо ММВБ такого отключения нет, там можно торговать. Олег, твой плагин честно присылал весь день ответ сервера о запрете на торговлю с этого счета, а в СмартХ этого не было видно. Подключился к новому демо доступу, а в Афл-коде робота оставил старый номер, забыл, что нужно исправить, после этого Ами упал ( неожиданная ошибка и т.д.) и закрылся. Пока сигнала на лонг нет, а робот лонговый, жду, но думаю теперь всё будет нормально. Завтра с утра запущу его и пусть молотит.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Хм. Вот какая петрушка.
В папке AmiBroker совершенно открыто лежит файл SmartPlugin.ini
в нем все настройки плагина в т.ч. и логин и пароль в открытом виде....
Это не есть хорошо, но зато можно логин читать из этого файла и убрать в функции ITOrder() первый параметр. Что скажете?

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



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

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

000 писал(а):
Хм. Вот какая петрушка.
В папке AmiBroker совершенно открыто лежит файл SmartPlugin.ini
в нем все настройки плагина в т.ч. и логин и пароль в открытом виде....
Это не есть хорошо, но зато можно логин читать из этого файла и убрать в функции ITOrder() первый параметр. Что скажете?

Я тоже заметил это и создал четыре файла ini 1-демо, 3-настройки на разные сервера и вхожу в Ами через досовские bat файлы, писал выше, получая возможность подсоединения к разным серверам и разным счетам без перенастройки плагина. Ещё бы удалять из памяти СмартКОм... но ты попросил дождаться окончания написания одной программы, а потом переходить к развитию.
Если убрать в функции ITOrder() первый параметр, то торговать можно будет только со счета на который настроен Ami в данный момент, а реальные счета у клиента бывают BP9999-RF-01, RF-02, (это бесплатно), далее за отдельную плату. Если убрать первый параметр, то тебе прийдется эти RF-01 и MS-01 жестко забивать в своей dll? Хотя пусть Ами торгует только с первого счета, для большинства этого будет достаточно и будет меньше ошибок, остальные просто перебросят деньги на другие счета. Я не против. Но на сайте Ай ти в обсуждении участвовал человек, у которого счета клиентов в доверительном управлении, вот у него могут быть проблемы.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Мне показалось, что если отправить заявку не на тот счет на который залогинен СмартКом, то он вылетает с ошибкой...

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



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

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

Да, ведь у СмартКома в подсоединении передаются счет и пароль
try
{
SmartServer.connect(IPTextBox.Text, 8090, LoginTextBox.Text, PasswordTextBox.Text);
}
catch (Exception Error)
{
ErrorLabel.Text = "Ошибка при подключении, " + Error.Message;
}
Другой счет= другой пароль, но войдя с паролем для счета ВР9999, можно торговать со всех доступных ВР9999-RF-01....100 и ВР9999-MS-01....100.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ок. Понял. Тогда номер счета убирать не стану.

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



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

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

Вчера запустил робота на демо ФОРТС, он вошел в лонг нормально, а поскольку на тестовом сервере торги заканчиваются не в 23-50, а раньше, то робот остался в позе на ночь, утром до 10-00 запустить не смог, запустил в 11-30, он закрыл лонг по сигналу. Дальше робот долбит маркет заявки до получения ответа сервера принята к исполнению, и все срабатывают поза набирается каждые 5 сек(установка в АА)
Вот лог робота:
Код:

11/07/01 11:53:55  RIU1  заявка НЕ исполнена ответ сервера=возможно неправильный символ  sell
11/07/01 11:54:00  RIU1  заяка исполнена ответ сервера=доставлен на сервер  заявка исполнена  sell
11/07/01 11:55:51  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  Buy
11/07/01 11:55:56  RIU1  заяка исполнена ответ сервера=доставлен на сервер  заявка исполнена  Buy
11/07/01 11:57:57  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 11:58:02  RIU1  заяка исполнена ответ сервера=доставлен на сервер  заявка исполнена  sell
11/07/01 12:02:53  RIU1  заяка исполнена ответ сервера=доставлен на сервер  заявка исполнена  Buy
11/07/01 12:29:56  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:02  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:07  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:12  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:30  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:35  RIU1  заявка НЕ исполнена ответ сервера=доставлен на сервер  sell
11/07/01 12:30:49  RIU1  заяка исполнена ответ сервера=доставлен на сервер  заявка исполнена  sell
Посмотреть профиль Отправить личное сообщение
belin



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

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

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


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

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

Не пойму. Косяк у меня в роботе чтоли...
Цитата:
заявка НЕ исполнена ответ сервера=доставлен на сервер sell

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



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

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

000 писал(а):
Не пойму. Косяк у меня в роботе чтоли...
Цитата:
заявка НЕ исполнена ответ сервера=доставлен на сервер sell

Заметил, но днем не успел написать, что когда робот подряд несколько раз продал в АА, в окошке ответ IT Trade появлялась одна буква "S". Предположительно первая буква от Sell. Может это поможет разобраться?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Кинь мне код робота который используешь. Можно без системы

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


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

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

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

 procedure order(bs) {

   M = ITOrder(Accaunt, Code, bs, 1, 1, 0, Lots, 0);
   AddTextColumn(M, "номер ордера");
   N = ITOrderMessage();
   AddTextColumn(N, "ответ IT Trade");

   if(StrToNum(M) > 0) {
          str = str + "  заяка исполнена" + " ответ сервера=" + N;
        if(pos > 0 AND bs == 2)             {   // закрытие лонга
             WritePos(0);
          }
          else if(pos == 0 AND bs == 3)      {   // шорт
             WritePos(-1*Lots);
          }
          else if(pos < 0 AND bs == 4)       {   // закрытие шорта
             WritePos(0);
          }
          else if(pos == 0 AND bs == 1)    {   // лонг
             WritePos(Lots);
          }
          str = str + "  заявка исполнена";
    }
    else {
          str = str + "  заявка НЕ исполнена" + " ответ сервера=" + N;
    }
 }

На
Код:

 pos = ReadPos();
 str = Now(0) + "  " + Name();

 procedure order(bs) {

   M = ITOrder(Accaunt, Code, bs, 1, 1, 0, Lots, 0);
   AddTextColumn(M, "номер ордера");
   N = ITOrderMessage();
   AddTextColumn(N, "ответ IT Trade");

   if(StrToNum(M) > 0) {
          str = str + "  заяка исполнена" + " ответ сервера=" + N + " номер заявки=" + M;
        if(pos > 0 AND bs == 2)             {   // закрытие лонга
             WritePos(0);
          }
          else if(pos == 0 AND bs == 3)      {   // шорт
             WritePos(-1*Lots);
          }
          else if(pos < 0 AND bs == 4)       {   // закрытие шорта
             WritePos(0);
          }
          else if(pos == 0 AND bs == 1)    {   // лонг
             WritePos(Lots);
          }
          str = str + "  заявка исполнена";
    }
    else {
          str = str + "  заявка НЕ исполнена" + " ответ сервера=" + N + " номер заявки=" + M;
    }
 }

Надо посмотреть что там приходит на ITOrder()

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen