× Ссылка на скачивание архива: www.bot4sale.ru/download-categories/2012...6/item/amisharp.html (архив под паролем)

Работа робота на AmiSharp. Вопросы.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #724 от Colonel
В ходе эксплуатации робота возник ряд вопросов.

1. Робот кинут на график Сбера, сделки же делает на сберовском фьюче. На графике постоянно выводится сообщение о рассогласовании реальной и расчетной позиции. При этом у второго робота, который что видит, то и торгует, все в норме. В чем может быть причина? МОжет ли быть причина в том, что анализирует график одного, а торгует другое?

2. В АмиБрокере на двух инструментах работают два робота. В настройках указано (у обоих) включение квика и автоматическая авторизация (все логины и пароли прописаны). При включении АмиБрокера начинают включаться ДВА квика. Но в итоге один пропадает. Автоматическая авторизация не проходит. Очевидно, что-то тут не так. Если я оставляю в настройках включение квика только у одного, то в итоге на втором не отображаются кнопки управления роботом, пока я в квике не перестартую экспорт таблиц ДДЕ.
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #725 от admin

Colonel пишет: В ходе эксплуатации робота возник ряд вопросов.

1. Робот кинут на график Сбера, сделки же делает на сберовском фьюче. На графике постоянно выводится сообщение о рассогласовании реальной и расчетной позиции. При этом у второго робота, который что видит, то и торгует, все в норме. В чем может быть причина? МОжет ли быть причина в том, что анализирует график одного, а торгует другое?


Нет, Антон, дело не в том, что Вы анализируете одно, а заявки ставите по другому. Рассогласование позиции говорит о том, что в соответствии с расчетом вашего алгоритма должна быть одна позиция (скажем, Лонг), а реальная позиция по фьючу другая (шорт или без позиции). Такое бывает, если робот был какое-то время выключен и пропустил сделки (он сам решит эту проблему, если его не трогать) или Вы заставляли его открывать или закрывать позиции кнопками робота.

Colonel пишет: 2. В АмиБрокере на двух инструментах работают два робота. В настройках указано (у обоих) включение квика и автоматическая авторизация (все логины и пароли прописаны). При включении АмиБрокера начинают включаться ДВА квика. Но в итоге один пропадает. Автоматическая авторизация не проходит. Очевидно, что-то тут не так. Если я оставляю в настройках включение квика только у одного, то в итоге на втором не отображаются кнопки управления роботом, пока я в квике не перестартую экспорт таблиц ДДЕ.


Антон, запускайте квик из одной копии робота. Это надежнее.

Хотя, возможно я чего-то не понял, тогда покажите мне это живьем.
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #726 от Colonel
1. Да нет, робот показывает одну позицию, в реале именно эта позиция и есть. И по расчетам именно она. Но говорит о рассогласовании.

2. Живьем? Через TeamViewer? И даже если запускаю лишь одну версию, то автоматическая авторизация не проходит.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #727 от admin

Colonel пишет: 1. Да нет, робот показывает одну позицию, в реале именно эта позиция и есть. И по расчетам именно она. Но говорит о рассогласовании.

2. Живьем? Через TeamViewer? И даже если запускаю лишь одну версию, то автоматическая авторизация не проходит.



1. Смотреть позицию надо не в квике, а в таблице, создаваемой роботом. Робот сам ведет свою позицию, не обращая внимания на то, что показывает квик. Он показывает ее на экране (лонг, шорт, без позиции). Это сделано для того, чтобы можно было запускать на одной бумаге разных роботов одновременно или торговать в квике руками параллельно всем роботам.


2. Так быть не должно. Покажите в тимвьювере или скайпе
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #728 от Colonel
1.За вывод сообщения о рассогласовании отвечает следующая строка:
if ((CurrPos == "Лонг" OR CurrPos == "Шорт") AND LastValue(Flip(Buy,Sell) - Flip(Short,Cover)) != StrToNum(StrExtract(Current_Status,1)))
Message("Рассогласование реальной и расчётной позиций");

Как можно увидеть по скрину АмиШарпа позиция Buy закрыта сигналом Sell, т.е. первый "Flip" переведен в положение НОЛЬ. Второй же "Flip" в положении ЕДИНИЦА, поскольку, как видно из АмиШарпа, сигнала Cover еще не было. Т.е. разность флипов у нас -1. Текущая позиция у нас "Шорт". Таким образом первая часть (-1) у нас не равна второй - "Единице". Т.е. выводится сообщение о рассогласовании! Но почему? Какая-та неверная логика? Позиции-то совпадают.

Или я где-то ошибся?


Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #731 от Colonel
Да, и кстати, по второму вопросу. Когда я в настройках робота отключаю пункт "Включать квик", то кнопки управления роботом немедленно пропадают с графика.

А лог робота выводит следующее при включении всего комплекса:

18.09.2014 19:44:31 Запуск терминала QUIK C:\QUIK\info.exe
18.09.2014 19:44:31 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 19:44:31 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 19:44:31 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 19:44:32 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 19:44:33 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 19:44:34 Поключение к терминалу C:\QUIK\ успешно
18.09.2014 19:44:34 Нет соединения с брокером
18.09.2014 19:44:34 Отключение от терминала C:\QUIK\
18.09.2014 19:44:35 Поключение к терминалу C:\QUIK\ успешно
18.09.2014 19:44:35 Нет соединения с брокером
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #732 от admin
if ((CurrPos == "Лонг" OR CurrPos == "Шорт") AND LastValue(Flip(Buy,Sell) - Flip(Short,Cover)) != StrToNum(StrExtract(Current_Status,1)))

Должно быть:

CurrPos равен Шорт. Первая часть условия - true


Переходим ко второй

LastValue(Flip(Buy,Sell) - Flip(Short,Cover) даст -1
StrToNum(StrExtract(Current_Status,1) даст -1

-1 != -1 даст false

В результате условие выполниться не должно и сообщение на экране появляться не имеет права.


Вносили какие-то изменения в исходный текст робота?


Попробуйте протрассировать (_trace() ) все переменные, входящие в это выражение. Когда окажется, что какая-то из них содержит не то значение, которое должно быть - делайте вывод.

Также возможен вариант, что вы внесли какие-то изменения в файл таблицы робота. Текстовым редактором или экселем. Например, какой-то пробел вклинился некстати или что-то еще.
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #733 от admin
Совершенно нормальный лог.

Запущен терминал, робот попробовал подключиться к нему, все у него получилось.

Нет соединения с брокером.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #734 от Colonel
К сожалению, я не знаю, как "протрассировать".

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #735 от Colonel

admin пишет: Совершенно нормальный лог.

Запущен терминал, робот попробовал подключиться к нему, все у него получилось.

Нет соединения с брокером.


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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #736 от admin

Colonel пишет: К сожалению, я не знаю, как "протрассировать".



Функция _trace() описана в хелпе


Она выводит в окно Log (вкладка Trace) значение.
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #737 от admin

Colonel пишет:

admin пишет: Совершенно нормальный лог.

Запущен терминал, робот попробовал подключиться к нему, все у него получилось.

Нет соединения с брокером.


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



Окно авторизации квика неактивно?
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #738 от Colonel

admin пишет: Окно авторизации квика неактивно?


Ну оно выскакивает и все. Ожидание моего ввода. Оно активно.
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #739 от admin
Win 8?


Вообще посылка клавиш в чужое окно - это "неодобряемое" Биллом Гейтсом действие. Более того, они с ним даже активно борются. Взависимости от билда ОС оно действительно может не работать.
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #740 от Colonel

admin пишет: Win 8?


Server2003 Standart +64Edition

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #741 от admin
Антон. Закройте амиброкер и квик. Запустите амиброкер. Посмотрите, будет ли робот авторизовать вас в терминале. Каждая попытка авторизации будет сопровождаться записью в логе и приятным женским голосом в колонках ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #742 от Colonel
Голосов нет.

В логе следующая запись:
18.09.2014 21:29:07 Поключение к терминалу C:\QUIK\ невозможно
18.09.2014 21:29:08 Поключение к терминалу C:\QUIK\ успешно
18.09.2014 21:29:08 Нет соединения с брокером
18.09.2014 21:29:08 Отключение от терминала C:\QUIK\
18.09.2014 21:29:09 Поключение к терминалу C:\QUIK\ успешно
18.09.2014 21:29:09 Нет соединения с брокером

И так далее на повторение

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #743 от admin
Тогда увы. Вам не свезло.

Билл Гейтс у вас такую возможность отгрыз.

На работоспособность это не влияет, но будете пароль вводить руками или включать робота, когда квик уже готов к работе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #744 от Colonel
Да ладно, введу руками. Но вот вопрос с тем, что запускаются два квика, беспокоит. А если 4 робота будет стоять? 4 квика? Загрузит проц. Запрещаю через настройки запуск - пропадают кнопки робота.

И, кстати, не разъясните, почему StrToNum(StrExtract(Current_Status,1) даст -1? Мне казалось, что он 1 дает.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #745 от admin

Colonel пишет: Да ладно, введу руками. Но вот вопрос с тем, что запускаются два квика, беспокоит. А если 4 робота будет стоять? 4 квика?


На несколько секунд при старте загрузит. Разве это проблема?


Colonel пишет:
И, кстати, не разъясните, почему StrToNum(StrExtract(Current_Status,1) даст -1? Мне казалось, что он 1 дает.


Current_Status есть строка вида "Шорт,-1"
StrExtract(Current_Status,1) даст вторую подстроку, то есть "-1"
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #746 от Colonel

admin пишет: Current_Status есть строка вида "Шорт,-1"
StrExtract(Current_Status,1) даст вторую подстроку, то есть "-1"


Сделал трассировку. Выдает не -1, а -11. Т.е. размер текущей позиции. Что логично.
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #747 от admin
Вот туман и рассеялся.

Добавьте вычисление знака для реальной позиции. Должно помочь

Было
if ((CurrPos == "Лонг" OR CurrPos == "Шорт") AND LastValue(Flip(Buy,Sell) - Flip(Short,Cover)) != StrToNum(StrExtract(Current_Status,1)))


Стало
if ((CurrPos == "Лонг" OR CurrPos == "Шорт") AND LastValue(Flip(Buy,Sell) - Flip(Short,Cover)) != Sign(StrToNum(StrExtract(Current_Status,1))))
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #815 от Colonel
Михаил, здравствуйте.

Проснулся и, к сожалению, был неприятно удивлен произошедшим. Прошу посмотреть на картинку. Робот на начало вечерней сессии находился в лонговой позиции. Как видно из лога - ошибок, отсутствия связи, выключений не было, начиная со старта вечерки и до окончания торгов. Так же видно, что прошел сигнал на выход из позиции в 21:00, после чего нижняя зеленая линия прервалась, показывая, что выход из позиции осуществлен.

Однако, как видно из логов, сделки никакой не было. АмиШарп находится в позиции. Ну и в КВИКе позиция также открыта лонговая.

Стоит отметить, что робот в принципе настроен на выход из позиции в 21:05. Так, позавчера лог выглядел следующим образом:
22.09.2014 21:05:59 Сигнал Cover
22.09.2014 21:05:59 Транзакция: ACTION=NEW_ORDER;OPERATION=B;TRANS_ID=470;SECCODE=RIZ4;QUANTITY=1;CLASSCODE=SPBFUT;ACCOUNT=SPBFUT00OKG;PRICE=120570;TYPE=L;EXECUTION_CONDITION=KILL_BALANCE;
22.09.2014 21:05:59 Результат отправки транзакции: 1,13380202828,Заявка с биржевым номером 13380202828 успешно зарегистрирована.,0,
22.09.2014 21:05:59 Номер ордера 13380202828
22.09.2014 21:05:59 Рассогласование реальной и расчётной позиций
22.09.2014 21:06:00 Заявка 13380202828 исполнена: 1 * 113730 = -87932.85

Кстати, отчего-то время лога запаздывает, ибо сделка была проведена именно в 21:05.

Подскажите, какая может быть причина такого поведения робота. И что теперь делать? При открытии руками крыться? Я так понял, что рассогласование реальной и текущей позиции не будет сигналом роботу к исправлению ситуации.


Вложения:
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #817 от Colonel
Ну, как я и ожидал, робот ничего не сделал. Уверенно сообщает о рассогласовании позиций и наблюдает. Пришлось позицию крыть руками. Как мне кажется, что ситуация очень печальная. По сути робот должен отслеживать подобные моменты и исправлять. Т.е. видит рассогласование и немедленно возвращает все на круги своя. Т.е. рассогласование убирает путем добавления/убавления к позиции, её закрытия. Ведь не с эстетической же точки зрения сделано это мигающее информирование? Я и сам понимаю, что есть рассогласование.


Это хорошо, что рынок пошел в сторону позиции. А если бы начался завал длиною в месяц? Робот тупо бы сидел в лонговой позе и маячил о рассогласовании? Есть мнение, что это неверная логика работы. А ведь изначально преподносилось, что робот подобные ситуации будет исправлять сам. Он ведь потому и робот. Вот случилось, что по какой-то причине не произошел выход из позиции. И робот ведь отслеживает это. Значит при возникновении первой же возможности он должен исправить ситуацию - в данном случае закрыть позицию. Разве не так?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #818 от admin
Антон,

Я правильно вижу, что у вас на одной свече сигналы sell и cover одновременно?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #819 от Colonel
Это робот рисует все возмжные сигналы. Он и два входа подряд отрисовывал. На данной свече просто прописан выход из любой позиции.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #820 от admin

Значит при возникновении первой же возможности он должен исправить ситуацию - в данном случае закрыть позицию. Разве не так?


Нет, не так.

Существует 2 пути.
  • Немедленно покупать/продавать, чтобы уравнять позицию. Очень опасно. Например, срабатывание может быть в момент, когда не вся история прогрузилась. И зачем при этом щелкать заявками?
  • Ждать появления следующего подходящего сигнала, игнорируя все неподходящие и изо всех сил моргая экраном. Я выбрал этот путь как наименее травмоопасный.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #821 от admin
Антон.

Робот предпринимает усилия, чтобы поправить огрехи в алгоритме, написанном пользователем. В большинстве случаев ему это удается.Например, он успешно фильтрует идущие подряд сигналы на вход в позицию. Однако все ошибки/неточности он отфильтровать не в состоянии.

У вас как раз один из таких случаев.

На одной свече нельзя ставить противоположные сигналы. Например, что делать роботу, если на одной свече одновременно появились сигналы Buy и Short? Ему непонятно, и потому он делает единственно правильное действие - не предпринимает ничего.Похожая ситуация и у Вас. Даже опора на наличие текущей реальной позиции на дает однозначного ответа.

Поэтому робот ничего не предпринял в вашем случае, оставив все как есть до следующего сигнала Sell
Последнее редактирование: 7 года 9 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад #822 от Colonel
А что может не подгрузиться? Возобновилась связь, мтс рассчитала, что ранее был выход, посмотрела таблицы - в реальности выхода не было, немедленно/по окончанию свечи вышла. Что здесь не так? И в таком случае что Вы имеете в виду, говоря о том, что ничего трогать не надо, робот сам все исправит?

И если мы берем за основу второй подход, то возможно ли какой-то дополнительное информирование о возникшем рассогласовании? Смс, почта? Или, получается, я постоянно должен быть у терминала? Но для чего в таком случае автоматизации?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 9 мес. назад - 7 года 9 мес. назад #823 от Colonel
Почему нельзя ставить на одной свече противоположные сигналы? Это абсолютно нормально. Buy и Short - да, нельзя на одной свече. Но сигналы закрытия вполне допустимы на одной свече. Какие тут проблемы? Мы, к примеру, имеем конкретное время – 21:00. На данной свече мы закрываем позицию. Если у нас лонг, то у нас идет Sell и мы кроем лонг. Если у нас Шорт, то мы делаем Cover и закрываем шорт. Это абсолютно нормально. Ведь имея незакрытый сигнал Buy, робот должен ждать исключительно сигнала Sell. Это элементарная логика. И по сути, он так и работает.

В данном случае ситуация не в том, что он не смог определить, что ему делать. Все остальные дни он прекрасно отрабатывал тот же самый выход по тому же самому алгоритму.
Последнее редактирование: 7 года 9 мес. назад пользователем Colonel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin