Начать новую тему Ответить на тему |
Список форумов 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 След. |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну прально. Моя ошибка. Вот это
Код: |
AddTextColumn(ITOrder(Accaunt, Code, bs, 1, 1, 0, Lots, 0), "номер ордера");
N = ITOrderMessage();
AddTextColumn(N, "ответ IT Trade");
if(StrToNum(N) > 0) {
|
замени на
Код: |
M = ITOrder(Accaunt, Code, bs, 1, 1, 0, Lots, 0);
AddTextColumn(M, "номер ордера");
N = ITOrderMessage();
AddTextColumn(N, "ответ IT Trade");
if(StrToNum(M) > 0) {
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
Я до этого уже дошел, сделал, продает, покупает по две, нужно сначала проверять позу, а уж потом отправлять заявку. Сейчас отъеду на пару часиков, может к закрытию попробую сделать и ещё запустить. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Точно. Блин.
Код: |
Filter = 1;
TimeFrame = 5*60; // таймфрейм в секундах.
Accaunt = "ST5015-RF-01";
Tickers = "RIM1,SRM1"; // торгуемые символы через запятую без пробелов. Для контроля ошибок
/////////////
///////////////
// задаем размер лотов и коды символов
/////////////
if(Name() == "RIM1")
{
NameForPos = "RIM1"; // это для записи файла с текущей позицией,
//на случай если имя бумаги в Ами содержит запрещенные символы
Lots = 1;
Code = "RTS-6.11_FT";
}
else if(Name() == "SRM1")
{
NameForPos = "SRM1"; // это для записи файла с текущей позицией,
//на случай если имя бумаги в Ами содержит запрещенные символы
Lots = 5;
Code = "SBRF-6.11_FT";
}
////////// Функции //////////
function ReadPos() {
fh = fopen( NameForPos + "_robot.it", "r");
if( fh ) {
p = fgets( fh );
p = StrToNum(p);
}
else {
fh = fopen( NameForPos + "_robot.it", "w");
fputs( "0", fh);
p = 0;
}
fclose( fh );
return p;
}
procedure WritePos( q ) {
fh = fopen( NameForPos + "_robot.it", "w");
fputs( NumToStr( q, 1.0, False ), fh);
fclose( fh );
}
procedure LogWrite(s) {
fh = fopen( "robot_log.it", "a");
s = s + "\n";
fputs( s, fh);
fclose( fh );
}
pos = ReadPos();
str = Now(0) + " " + Name();
procedure order(bs) {
M = ITOrder(Accaunt, Code, bs, 1, 1, 0, Lots, 0);
AddTextColumn(M, "номер ордера");
N = ITOrderMessage();
AddTextColumn(N, "ответ IT Trade");
if(StrToNum(M) > 0) {
str = str + " заяка исполнена" + " ответ сервера=" + N;
if(pos > 0 AND bs == 2) { // закрытие лонга
WritePos(0);
}
else if(pos == 0 AND bs == 3) { // шорт
WritePos(-1*Lots);
}
else if(pos < 0 AND bs == 4) { // закрытие шорта
WritePos(0);
}
else if(pos == 0 AND bs == 1) { // лонг
WritePos(Lots);
}
str = str + " заяка исполнена";
}
else {
str = str + " заяка НЕ исполнена" + " ответ сервера=" + N;
}
}
///////////// проверка наличия символа в списке для торговли ////////////////
k = 0;
Permit_Ticker = False;
do {
Tick = StrExtract(Tickers, k);
k++;
if(Name() == Tick)
Permit_Ticker = True;
} while(Tick != "");
//////////////Система///////////////
Buy1 = Cross(C, MA(C, 10));
Sell1 = Cross(MA(C, 10), C);
Short1 = 0;
Cover1 = 0;
//////////////Система///////////////
AddColumn( C[BarCount-1], "цена", 1.2, colorDefault, colorDefault, 70 );
AddColumn( pos, "позиция", 1.0, colorDefault, IIf(pos > 0, colorGreen, colorDefault), 60);
if (TimeFrame == Interval() AND Permit_Ticker)
{
if(Buy1[BarCount-2] AND pos == 0) {
order(1);
str = str + " Buy";
AddTextColumn("Buy", "Buy");
LogWrite(str);
}
else if(Sell1[BarCount-2] AND pos > 0) {
order(2);
str = str + " sell";
AddTextColumn("Sell", "Sell");
LogWrite(str);
}
if(Short1[BarCount-2] AND pos == 0) {
order(3);
str = str + " Short";
AddTextColumn("Short", "Short");
LogWrite(str);
}
else if(Cover1[BarCount-2] AND pos < 0) {
order(4);
str = str + " Cover";
AddTextColumn("Cover", "Cover");
LogWrite(str);
}
}
else if(TimeFrame != Interval()) {
PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
"ошибка", timeout = 5, left = -1, top = -1 );
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
Да, всё работает!!! Поздравляю!!! И большое СПАСИБО. |
Последний раз редактировалось: belin (Пт Июн 10, 2011 6:07 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
Да, всё работает, с 18-04 до 18-45 совершил 10 сделок каждый раз сервер отвечал номером заявки, лишь на первом шаге ответ сервера отрицательный (подсоединение), но уже на втором через время соответствующее run every ...sec, робот входил в позицию. Номера заявок отличаются от номеров, которые транслируются в Смарте, но я так понимаю, что это приходят внутренние номера. Если лупить по маркету, то уже можно работать как в Квике. Можно потихоньку пробовать на боевом. Только не на ММВБ, здесь сегодняшние пробы обошлись в -1000 деморублей, правда, я работал на минутках. И вообще за день 31 сделка, (заявок на 2 больше - 2 подсоединения) каждый раз сервер отвечал и всё сработало. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Привет
Завтра хочу запустить "Бендера" в пока режиме демо, а там посмотрим
Хотел бы "на берегу" уточнить два момента
1.У себя в коде я пишу
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
Во избежании всякого косячного
Нужно ли добавить это в "код" робота?
2.Как я понимаю, при наступлении события Бай Селл Шорт или Ковер
робот отсылает маркет заявку? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да и Да.
Хотя 1 не обязательно. Робот сам смотрит позицию и если текщая лонг, то больше покупать не станет до тех пор пока не закроется лонг. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Ivan
Зарегистрирован: 23.03.2011
Сообщения: 20
|
Олег, отличная работа, большое вам спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Блин а я все не могу протестить
РТС как всегда - жопа с ручкой
не работает тестовый сервер уже неделю |
|
|
Посмотреть профиль Отправить личное сообщение |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
max писал(а): |
Блин а я все не могу протестить
РТС как всегда - жопа с ручкой
не работает тестовый сервер уже неделю |
Я на тестовой ММВБ пока проверяю прохождение заявок, нареканий нет. Вроде сегодня обещали сделать тестовый Фортс, но это РТС, они ещё вчера обещали, пробуй пока на ММВБ, я полдня разбирался с роботом пока не пошло. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сегодня погонял на демо ММВБ.
Вот такой код "системы" на минутках.
Код: |
Buy1 = frac(Minute()/2) > 0;
Sell1 = frac(Minute()/2) == 0;
Short1 = 0;
Cover1 = 0;
|
Покупка/продажа каждую минуту. Отработало хорошо. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот еще что. Хотел было еще на Газпроме его запустить, а у меня на демке смарт наколбасил хренову тучу тикеров в Ами и названия там типа OAO "Газпром".. (с кавычками). Это на самом деле (на реале) тоже так? Там кавычки всю малину портят.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
belin писал(а): |
max писал(а): |
Блин а я все не могу протестить
РТС как всегда - жопа с ручкой
не работает тестовый сервер уже неделю |
Я на тестовой ММВБ пока проверяю прохождение заявок, нареканий нет. Вроде сегодня обещали сделать тестовый Фортс, но это РТС, они ещё вчера обещали, пробуй пока на ММВБ, я полдня разбирался с роботом пока не пошло. |
да мне именно РТС проверить надо
блин время жалко уходит |
|
|
Посмотреть профиль Отправить личное сообщение |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
000 писал(а): |
Вот еще что. Хотел было еще на Газпроме его запустить, а у меня на демке смарт наколбасил хренову тучу тикеров в Ами и названия там типа OAO "Газпром".. (с кавычками). Это на самом деле (на реале) тоже так? Там кавычки всю малину портят.... |
Как на реале -не знаю, ММВБ не торгую, а на демо я Газпром гонял всё проходило с таким куском кода в образце твоего робота
Код: |
else if(Name() == "GAZP")
{
NameForPos = "GAZP"; // это для записи файла с текущей позицией,
//на случай если имя бумаги в Ами содержит запрещенные символы
Accaunt = "ST5015-MS-01";
Lots = 10;
Code = "GAZP";
} |
И не понял про какие кавычки говорится? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У тебя имя тикера в Ами Name() == "GAZP", а у меня в Ами он называется OAO "Газпром"... т.е. в роботе надо писать
Код: |
if(Name() == "OAO "Газпром"") |
Разумеется такая запись не прокатывает.... |
_________________ 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, 20, 21, 22, 23, 24 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|