Работа робота на AmiSharp. Вопросы.
Технические. Например: прогрузка данных и расчет сигналов могут произойти в неторговое время.
Принципиальные. Робот должен быть умным, но ровно до той степени, пока вы можете понимать, что он делает. Любые действия, которые он исполняет и которые вы не можете понять - неправильные. Самовольные торговые операции - одни из них
Самое ответственное действие - это выставление заявки., поскольку оно связано с деньгами и его невозможно отменить. Так как невозможно предсказать, какой алгоритм Вы напишете, самодеятельное выставление заявок - это зло. В этом случае возможны совершенно непредсказуемые последствия, в том числе для Вашего счета.
Ровно поэтому в непонятные моменты выбрана тактика "не делай ничего". Это менее травматично

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Покажите фрагмент вашего кода, где вы устанавливаете сигналы cover и short для закрытия позиции в 21:05
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
admin пишет: Покажите фрагмент вашего кода, где вы устанавливаете сигналы cover и short для закрытия позиции в 21:05
TimeOut2 = Param("TimeOut4", 210000, 100000, 230000, 10000);
TC4 = TimeNum() == TimeOut2;
Buy = Ref (b1 OR b3, -1);
Short = Ref (s1 OR s3, -1);
Sell = Ref (TC4, -1);
Cover = Ref (TC4, -1);
Ну а дальше:
_SECTION_BEGIN("Сигналы");
if (ParamToggle("Выводить?","Нет|Да",1))
{ PlotShapes(IIf(Buy,shapeUpTriangle,shapeNone), ColorBuy, 0,BuyPrice);
PlotShapes(IIf(Short,shapeDownTriangle,shapeNone), ColorShort,0,ShortPrice);
PlotShapes(IIf(Sell,shapeHollowDownTriangle,shapeNone), ColorSell, 0,SellPrice);
PlotShapes(IIf(Cover,shapeHollowUpTriangle,shapeNone),ColorCover,0,CoverPrice);
};
_SECTION_END();
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Судя по логу, который Вы привели раньше, в 21-05 никаких сигналов робот не увидел. Если на текущей (последней) свече есть подходящий сигнал (buy sell short cover) то первым делом робот пишет его в лог, а потом уже пробует исполнить (смотрите process_signals()).
Поскольку в логе никаких записей нет, могу предположить, что в 21-05 никаких сигналов на закрытие позиции не было. Такое возможно, если вы меняли настройки робота на лету, например. Или не было связи с брокером - робот работал вхолостую. При появлении связи терминал получил пропущенную историю, рассчитал сигналы, но исполнять их уже поздно - они были давно.
Попробуйте повторить ситуацию, поставив время закрытия позиции на текущее.
И прежняя рекомендация. Используйте ExRem()
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Colonel пишет: Мне ExRem на каждый сигнал поставить? После их определения?
Да. После расчета всех 4 массивов.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Тут намедни проанализировал логи робота и увидел кое-какие нехорошие вещи.
К примеру лог робота, который стоит на сбере показывает следующее (приведен лишь кусок):
01.10.2014 12:21:00 Неактуальные данные
01.10.2014 12:21:01 Неактуальные данные
01.10.2014 12:21:02 Неактуальные данные
01.10.2014 12:26:00 Неактуальные данные
01.10.2014 12:26:01 Неактуальные данные
01.10.2014 12:31:00 Неактуальные данные
01.10.2014 12:41:00 Неактуальные данные
01.10.2014 12:41:01 Неактуальные данные
01.10.2014 12:41:02 Неактуальные данные
01.10.2014 12:46:00 Неактуальные данные
01.10.2014 12:51:00 Неактуальные данные
01.10.2014 12:56:00 Неактуальные данные
01.10.2014 12:56:01 Неактуальные данные
01.10.2014 12:56:02 Неактуальные данные
01.10.2014 12:56:03 Неактуальные данные
01.10.2014 12:56:04 Неактуальные данные
01.10.2014 12:56:05 Неактуальные данные
01.10.2014 13:06:00 Неактуальные данные
01.10.2014 13:06:01 Неактуальные данные
01.10.2014 13:06:02 Неактуальные данные
01.10.2014 13:26:00 Неактуальные данные
01.10.2014 13:31:00 Неактуальные данные
01.10.2014 13:41:00 Неактуальные данные
01.10.2014 13:46:00 Неактуальные данные
01.10.2014 13:51:00 Неактуальные данные
01.10.2014 13:51:01 Неактуальные данные
01.10.2014 13:51:02 Неактуальные данные
01.10.2014 14:06:00 Неактуальные данные
01.10.2014 14:06:01 Неактуальные данные
01.10.2014 14:11:00 Неактуальные данные
01.10.2014 14:16:00 Неактуальные данные
01.10.2014 14:21:00 Неактуальные данные
01.10.2014 14:21:01 Неактуальные данные
01.10.2014 14:26:00 Неактуальные данные
01.10.2014 14:26:01 Неактуальные данные
01.10.2014 14:31:00 Неактуальные данные
01.10.2014 14:41:00 Неактуальные данные
01.10.2014 14:41:01 Неактуальные данные
01.10.2014 14:46:00 Неактуальные данные
01.10.2014 14:51:00 Неактуальные данные
01.10.2014 14:51:01 Неактуальные данные
01.10.2014 14:51:02 Неактуальные данные
01.10.2014 14:56:00 Неактуальные данные
01.10.2014 14:56:01 Неактуальные данные
01.10.2014 15:01:00 Неактуальные данные
01.10.2014 15:06:00 Неактуальные данные
01.10.2014 15:06:01 Неактуальные данные
01.10.2014 15:06:02 Неактуальные данные
01.10.2014 15:06:03 Неактуальные данные
01.10.2014 15:06:04 Неактуальные данные
А лог робота, который стоит на РИ, показывает несколько другое:
01.10.2014 11:06:00 Неактуальные данные
01.10.2014 11:31:00 Неактуальные данные
01.10.2014 11:51:00 Неактуальные данные
01.10.2014 12:26:00 Неактуальные данные
01.10.2014 12:31:00 Неактуальные данные
01.10.2014 12:31:01 Неактуальные данные
01.10.2014 12:36:00 Неактуальные данные
01.10.2014 12:51:00 Неактуальные данные
01.10.2014 12:51:01 Неактуальные данные
01.10.2014 12:51:02 Неактуальные данные
01.10.2014 12:51:03 Неактуальные данные
01.10.2014 12:51:04 Неактуальные данные
01.10.2014 12:51:05 Неактуальные данные
01.10.2014 12:51:06 Неактуальные данные
01.10.2014 12:51:07 Неактуальные данные
01.10.2014 12:56:00 Неактуальные данные
01.10.2014 13:06:00 Неактуальные данные
01.10.2014 13:06:01 Неактуальные данные
01.10.2014 13:11:00 Неактуальные данные
01.10.2014 13:16:00 Неактуальные данные
01.10.2014 13:21:00 Неактуальные данные
01.10.2014 13:21:01 Неактуальные данные
01.10.2014 13:21:02 Неактуальные данные
01.10.2014 13:41:00 Неактуальные данные
01.10.2014 13:46:00 Неактуальные данные
01.10.2014 13:51:00 Неактуальные данные
01.10.2014 13:51:01 Неактуальные данные
01.10.2014 13:51:02 Неактуальные данные
01.10.2014 13:51:03 Неактуальные данные
01.10.2014 13:51:04 Неактуальные данные
01.10.2014 13:51:05 Неактуальные данные
01.10.2014 13:51:06 Неактуальные данные
01.10.2014 13:51:07 Неактуальные данные
01.10.2014 13:51:08 Неактуальные данные
01.10.2014 13:51:09 Неактуальные данные
01.10.2014 13:51:10 Неактуальные данные
01.10.2014 13:51:11 Неактуальные данные
01.10.2014 13:51:12 Неактуальные данные
01.10.2014 13:51:13 Неактуальные данные
01.10.2014 13:51:14 Неактуальные данные
01.10.2014 13:51:15 Неактуальные данные
01.10.2014 13:51:16 Неактуальные данные
01.10.2014 13:56:00 Неактуальные данные
Т.е. мы видим, что время от времени возникают разрывы, неполучение данных. Как Вы говорили ранее, причина сего скорее всего обрывы канала связи. Т.е. инфа не поступает в терминал, соответсвенно не идет и в АмиБрокер. Но если посмотреть внимательно, то периоды "неактуальных данных" на бумагах разные. Так в 13:51 на РИ данные не поступали 16 секунд, а в Сбере всего 2. Очевидно, если бы были проблемы на канале связи, то разрывы были бы одинаковы на бумагах. Для очищения совести поднял на ноги владельцев сервера - посмотрели все логи по каналам, что на серваке, что у прова - все нормально.Ошибок логов на управляющих свечах нет. Сетевая карта также работала без ошибок.
Если сбаивали серваки брокера, то здесь также очевидно, что разрывы по бумагам шли бы одинаковые.
Подскажите, в чем может быть проблема?
У меня вчера из-за этой беды сделка запоздала на 26 секунд, а сами понимаете, это весьма солидные срок.
Что характерно, сбои идут обязательно на нулевой секунде практически каждой свечи.
И да, еще вопрос - я вижу, что время в логе указывается системное. НЕ биржевое из КВИКА, а время компьютера, на котором стоит робот. Правильно ли это? Может лучше сделать терминальное?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что интересно, судя по логам эти вещи начались буквально 2-3 дня назад. До этого полторы недели все работало как часы.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В Вашем роботе проверка актуальности даннных сделана так. Если время последней свечи отстает от системного более чем на величину таймфрейма, то в этом случае робот детектирует неактуальность данных.
Неактуальность данных - сигнал роботу, что выставлять реальные заявки не следует
Неактуальность может возникнуть в перерывах между торгами. Также она может возникнуть, если после наступления времени, когда должна открыться свеча, какое-то количество времени по инструменту не было сделок. Без сделки свеча не возникнет, верно?

Поэтому. Или вы оставляете все как есть - ситуация нормальная, или просто увеличьте время детектирования неактуальности данных с interval() на interval() + 60
Обязательно нужно поставить синхронизацию локальных часов компьютера с эталонным временем. Это просто правило хорошего тона.
Касаемо маркировки строк лога. Маркировать лог временем сервера невозможно. Соединение с брокером может тупо отсутствовать и серверное время будет показывать за угол

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что значит "Маркировать лог временем сервера невозможно"? Вы о том, что если заставить лог писать время биржевого сервака, то это будет неверно, поскольку... ну да.
"Обязательно нужно поставить синхронизацию локальных часов компьютера с эталонным временем." - я так понимаю, в это надо ткнуть хозяев сервера, чтобы они наладили? Ибо я на самих часах не вижу синхронизации.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Colonel пишет: я просматривал таблицу всех сделок. Во все периоды "неактуальных данных" сделки шли.
Антон. Проверка неактуальности данных - штука примитивная, состоящая из 1 строки текста. Посмотрите в нее внимательно. Или не было сделок или время вашего компьютера сильно отличается от реального.
"Обязательно нужно поставить синхронизацию локальных часов компьютера с эталонным временем." - я так понимаю, в это надо ткнуть хозяев сервера, чтобы они наладили? Ибо я на самих часах не вижу синхронизации.
Синхронизация времени ВАШЕГО компьютера со временем интернета. Как минимум раз в сутки. Можно чаще , если материнская плата компьютера кашляет.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Проверьте заодно, не выставляете ли вы сигналы "задним числом"
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Нет, сигналы задним числом не образуются.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Описание:
Запускаю два робота (оба на основе Frameworka версия от 12.01.2015. amisharp 1.1.0.1):
- в разных окнах Амиброкера,
- на разных инструментах,
- во framework заменяю только название инструмента, больше ничего не трогаю.
Роботы работают. Сделки идут. Тут проблемы нет.
Проблема:
При одновременной работе двух роботов их графики в Амиброкер постоянно мигают, т.е. переключаются из крупного масштаба в мелкий и обратно и так постоянно. Как убрать такое мельтешение?
Если:
- выключить в Квик «экспорт котировок», то «мельтешение» пропадает,
- включение/выключение DDE не влияет на «мельтешение»,
- остановка одного из роботов не влияет на «мельтешение», но «мельтешение» пропадает, только если вообще закрыть окно с одним из роботов.
Как убрать такое мельтешение при одновременной работе двух роботов?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пробовали переключать амиброкер (робот) с срабатывания на каждый тик на срабатывание каждые N секунд и наоборот?
Иногда помогает.
Проблема иногда проявляется. До сих пор никто не смог определить ее причину. Вероятно, причина внутри амиброкера.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
admin пишет: Пробовали переключать амиброкер (робот) с срабатывания на каждый тик на срабатывание каждые N секунд и наоборот?
Помогло. Если установить в настройках робота параметр "Период расчета,сек." равный "0", то мигания нет. Если "1" на обоих, то мигают оба.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
С чем она может быть связана?
Торгую на фьючерсе siz6, на демосчете, соответственно ден. средства там есть. Экспорт по дде об инструменте из таблицы "Текущие торги" (добавлены все возможные столбцы, столбцы с максимальными и минимальными ценами есть) идет в штатном режиме. Строка из лога выглядит следующим образом:
12.12.2016 10:18:00 Переход к короткой позиции
12.12.2016 10:18:00 Транзакция: ACTION=NEW_ORDER;OPERATION=S;TRANS_ID=286;SECCODE=SiZ6;QUANTITY=7;CLASSCODE=SPBFUT;ACCOUNT=xxxxxxx;PRICE=0;TYPE=M;
12.12.2016 10:18:00 Результат отправки транзакции: 1,0,Ошибка создания заявки. [GW][32] "Цена сделки вне лимита".,0,
12.12.2016 10:18:00 Номер ордера 0
12.12.2016 10:18:00 Ошибка транзакции: 1,0,Ошибка создания заявки. [GW][32] "Цена сделки вне лимита".,0,
При этом в соседнем окне амиброкера по татнефти такой проблемы нет.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я правильно прочел ваше сообщение?
Не работает выставление заявок с признаком 'рыночная" на всех инструментах срочной секции демо. При этом на фондовой секции все работает правильно на всех инструментах.
Если я прочитал правильно, значит вы взяли демо у брокера, который использует на демо-торгах программное обеспечение (шлюз срочной секции) примерно пятилетний давности и все это время его не обновлял.
Я могу дать версию фреймворка, который будет эмулировать на срочном рынке рыночную заявку сам вместо шлюза, но я рекомендую сначала внимательно подумать о правильности выбора вами брокера.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
По многим инструментам Срочного рынка - запрещены рыночные заявки на стороне Московской Биржи.
Выставление лимитной заявки производится без проблем при этом.
Пришлите, пожалуйста, версию фреймворка, который будет эмулировать на срочном рынке рыночную заявку сам вместо шлюза. Как я понимаю, у брокера открытия такой проблемы нет? Вспомните, у какого еще брокера такой проблемы нет? Напишу им, пусть подумают, вдруг сделают.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Обычная проблема российского массового сервиса, когда реальные специалисты и менеджеры прячутся за плотной стеной вчерашних школьников из технической поддержки, не имеющих знаний или компетенций.
Если вам хочется поиграть с алгоритмами на демо, возьмите демо от производителя и все будет нормально.
Фреймворк прекрасно работает у множества трейдеров на срочном рынке в том числе.
Проблемы типа вашей встречаются только у отдельных, особо одаренных брокеров. Проблеиа будет возникать при любом программном способе выставления рыночной заявки - из qpile, lua или амиброкера
Я еще раз советую обдумать вопрос выбора брокера.
Однако если вы желаете - звоните мне скайпом и я вам дам фреймворк с костылем, который затыкает эту финамовскую дырку.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.