Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 След. |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только следует иметь ввиду, что позиция в портфеле терминала появляется не сразу и если фильтровать сигналы покупки наблюдая за позой в терминале, то можно влететь неплохо....
Т.е. есть сигнал на покупку. Смотрим текущую позу. Допустим 0. Отправляем заявку на сделку, Следующий прогон кода в АА. Опять видим сигнал. Смотрим позу, а она в терминале еще не обновилась... снова 0 и снова заявка на покупку.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
hardcam
Зарегистрирован: 12.11.2010
Сообщения: 124
|
000 писал(а): |
Только следует иметь ввиду, что позиция в портфеле терминала появляется не сразу и если фильтровать сигналы покупки наблюдая за позой в терминале, то можно влететь неплохо....
Т.е. есть сигнал на покупку. Смотрим текущую позу. Допустим 0. Отправляем заявку на сделку, Следующий прогон кода в АА. Опять видим сигнал. Смотрим позу, а она в терминале еще не обновилась... снова 0 и снова заявка на покупку.... |
но это наверно опасно для скальперских роботов больше? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это одинаково для всех роботов. Просто надо это иметь ввиду кода составляешь алгоритм работы робота. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Пара вопросов:
При торговле внутри свечи во избежание повтора сигналов систему переводят в меньший фрем, т.к. робот торгует от закрытия свечи на которой случился сигнал, так?
А как быть, если есть желание торговать Range графики? Брать тики и закладывать range построения в саму систему, я правильно понимаю?
И как быть, если нет желания платить большое проскальзывание? Не вошёл в рынок - и не надо, Ami то никак не узнает в рынке он или нет.
Может кто-нибудь шарит в Qpile - там вроде тоже можно делать записи в файл, например, с меткой о наличии позиции. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
kosbar писал(а): |
Пара вопросов:
При торговле внутри свечи во избежание повтора сигналов систему переводят в меньший фрем, т.к. робот торгует от закрытия свечи на которой случился сигнал, так? |
Да.
kosbar писал(а): |
А как быть, если есть желание торговать Range графики? Брать тики и закладывать range построения в саму систему, я правильно понимаю?
|
Просто в настройках АА ставишь нужный метод компрессии. Изначально данные нужны естественно тиковые или, в крайнем случае, маленького фрейма.
kosbar писал(а): |
И как быть, если нет желания платить большое проскальзывание? Не вошёл в рынок - и не надо, Ami то никак не узнает в рынке он или нет.
Может кто-нибудь шарит в Qpile - там вроде тоже можно делать записи в файл, например, с меткой о наличии позиции. |
По Qpile не подскажу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
Просто в настройках АА ставишь нужный метод компрессии. Изначально данные нужны естественно тиковые или, в крайнем случае, маленького фрейма. |
Не понял. А как быть с повторами сигналов, если торговля ведется внутри свечи, в нашем случае range-свечки?
Цена пройдёт некоторый уровень, случится buy, но range свечка не завершится, цена отойдёт и снова вернётся к условию buy и так хоть 10 раз.
Вот я и решил, что range надо будет строить самому на циклах, и систему тоже, и если уже вошли (вводить переменную "мы уже в рынке чувак") отказываться от повторного входа. Как-то так?! |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В любом случае совершенно не обязательно строить бары именно в коде. Можно брать уже готовые. А вот исполнение сигналов внутри свечки это уже надо думать. Зависит от конкретной торг системы. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
В любом случае совершенно не обязательно строить бары именно в коде. Можно брать уже готовые. А вот исполнение сигналов внутри свечки это уже надо думать. Зависит от конкретной торг системы. |
Ну я подразумевал связку Quik+Ami через файлы .tri и всё такое и именно внутри range-бара.
PS Между делом заметил, что в Смарт+Ами, есть возможность проверять наличие позиции, заполняемости заявки. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Даже если есть возможность контролировать позицию в тереминале и то там возникнут сложности. В принципе позицию можно контролировать даже в квике. Выводить по ODBC и передавать в Ами. Фигня в том, что при исполнении сделки терминал как правило отображает изменение рыночной позиции не мгновенно. Поэтому, если исполнение сделки контролируется по изменению позиции, то возможны косяки. Позиция реально открыта (сделка прошла), а в терминале её еще нет, и Ами соответственно думает, что поза не открыта. Это следует иметь в виду. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
Даже если есть возможность контролировать позицию в тереминале и то там возникнут сложности. В принципе позицию можно контролировать даже в квике. Выводить по ODBC и передавать в Ами. Фигня в том, что при исполнении сделки терминал как правило отображает изменение рыночной позиции не мгновенно. Поэтому, если исполнение сделки контролируется по изменению позиции, то возможны косяки. Позиция реально открыта (сделка прошла), а в терминале её еще нет, и Ами соответственно думает, что поза не открыта. Это следует иметь в виду. |
Ну, т.е. для шибко скальперских дел нужно понимать что будет некоторый лаг в системе. Это нормально.
В таких вот задачках особенно остро начинаешь чувствовать разницу между функциональным программированием и событийно-ориентированным)) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
А ведь робот с главной страницы и внутри бара может сигналы исполнять и никаких повторов нет. У меня вот так был выход по стопу реализован, просто по совету Олега убрал задержки при исполнении сигналов.
Код: |
//////////////////////////////////////////
Equity(1, 0);
Buy = LastValue(Ref(Buy, -1));
Sell = LastValue(Sell);
Short = LastValue(Ref(Short, -1));
Cover = LastValue(Cover);
/////////////////////////////////////////// |
|
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
lesser
Зарегистрирован: 11.07.2010
Сообщения: 7
|
Подскажите , плиз , как изменить код робота что-бы робот не дожидался конца свечи на которой есть сигнал а сразу покупал или продавал как только появился сигнал .
Спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Задержка тут
Код: |
Buy = LastValue(Ref(Buy, -1));
Sell = LastValue(Ref(Sell, -1));
Short = LastValue(Ref(Short, -1));
Cover = LastValue(Ref(Cover, -1));
|
Если сделать так
Код: |
Buy = LastValue(Buy);
Sell = LastValue(Sell);
Short = LastValue(Short);
Cover = LastValue(Cover);
|
то задержек не будет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Олег, привет. Разъясни, плиз, логику работы кода через АА.
Я тут экспериментирую с кодом робота, в теле ввел переменные, в которые я записываю цену, номер, направление, статус последней заявки. В начале кода они инициализируются какими-то значениями, а потом по мере работы изменяются:
Код: |
............................
transID = "0123456789";
orderNumber = "0123456789";
orderStatus = "0123456789";
orderPrice = 0;
orderDir = 0;
...........................
transID = tri_write("S", orderPrice, Lots, s); // сохраняем идентификатор последней сделки
orderNumber = getOrderNumber(transID); // сохраняем номер последней заявки в системе
...........................
|
АА периодически прогоняет код робота. Он запоминает последние значения переменных или каждый раз инициализирует их начальными значениями?
Если он НЕ запоминает значения моих переменных, то как удобней сделать сохранения их после прогона? Я (от тебя) слышал, есть такая штука как блокнот Ами - не расскажешь поподробней? С примером |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
АА периодически прогоняет код робота. Он запоминает последние значения переменных или каждый раз инициализирует их начальными значениями? |
Каждый раз новыми
Поэтому надо или сохранять нужные данные в файл, как я сделал в роботе для IT
Типа
Функция читает файл robot.it. Если его нет, то создает и записывает в него 0.
Код: |
function ReadPos() {
fh = fopen( NameForPos + "robot.it", "r");
if( fh ) {
p = fgets( fh );
p = StrToNum(p);
}
else {
fh = fopen( "robot.it", "w");
fputs( "0", fh);
p = 0;
}
fclose( fh );
return p;
}
|
Функция записывает в него то, что надо
Код: |
procedure WritePos( q ) {
fh = fopen("robot.it", "w");
fputs( NumToStr( q, 1.0, False ), fh);
fclose( fh );
} |
Затем в коде можно и нужно использовать
qqq = ReadPos();
После этого qqq равно содержимому файла (число).
и при необходимости пишем в файл что надо
WritePos(555);
записали 555.
Этот вариант хорошь тем, что запомненные данные сохраняться даже после перезапуска Ами.
или можно использовать статические переменные.
StaticVarGet
StaticVarSet
В таком случае значение запишется в память и будет доступно при повторном запуске AFL. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|