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





СообщениеДобавлено: Чт Окт 09, 2008 11:17 pm Ответить с цитатой Вернуться к началу

[quote="000"][quote="velx"]
Олег, спасибо за ответы.

Удалил все программы из автозагрузки при включении, вроде глюк пропал, Ваш робот работает корректно. По-видимому, все таки конфликт с какой-то программой.

Еще вопрос: работает ли робот Меха в тесте с Bar Replay? У меня что-то не получается - сигналы рисует, а заявки в .tri файл не пишет. у всех так?
anor330
Гость





СообщениеДобавлено: Пт Окт 10, 2008 6:03 pm Ответить с цитатой Вернуться к началу

velx писал(а):

Походу вопрос: как сделать так, чтобы в реверсивной системе при первом сигнале не совершались две сделки вместо одной, т.е. в зависимости от сигнала было бы Buy или Short, а не Buy+Cover или Short+Sell, или это делается автоматом с помощью Equity(1,0)?

функция Equity в данном случае просто удаляет "лишие" сигналы и при необходимости актиирует стопы. Ами разумеется не в курсе, что надо каждый день закрывать все позиции поэтому он в новый день продолжает вести позы открытые вчера. Чтобы это изменить надо изменить код системы. Например можно принудительно закрывать сделки в 17.45 и не давать открыть новые. Мне кажется про это есть на форуме. Это удобно сделать например при помощи ф-ции timenum()
Вообще данный код робота Мех в своё время написал как образец кода который формирует и записывает в .tri файл строку на заключение сделки. Я его немного изменил исходя из своих соображений. Все остальное в этом коде разумеется вода которую надо изменять.[/quote]

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

Кстати, робот Меха у меня тоже не пишет в .tri файл.
000
Site Admin


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

СообщениеДобавлено: Пт Окт 10, 2008 8:46 pm Ответить с цитатой Вернуться к началу

В понедельник размещу пример.

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Сб Окт 11, 2008 1:00 pm Ответить с цитатой Вернуться к началу

Привет всем!
Олег, подскажи непонятку:
Код робота что лежит на главной странице пишет в .tri -
TRANS_ID=071405002; PRICE=2254.00; QUANTITY=10.00; OPERATION=S; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=LKOH; ACCOUNT=L01-00000F00; CLIENT_CODE=59007;

Квик ес-но ругается (на выделенное красным)
Я конечно исправил
Код:
"QUANTITY="+NumToStr(Lots, format = form)+"; "+

на
Код:
"QUANTITY="+NumToStr(Lots, format = 1.00)+"; "+

Заявки стали выполнятся.

Непонятен сакральнй смысл первого варианта, квик по любому не может кушать лот в виде 1.00 ?? или я чего не понимаю?


Последний раз редактировалось: Rybak (Вс Окт 12, 2008 10:57 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Окт 12, 2008 9:38 pm Ответить с цитатой Вернуться к началу

Квик ругается когда число знаков в строке заявки больше чем минимальное движение цены по данному инструменту. Для разеых бумаг эта цифра разумеется различна. В коде это должно устанавливаться автоматически исходя из установленного по инструменту TickSize стокой
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));


Это не работает или у тебя не установлен TickSize???

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



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Вс Окт 12, 2008 11:01 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Квик ругается когда число знаков в строке заявки больше чем минимальное движение цены по данному инструменту. Для разеых бумаг эта цифра разумеется различна. В коде это должно устанавливаться автоматически исходя из установленного по инструменту TickSize стокой
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));


Это не работает или у тебя не установлен TickSize???


TickSize установлен на все стоки (фьючев нет т.к. гоняю на демо) в размере 0.01
Выше я приводил строку, на которую при работе в реале ругается квик.
Дословно не помню, но смысл такой:
"число лотов в заявке должно быть целым числом"
Т.е. QUANTITY=1.00 для него не целое число.

PS
Сорри, посмотрел предыдущий пост и ужаснулся - ввёл в заблуждение,
сейчас исправил.
Ругается на QUANTITY=1.00 а хочет QUANTITY=1
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Окт 13, 2008 12:09 am Ответить с цитатой Вернуться к началу

Проверю. Если ошибка в коде, то исправлю.

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



Зарегистрирован: 01.07.2008
Сообщения: 53
Откуда: Омск

СообщениеДобавлено: Ср Окт 29, 2008 2:34 pm Ответить с цитатой Вернуться к началу

Какую функцию несет параметр "Full Name"? Без него нельзя.
Посмотреть профиль Отправить личное сообщение
shaly



Зарегистрирован: 01.07.2008
Сообщения: 53
Откуда: Омск

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

Может для работы робота нужны какие то программы установленные на компе? типа как на МТС омеги "Для работоспособности программы необходимо установить Omega Research ProSuite и ОБЯЗАТЕЛЬНО установить BDE Administrator от фирмы BORLAND." и без них робот не работает?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Окт 29, 2008 5:52 pm Ответить с цитатой Вернуться к началу

Никаких другмх программ кроме Ами и Квика ненадо.

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





СообщениеДобавлено: Вт Ноя 18, 2008 5:19 pm Ответить с цитатой Вернуться к началу

Вопрос в следующем:
если в коде робота указано количество лотов больше сотни (как например указано ниже 1041 и 4407)
Lots =
IIf(Name() == "LKOH", 130,
IIf(Name() == "GAZP", 1041,
IIf(Name() == "SBER03",4407,
1)));

То в tri файл посылаются значения с разделителем тысяч (см. пример)

QUANTITY=4,407
QUANTITY=1,041

И дальше QUIK ругается и не хочет выставлять заявку:

"НЕПРАВИЛЬНО УКАЗАНО КОЛИЧЕСТВО : "4,407"
СОБЩЕНИЕ ОБ ОШИБКЕ: ЧИСЛО НЕ МОЖЕТ СОДЕРЖАТЬ ЗНАК РАЗДЕЛИТЕЛЯ ДРОБНОЙ ЧАСТИ"

Какие надо внести изменения в раздел "СЮДА РУКАМИ НЕ ЛИЗИТЬ" чтобы решить проблему. Ниже приведен текст используемого раздела.
Заранее спасибо.


//////////// Формируем транзакцию.//////////////
////////////////////////////////////////////////
//////// !!!!СЮДА РУКАМИ НЕ ЛАЗИТЬ!!!! /////////
////////////////////////////////////////////////

Classcode = GroupID(1);
if(TickSize == 0)
{
PopupWindow( "Не задан размер тика значение TickSize", "ошибка", timeout = 5, left = -1, top = -1 );
}
else
{
Otstup = round(LastValue(C)*Otstup/100/TickSize)*TickSize;
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));
}

procedure savetrifile(stransid,sstr)
{
f = fopen(FileName, "r");
found = 0;
if(f)
{
while(!feof(f))
{
s = fgets(f);
if(StrFind( s, stransid) > 0) found = 1;
}
fclose(f);
}
if (NOT found)
{
f = fopen(FileName, "a");
if(f)
{
fputs(sstr+"\n",f);
fclose(f);
}
}
}


function makeandsave(sOper, sprice)
{
CCS="";
if (Client != "") CCS="CLIENT_CODE="+Client+";";

transid = "TRANS_ID=" +FullName()+LastValue(TimeNum())+dir+"; ";

str = transid +
"PRICE=" +NumToStr(sprice, format = form, separator=False)+"; " +
"QUANTITY=" +NumToStr(Lots, format = 1.00)+"; "+
"OPERATION=" +sOper+"; "+
"CLASSCODE=" +Classcode+"; "+
"ACTION=" +"NEW_ORDER; "+
"TYPE=" +"L; "+
"SECCODE=" +Name()+"; "+
"ACCOUNT=" +Account+"; "+
CCS;

savetrifile(transid, str);
}

if (TimeFrame == Interval() & FullName() != "")
{
if(Buy)
{
price = Close[BarCount-1] + Otstup;
dir = "1";
makeandsave("B", price);
}
if(Sell)
{
price = Close[BarCount-1] - Otstup;
dir = "2";
makeandsave("S", price);
}
if(Short)
{
price = Close[BarCount-1] - Otstup;
dir = "3";
makeandsave("S", price);
}
if(Cover)
{
price = Close[BarCount-1] + Otstup;
dir = "4";
makeandsave("B", price);
}

}
else if (TimeFrame != Interval())
PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
"ошибка", timeout = 5, left = -1, top = -1 );
else
PopupWindow( "Не задан двузначный номер в поле FullName", "ошибка", timeout = 15, left = -1, top = -1 );

//// mehanizator (c) 2004, http://www.russian-trader.ru
//// 000 (c) 2008, http://www.amisite.ru
000
Site Admin


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

СообщениеДобавлено: Вт Ноя 18, 2008 6:27 pm Ответить с цитатой Вернуться к началу

Вот блин. Ошибся...
Замени строку
Код:

QUANTITY=" +NumToStr(Lots, format = 1.00)+"; "+

на
Код:

QUANTITY=" +NumToStr(Lots, format = 1.00, separator=False )+"; "+

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



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

СообщениеДобавлено: Ср Ноя 26, 2008 12:50 pm Ответить с цитатой Вернуться к началу

Привет всем. Я тут новичок. Хочу сказать спасибо за такую систему и вообще за форум - очень полезный, во многом мне помог.

Тестирую робота на реалтайм. В целом работает неплохо, но иногда возникают сбои - почему-то через несколько сделок (3-5.., по-разному) подаваемые сигналы в Ами не записываются в три-файл. Почему так может происходить и как это можно исправить?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Ноя 26, 2008 2:20 pm Ответить с цитатой Вернуться к началу

Цитата:

Привет всем. Я тут новичок. Хочу сказать спасибо за такую систему и вообще за форум - очень полезный, во многом мне помог.

Спасибо!
Цитата:

Тестирую робота на реалтайм. В целом работает неплохо, но иногда возникают сбои - почему-то через несколько сделок (3-5.., по-разному) подаваемые сигналы в Ами не записываются в три-файл. Почему так может происходить и как это можно исправить?

Странно, пока никто не жаловался.

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





СообщениеДобавлено: Чт Дек 04, 2008 5:57 pm Ответить с цитатой Вернуться к началу

Secret_K писал(а):
Привет всем. Я тут новичок. Хочу сказать спасибо за такую систему и вообще за форум - очень полезный, во многом мне помог.

Тестирую робота на реалтайм. В целом работает неплохо, но иногда возникают сбои - почему-то через несколько сделок (3-5.., по-разному) подаваемые сигналы в Ами не записываются в три-файл. Почему так может происходить и как это можно исправить?


Такая ситуация может происходить если Вы в начале торговой сессии не чистите файлы trans.tri output.trr input.tro от мусора предыдущего торгового дня. В причины не вдовался. По всей видимости возникает конфликт с идинтификаторами заявок. Так бывает, если например в tri файле указана сделка с определенными акциями в 17-00 (день там не указан) а Amibroker посылает заявку по этой же бумаге на в 10-00. В этом случае , почему то, Quik дуреет и не исполяет заявку. Эсть и другие ситуации. Но если чистить перед торговлей указанные файлы то пропусков с заявками не наблюдается.
Успехов
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen