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



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

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

000 писал(а):
А ВОТ

попробовал потестить, вход делает и тут же начинает закрывать, потом снова покупает и закрывает... и так каждую секунду...
поменял :
[code]
Stop = 1; //1 тик за лой
...
Buy1 = (C-O)>=2; //добавил правило лонга
Sell1 = price+5 ; //тейкпрофит 5 пунктов
...
Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]-(Stop);// убрал процентность стопа
...
/// стопы ///
if(pos > 0 AND L[BarCount-1] < AS_READ_PARAM("Quik_Robot", Name(), "price")-(Stop))//убрал процентность стопа
[code]
цена не заходила за минимум текущего бара, но робот позу закрывал...
по идее робот делает вход на сигнальной свече, но дальше что то непонятное... Very Happy что я не так сделал? Embarassed [/code]
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Фев 08, 2014 10:20 pm Ответить с цитатой Вернуться к началу

Трудно точно сказать что не так не видя всего кода, однако есть подозрение.
Рассмотрим вот эту часть кода
Код:
////////////////////////////////////

text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + "  " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");

//////////////Система///////////////

Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = Cross(MA(C, 20), C);
Short1 = Cross(MA(C, 40), C) AND C < MA(C, 20);
Cover1 = Cross(C, MA(C, 20));

Ты изменил строку
Код:
Sell1 = Cross(MA(C, 20), C);

на
Код:

Sell1 = price+5 ; //тейкпрофит 5 пунктов

Но в коде чуть выше написано
Код:
price = 0;

В итоге получается что Sell1 = 0 + 5;
Соответственно продажа активна всегда когда есть длинная позиция.

Надо сделать так
Код:
////////////////////////////////////

text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + "  " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");
price = AS_READ_PARAM("Quik_Robot", Name(), "price");

//////////////Система///////////////

Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = 0;
Short1 = 0;
Cover1 = 0;

///////////Конец Системы////////////

Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > (C[BarCount - 2] - Stop);
Sell1 = H[BarCount - 1] > price + 5;
Short1 = 0;
Cover1 = 0;

Это мы разобрались с профитом.
Что касается стопа.
Лучше всего при открытии позиции записать конкретную цену стопа L[BarCount - 2] - 1 (прямо обозвать stoPrice). И потом при проверке стопа сравнивать прямо с этой ценой.

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



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

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

ага, значит вся эта коляска имеет вид:

if(Name() == "тикер") {
SecCode = "тикер";
Class = "класс тикера";
Lots = 1;
TickS = 1;
Stop = L[BarCount - 2] - 1; // стоп за лой сигналной свечи + 1 пункт (если лой сигнальной свечи равен 100 то стоп = 99)
Otstup = 5; // Заявка будет выставлена хуже текущей цены на Otstup рублей

в самом начале задаем Stop?

а код для лонгового стопа (в пунктах) имеет вид:
if(pos > 0 AND L[BarCount-1] < AS_READ_PARAM("Quik_Robot", Name(), "price")-(Stop))
{
Sell1 = 1;
str = str + " сработал стоп при лонге";
тогда вопрос: почему в твоем коде процентность стопа вычисляется в блоке ///стопы/// а не в самом начале, в блоке /// задаем размер лотов, коды и отступ для разных символов?

и еще вопрос:
у меня в тестере был стоплосс
ApplyStop(stopTypeLoss, stopModePoint,
abs((Ref(L,-1)-SLExp)-BuyPrice), //SLExp=1 BuyPrice=O (Цена открытия)+Otstup
ExitAtStop=1, volatile=False, ReEntryDelay = 0);
то получается для робота Ref(L,-1) меняется на L[BarCount-2]???
L[BarCount-1] - лой текущей свечи??
L[BarCount-2] - лой предыдущей свечи???
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Нет. Не правильно.
Код:
Stop = L[BarCount - 2] - 1;

Это не стоп за лой сигналной свечи + 1 пункт. Это стоп за лой предпоследней свечи. На свече открытия это действительно стоп за лой предпоследней свечи, а когда нарисуется следующая свеча то и стоп изменится.
Функция ApplyStop() автоматически "запоминает" стоп на момент входа а в роботе это надо делать руками. Поэтому я и предложил записать стоп в файл и читать его оттуда.
Цитата:
тогда вопрос: почему в твоем коде процентность стопа вычисляется в блоке ///стопы/// а не в самом начале, в блоке /// задаем размер лотов, коды и отступ для разных символов?

Просто я решил, что так удобнее для изменения кода. Изменил одну цифру и все. Не надо разбираться в нагромождении расчетов.

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



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

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

ок. Добавил функцию записи числа стопа в ini-файл.
Получается следующее:
пока позиции нет - всё хорошо.
Поступает сигнал - берет позицию, записывает в файл строку StopPrice=число.
Сидит и ждет события для закрытия. (и стоп и лосс срабатывают корректно на 1-ом тестовом лоте)
После события на закрытие лонга пишет строку в ini-файл
StopPrice=0
и далее игнорирует последующие входы.
ощущение что он как то "одноразово" делает сделки. как быть?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Тебе надо чтобы он входил и выходил на одном баре несколько раз?

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



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

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

неее, такое не надо. Обычная торговля по свечке. Вошли по сигналу, вышли по условию, входим по следующему сигналу и т.д.
может скинуть код в личку?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Hokum писал(а):
неее, такое не надо. Обычная торговля по свечке. Вошли по сигналу, вышли по условию, входим по следующему сигналу и т.д.
может скинуть код в личку?

Давай.

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



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

СообщениеДобавлено: Вс Фев 23, 2014 4:47 pm Ответить с цитатой Вернуться к началу

Добрый день!

У меня возникла проблема при подключении Ами к Квику. Конфигурация:
Win XP, Quik 6.10, Ami 5.6.2 pro (cra), плагины As_... в C:\Program Files\AmiBroker\Plugins ,Trans2QuikAPI_1.2 в C:\Program Files\AmiBroker\,Quik в C:\Aton\QUIK, включил обработку внешних транзакций (работает). Но соединения Ами с Квик нет. Я перепробовал все варианты которые нашёл на форумах вашего сайта и арки, вытаскивал квик в корень С: (установщик от Атона не даёт других вариантов кроме, как в C:\Aton\QUIK), при этом изменял путь в роботе соответсвенно. Закидывал Trans2QuikAPI куда только можно, но робот так и не подключился - строка соединение белая.
Все функции в коде подсвечиваются синим. Строки заявка в тестере красные

Проверял API_Tester_DLG для Trans2QuikAPI, с сайта Quik.ru: транзакции получает, connect-disconnect делает, связи между Квик и dll подтверждает. В чём может причина?

Вспомнил когда-то отключал некоторые службы в Windows. Может это влиять?

Скажу сразу не программист (базовые знания на уровне где-то, когда-то бейсик и паскаль), немного подружился с AFL, и не очень продвинутый пользователь.

И ещё два вопроса:
1 Можно ли в коде робота использовать Param для изменения параметров расчёта "на ходу"
2 Лог файл робота создаётся автоматически или ручками. потерялся уже.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Фев 23, 2014 8:47 pm Ответить с цитатой Вернуться к началу

Вот такой код
Код:

Filter = 1;
q = AS_QUIK_CONNECT("C:\\Aton\\QUIK");
AddColumn(q, "");

Пихаешь в АА и топчешь Explore 1 раз. Квик обязательно должен быть запущен.
Что пишет в столбце "Column 0"???

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



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

СообщениеДобавлено: Вс Фев 23, 2014 9:24 pm Ответить с цитатой Вернуться к началу

Column 0: -2
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Фев 23, 2014 9:33 pm Ответить с цитатой Вернуться к началу

-2 обозначает есть связь Ами с Квиком, но сам Квик не связан с сервером. Т.е. связь с Квиком есть.

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


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

СообщениеДобавлено: Вс Фев 23, 2014 9:37 pm Ответить с цитатой Вернуться к началу

Skornet писал(а):
Добрый день!
И ещё два вопроса:
1 Можно ли в коде робота использовать Param для изменения параметров расчёта "на ходу"
2 Лог файл робота создаётся автоматически или ручками. потерялся уже.

1. Можно. Только надо следить, чтобы не получилось так, что робот был в позе, а после изменнения параметра система типа не в позе и соответственно не будет из нее выходить, а реально поза на рынке есть.
2. Автоматически создается.

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



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

СообщениеДобавлено: Вс Фев 23, 2014 9:58 pm Ответить с цитатой Вернуться к началу

По вопросам я понял.

В пятницу пробовал запустить, но не было ни одной сделки, не было ни какой реакции, ни ошибок. Параметры клиента правильные. В тестере система работала.

Тогда куда смотреть?
И в коде так и должно быть Buy1.., Sell2...или это переменные, или команды должны быть, без цифр?


Связи с сервером нет , видимо в Атоне профилактика.


Последний раз редактировалось: Skornet (Вс Фев 23, 2014 11:04 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Фев 23, 2014 10:45 pm Ответить с цитатой Вернуться к началу

Вместо системы напиши в коде робота
Buy1 = 1;
Размер позиции поставь минимальный.
и один раз Explore. Должна пройти покупка и открыться позиция.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen