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


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

СообщениеДобавлено: Вс Фев 06, 2011 7:59 pm Ответить с цитатой Вернуться к началу

Только следует иметь ввиду, что позиция в портфеле терминала появляется не сразу и если фильтровать сигналы покупки наблюдая за позой в терминале, то можно влететь неплохо....
Т.е. есть сигнал на покупку. Смотрим текущую позу. Допустим 0. Отправляем заявку на сделку, Следующий прогон кода в АА. Опять видим сигнал. Смотрим позу, а она в терминале еще не обновилась... снова 0 и снова заявка на покупку....

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



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

СообщениеДобавлено: Пн Фев 07, 2011 10:29 am Ответить с цитатой Вернуться к началу

000 писал(а):
Только следует иметь ввиду, что позиция в портфеле терминала появляется не сразу и если фильтровать сигналы покупки наблюдая за позой в терминале, то можно влететь неплохо....
Т.е. есть сигнал на покупку. Смотрим текущую позу. Допустим 0. Отправляем заявку на сделку, Следующий прогон кода в АА. Опять видим сигнал. Смотрим позу, а она в терминале еще не обновилась... снова 0 и снова заявка на покупку....


но это наверно опасно для скальперских роботов больше?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Фев 09, 2011 1:24 am Ответить с цитатой Вернуться к началу

Это одинаково для всех роботов. Просто надо это иметь ввиду кода составляешь алгоритм работы робота.

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



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

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

Пара вопросов:

При торговле внутри свечи во избежание повтора сигналов систему переводят в меньший фрем, т.к. робот торгует от закрытия свечи на которой случился сигнал, так?
А как быть, если есть желание торговать Range графики? Брать тики и закладывать range построения в саму систему, я правильно понимаю?

И как быть, если нет желания платить большое проскальзывание? Не вошёл в рынок - и не надо, Ami то никак не узнает в рынке он или нет.

Может кто-нибудь шарит в Qpile - там вроде тоже можно делать записи в файл, например, с меткой о наличии позиции.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Ср Мар 16, 2011 2:00 pm Ответить с цитатой Вернуться к началу

kosbar писал(а):
Пара вопросов:

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

Да.
kosbar писал(а):

А как быть, если есть желание торговать Range графики? Брать тики и закладывать range построения в саму систему, я правильно понимаю?

Просто в настройках АА ставишь нужный метод компрессии. Изначально данные нужны естественно тиковые или, в крайнем случае, маленького фрейма.
kosbar писал(а):

И как быть, если нет желания платить большое проскальзывание? Не вошёл в рынок - и не надо, Ami то никак не узнает в рынке он или нет.

Может кто-нибудь шарит в Qpile - там вроде тоже можно делать записи в файл, например, с меткой о наличии позиции.

По Qpile не подскажу.

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



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

СообщениеДобавлено: Ср Мар 16, 2011 3:33 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Просто в настройках АА ставишь нужный метод компрессии. Изначально данные нужны естественно тиковые или, в крайнем случае, маленького фрейма.
Не понял. А как быть с повторами сигналов, если торговля ведется внутри свечи, в нашем случае range-свечки?
Цена пройдёт некоторый уровень, случится buy, но range свечка не завершится, цена отойдёт и снова вернётся к условию buy и так хоть 10 раз.
Вот я и решил, что range надо будет строить самому на циклах, и систему тоже, и если уже вошли (вводить переменную "мы уже в рынке чувак") отказываться от повторного входа. Как-то так?!
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Ср Мар 16, 2011 4:56 pm Ответить с цитатой Вернуться к началу

В любом случае совершенно не обязательно строить бары именно в коде. Можно брать уже готовые. А вот исполнение сигналов внутри свечки это уже надо думать. Зависит от конкретной торг системы.

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



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

СообщениеДобавлено: Ср Мар 16, 2011 8:44 pm Ответить с цитатой Вернуться к началу

000 писал(а):
В любом случае совершенно не обязательно строить бары именно в коде. Можно брать уже готовые. А вот исполнение сигналов внутри свечки это уже надо думать. Зависит от конкретной торг системы.
Ну я подразумевал связку Quik+Ami через файлы .tri и всё такое и именно внутри range-бара.
PS Между делом заметил, что в Смарт+Ами, есть возможность проверять наличие позиции, заполняемости заявки.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Ср Мар 16, 2011 9:36 pm Ответить с цитатой Вернуться к началу

Даже если есть возможность контролировать позицию в тереминале и то там возникнут сложности. В принципе позицию можно контролировать даже в квике. Выводить по ODBC и передавать в Ами. Фигня в том, что при исполнении сделки терминал как правило отображает изменение рыночной позиции не мгновенно. Поэтому, если исполнение сделки контролируется по изменению позиции, то возможны косяки. Позиция реально открыта (сделка прошла), а в терминале её еще нет, и Ами соответственно думает, что поза не открыта. Это следует иметь в виду.

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



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

СообщениеДобавлено: Чт Мар 17, 2011 10:48 am Ответить с цитатой Вернуться к началу

000 писал(а):
Даже если есть возможность контролировать позицию в тереминале и то там возникнут сложности. В принципе позицию можно контролировать даже в квике. Выводить по ODBC и передавать в Ами. Фигня в том, что при исполнении сделки терминал как правило отображает изменение рыночной позиции не мгновенно. Поэтому, если исполнение сделки контролируется по изменению позиции, то возможны косяки. Позиция реально открыта (сделка прошла), а в терминале её еще нет, и Ами соответственно думает, что поза не открыта. Это следует иметь в виду.
Ну, т.е. для шибко скальперских дел нужно понимать что будет некоторый лаг в системе. Это нормально.
В таких вот задачках особенно остро начинаешь чувствовать разницу между функциональным программированием и событийно-ориентированным))
Посмотреть профиль Отправить личное сообщение ICQ Number
Nero Wolfe



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

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

А ведь робот с главной страницы и внутри бара может сигналы исполнять и никаких повторов нет. У меня вот так был выход по стопу реализован, просто по совету Олега убрал задержки при исполнении сигналов.
Код:
//////////////////////////////////////////

Equity(1, 0);

Buy = LastValue(Ref(Buy, -1));
Sell = LastValue(Sell);
Short = LastValue(Ref(Short, -1));
Cover = LastValue(Cover);

///////////////////////////////////////////

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
lesser



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

СообщениеДобавлено: Ср Апр 20, 2011 3:34 pm Ответить с цитатой Вернуться к началу

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


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

СообщениеДобавлено: Ср Апр 20, 2011 5:42 pm Ответить с цитатой Вернуться к началу

Задержка тут
Код:

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

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

Олег, привет. Разъясни, плиз, логику работы кода через АА.
Я тут экспериментирую с кодом робота, в теле ввел переменные, в которые я записываю цену, номер, направление, статус последней заявки. В начале кода они инициализируются какими-то значениями, а потом по мере работы изменяются:
Код:

............................
transID = "0123456789";      
orderNumber   = "0123456789";   
orderStatus = "0123456789";
orderPrice = 0;   
orderDir = 0;
...........................
transID = tri_write("S", orderPrice, Lots, s); // сохраняем идентификатор последней сделки
orderNumber = getOrderNumber(transID);   // сохраняем номер последней заявки в системе
...........................

АА периодически прогоняет код робота. Он запоминает последние значения переменных или каждый раз инициализирует их начальными значениями?
Если он НЕ запоминает значения моих переменных, то как удобней сделать сохранения их после прогона? Я (от тебя) слышал, есть такая штука как блокнот Ами - не расскажешь поподробней? Embarassed С примером Smile
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

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

Цитата:
АА периодически прогоняет код робота. Он запоминает последние значения переменных или каждый раз инициализирует их начальными значениями?

Каждый раз новыми Sad
Поэтому надо или сохранять нужные данные в файл, как я сделал в роботе для 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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen