Начать новую тему Ответить на тему |
Список форумов 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 След. |
Автор |
Сообщение |
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Удивительно, но всё работает в онлайне! В смысле - приказы, позиция и лог пишутся в файлы, в нужное время. До Смарта пока эти приказы не довожу - днем слишком опасно на настоящем счете...
В лог пишутся строки типа
24.02.2010 13:26:07 GAZP_FT
24.02.2010 13:32:58 GAZP_FT
код, их задающий, как Вы и написали
str = Now(0) + " " + Name() + " ";
Я хотел было добавить к нему цену закрытия предпоследнего бара.
Попробовал
str = Now(0) + " " + Name() + " " Ref (Close, -1 ) ; не принимает
пробовал
Cena = NumToStr( Ref (Close, -1 ) ) ;
str = Now(0) + " " + Name() + " " Cena ; не принимает
даже пробовал
Cena=NumToStr (Close[BarCount-2] ) ;
str = Now(0) + " " + Name() + " " Cena ; все равно syntax error
Как в строчную переменную вставить цену из прошлого бара? в хелпе совсем мало примеров... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Оно и должно в онлайн работать.
А строка у меня примерно так
str = Now(0) + " " + Name() + " текущая цена = " + С[BarCount - 2] ; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
000 писал(а): |
Оно и должно в онлайн работать.
А строка у меня примерно так
str = Now(0) + " " + Name() + " текущая цена = " + С[BarCount - 2] ; |
Извините - Error 30. Syntax error.
Курсор указания ошибки начинает мигать после последнего плюса, перед С
что делать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну конечно будет мигать. Я по невнимательности вместо англ русскую эС написал. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Отложив на время скользящий тэйк-профит, решил ограничиться простым трейлингом. И понял, что вставлять в робота типичную строку из кода для АА, например
ApplyStop(stopTypeTrailing, stopModePoint, 20, True );
бесполезно. Робот же не знает когда и по-чем продали... и Снова эта проблема ложных-повторных Buy. Посмотрел коды роботов, выложенных здесь на форуме... там нету ApplyStop
В ами-роботах для реальной торговли (не тестировании) вообще не используют встроеный ApplyStop ?
Как быть. если меня стоп-приказы моего брокера чем-то не устраивают? ну например, у него нету стоп-трейлинга с указанием размера в процентах. А в Ами такой есть. И как сделать робота на его основе? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Робот не знает, а вот стратегия знает. Реальная сделка по цене скорее всего немного отличается от теоретической (скользяк). В общем. Пишешь систему. Пишешь стопы (ApplyStop), активизируешь их при помощи функции Equity(1) (читей хелпер по этой функции и особенно коментарии).
В результате появляются сигналы на закрытие позиций инициированные срабатыванием стопов. Они отличаются от обычных тем, что значение например Sell равно не 1, а 2, 3, 4, 5 или 6 в зависимости от типа стопа. Ничто не мешает эти сигналы использовать в роботе. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
000 писал(а): |
Пишешь стопы (ApplyStop), активизируешь их при помощи функции Equity(1) (читей хелпер по этой функции и особенно коментарии).
В результате появляются сигналы на закрытие позиций инициированные срабатыванием стопов. Они отличаются от обычных тем, что значение например Sell равно не 1, а 2, 3, 4, 5 или 6 . |
Сегодня попробовал гонять робота на BarReplay и режиме Explore... Похоже, я плохо понимаю, в каком месте надо вставлять Equity для сработки трэйлинга и при этом, проверки позиции...
вот этот вот код - покупает вовремя, но продает-выходит только в конце дня. Трейлинг не работает. Я пытался переставлять Equity( 1 ), но добился только что и Buy перестает отдаваться... Посмотрите пожалуйста - где надо вставить ApplyStop и где Equity( 1 ) ?
canstar = TimeNum() >105000;
noend = TimeNum() < 162700;
endday = TimeNum() >162800;
Buy = canstar AND noend AND .... условия входа;
Sell = endday;
ApplyStop(stopTypeTrailing, stopModePoint, 0.6, True );
pos = readposition(); // вызываем function readposition() и узнаем нашу позицию
sendBuy = Buy AND pos < 0;
sendSell = Sell AND pos > 0;
eq = Equity( 1 ); //запускаем аплистоп
AddColumn(Sell, "Sell", 1.0, colorDefault, colorDefault);
AddColumn(Buy, "Buy", 1.0, colorDefault, colorDefault);
if(sendBuy[BarCount-2]) {
orderbuy();
writeposition(1);
writelog(str);
}
if(sendSell[BarCount-2]) {
ordersell();
writeposition(-1);
writelog(str);
}
AddColumn(pos, "position", 1.0, colorDefault, IIf(pos>0, colorGreen, colorDefault));
AddColumn(eq, "equity", 1.0, colorDefault, IIf(pos>0, colorGreen, colorDefault)); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Даже в таком виде есть ошибки. Но указывать не буду. Форум иногда искажает код. Пользуйся тегами Code /Code или прикрепляй код к сообщению. Тогда разберем все ошибки... А то фиг знает чего и сколько движок форума из кода вырезал.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
000 писал(а): |
Даже в таком виде есть ошибки. Но указывать не буду. Форум иногда искажает код. Пользуйся тегами Code /Code или прикрепляй код к сообщению. Тогда разберем все ошибки... А то фиг знает чего и сколько движок форума из кода вырезал.... |
Кажется, он искажает если в свойствах сообщения забыть указать "Отключить HTML".
Я между тем, надеюсь, разобрался - Equity не срабатывала из-за моей невнимательности. Я думал, что у нее признак "дипазон котировок: -1 : (по умолчанию) использует диапазон установленый в Automatic analysis " ---относится и пункту диапазона "N last quotes".
А оказывается нет - даже если в АА тригер Range не установлен на "from dates" - Equity даты оттуда все равно считывает. Надо или менять их или свои даты прописывать в коде... Извините за отнятое время. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Подумал, что будет некрасиво, если я не отчитаюсь о результатах. Прилагаю код простейшего работающего робота для Смарта. Проверялся со SmartTrade 5.3 версии от августа 2009г. В смарте надо включить прием приказов из текстового файла и прописать их каталог C:\order Обязательно используйте в Смарте подтверждения приказов!!!
Лог-файл робота и файл-контроля позиции должны лежать в том же каталоге.
Робот запускался в режиме Explore. с онлайн-трансляцией котировок. Устойчив к разрывам связи. В том смысле, что не дает ложных сигналов при восстановлении и докачке баров, ибо Ами+esignals докачивают бары акуратно. Жаль только они ФОРТС из Смарта не могут взять... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
gerra96
Зарегистрирован: 08.12.2009
Сообщения: 10
Откуда: Иваново
|
VladimirN писал(а): |
Подумал, что будет некрасиво, если я не отчитаюсь о результатах. Прилагаю код простейшего работающего робота для Смарта. Проверялся со SmartTrade 5.3 версии от августа 2009г. В смарте надо включить прием приказов из текстового файла и прописать их каталог C:\order Обязательно используйте в Смарте подтверждения приказов!!!
Лог-файл робота и файл-контроля позиции должны лежать в том же каталоге.
Робот запускался в режиме Explore. с онлайн-трансляцией котировок. Устойчив к разрывам связи. В том смысле, что не дает ложных сигналов при восстановлении и докачке баров, ибо Ами+esignals докачивают бары акуратно. Жаль только они ФОРТС из Смарта не могут взять... |
новый плагин к амиброкеру http://www.itinvest.ru/forum/index.php?showtopic=63382&pid=253955&st=0&#entry253955 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Craft
Зарегистрирован: 09.11.2010
Сообщения: 3
|
Бразы, у разработчиков из ITinvest появились вопросы:
-------------------------------
Написал: Андрей Осташов
Предполагается, что плагин будет обрабатывать приказы market, limit, stop и stop limit.
...
Приказы можно будет выставлять, снимать и передвигать (последнее только дл FORTS).
...
Все описанное выше практически уже разработано - осталось подпилить мелочи.
А вот дальше у нас планируются проблемы.
Чтобы получать данные о состоянии приказов (выставлен, исполнен, частично исполнен, снят) AmiBroker должен уметь работать с потоковыми данными (callback-и обрабатывать). Мы никак не можем окончательно разобраться умеет ли он это или нет. По-видимомому, придется провести отдельный research на эту тему.
Коллеги, у кого-нибудь есть возможность проконсультировать нас на эту тему?
В принципе можно ограничиться только выставлением, передвижением и снятием, контролируя все это в SmartTrade.
Но как-то пошло получится. Ради чего копья ломали?
Кроме того, с обработкой потоков связаны и большие планы на будущее. Вплоть до трансляции в AmiBroker состояния торгового портфеля.
Это не обязательство, это мечты!
-------------------------------
Кто может проконсультировать разработчиков, помогите пожалуйста:
http://www.itinvest.ru/forum/index.php?showtopic=63382&pid=255371&st=120&#entry255371 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Одно из двух. Или люди на столько грамотнее меня, что я вопрос не понял или они настолько не понимают.
Все делается в плагине. Ами переодически опрашивает его. Пришло в плагин по ком событие, плагин себе это "записал". Когда Ами опросит плагин то увидит, что блаблабла...
Заставить передать в Ами от плагина инфу, что событие произошло вроде нельзя. Как часто ами будет опрашивать плагин на предмет изменений зависит от того, как используется AFL. Если в АА и scan 5 мин, то раз в 5 минут опросит и т.д....
В дата плагине можно сообщать ами о том, что произошло событие
WM_USER_STREAMING_UPDATE в AFL плагине такого нет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Craft
Зарегистрирован: 09.11.2010
Сообщения: 3
|
000, спасибо, разработчики услышали Ваш ответ. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|