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


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

СообщениеДобавлено: Сб Окт 14, 2017 8:28 am Ответить с цитатой Вернуться к началу

Может тогда стоит отключить энергосбережение?

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



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

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

000 писал(а):
Может тогда стоит отключить энергосбережение?

Да, попробую без энергосбережения и блокировок экрана.
Посмотреть профиль Отправить личное сообщение
skameykin22



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

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

И как, получилось?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
shaly



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

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

skameykin22 писал(а):
И как, получилось?

Да, причина в косячной работе в вечернюю сессию - включенныйй режим энергосбережения.
Посмотреть профиль Отправить личное сообщение
superolegb



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

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

добрый день

ошибка Too many arguments вот тут AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot, 0);

Робот и плагины взяты с 49 страницы.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Окт 07, 2018 7:26 am Ответить с цитатой Вернуться к началу

У тебя старый плагин. Надо убрать точность из кода.
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);

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



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

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

ок) спасибо все получилось
Посмотреть профиль Отправить личное сообщение
FriendlyDeepSpace



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

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

Приветствую. Долго собирался заняться таки АмиБрокером, и вот видимо тот момент настал.
Прошу прощения, если задам избитые вопросы, но боюсь что 50 страниц ветки не осилю. Прошу, подскажите)

На странице загрузок вижу два разных робота, и тут в страницах мелькали еще некие версии, я так и не понял какой мне подойдет.
Я торгую разные системы на разных таймфреймах. Каждая система покупает своим сигналом и продает то, что купила, своим сигналом. Не зависит от сигналов других систем. Т.е. лишь бы система помнила, что именно она и сколько купила, и вместо закрытия позиции не дала мне ненужный шорт. Или не закрыла не свою позицию.
Посоветуйте как мне лучше это реализовать, возможно я что-то неверно понимаю.
1. Что мне делать в этом случае? Делать каждый раз отдельно файл с вашим роботом и правилами входа для каждой системы, или в один файл с роботом вставлять по очереди правила всех систем? (не знаю как еще называть вещи своими именами, ибо путаюсь пока в общей "схеме" связки Амиброкера и Квика). Мне нужно, чтобы системы работали независимо, можно было отключить какую-то одну, или три, или все сразу, также видеть статистику по каждой и в свокупности.
2. Какой робот использовать, если стопы не нужны. Есть ли между ними разница, кроме того, что в одном возможны доливки, стопы и т.п., а в другом их нет? Может еще есть разница? Надежность, какие-либо функции и т.п. У меня вход и выход происходит по сигналу, без стопов. И выход из всех позиций в конце дня. В общем какой актуальный на данный момент робот качать?
3. Регулировать объем входа буду вручную. Можно ли так? Просто после закрытия роботом позиции, иду в код и даю новое значение, и следующие входы у этой конкретной системы будут с новым объемом? Останавливать ничего не нужно? Тут важно, отсылка к первому вопросу, т.е. каждая система в отдельный файл или как будет правильно, хотелось бы выяснить, чтобы не делать заведомо неверную пустую работу.
4. Сам АмиБрокер. Где его лучше брать и есть ли важность версии для работы?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Тебе нужен ВОТ ЭТОТ робот.
Сначала пробуй работу робота только по одной системе с равным, минимальным объемом. Если все устроит, то тогда и будешь спрашивать как запихать в него несколько систем.
А то ты еще первый курс не закончил а задаешь вопросы из пятого...

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



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

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

000 писал(а):
Тебе нужен ВОТ ЭТОТ робот.
Сначала пробуй работу робота только по одной системе с равным, минимальным объемом. Если все устроит, то тогда и будешь спрашивать как запихать в него несколько систем.
А то ты еще первый курс не закончил а задаешь вопросы из пятого...


Ок, спасибо за уточнение! Мне сказали, мол, лучше спроси, там есть грамотный отзывчивый разработчик Олег, он подскажет, вот я и спрашиваю)
Лучше задать вопрос перед тем, как будет потрачена куча попочасов, чтобы потом выяснить, что оно не подходит под задачи)
Обещаю стараться не задавать бестолковых вопросов!)
Посмотреть профиль Отправить личное сообщение
FriendlyDeepSpace



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

СообщениеДобавлено: Чт Дек 27, 2018 12:05 pm Ответить с цитатой Вернуться к началу

Привет, нужна ваша помощь. Видимо я что-то не так делаю, а что - не понятно.
1. Ставлю Квика-Юниора 7.23.1.4, и Амиброкер 5.70.2 (32bit)
2. Далее - скачиваю файл торгового Робота со страницы http://www.amisite.ru/afl/exp/0002.php. Оттуда же перехожу по ссылкам на плагины, и скачиваю два плагина в папку C:\Program Files (x86)\AmiBroker\Plugins.
3. Иду на страницу https://arqatech.com/ru/support/files/, оттуда скачиваю https://arqatech.com/upload/iblock/80a/Trans2QuikAPI_1.3_x64.zip, из него достаю trans2quik.dll и кладу в C:\Program Files (x86)\AmiBroker.
4. Оттуда же качаю QUIK2AMIBROKER_DataPlugin.dll, кладу в C:\Program Files (x86)\AmiBroker\Plugins.
5. Создаю базу данных в Ами, настраиваю экспорт из Квика-Юниора, все работает, котировки в созданный инструмент идут реал-тайм.
6. Правлю файл Робота, меняю инструмент на мой, лот, таймфрейм, правила входа, путь к Квику-Юниору, сохраняю. Далее пробую нажать Scan для проверки, и получаю ошибки синтаксиса в файле Робота. Скрин ошибок прилагаю. И еще, если открыть в Ами Tools>>Plugins, то там будет только AS_File, а второго нет. Так и должно быть?

Вот код Робота:

Код:
Filter = 1;

TimeFrame      = 60;               // таймфрейм в секундах.
Account         = "SPBFUT00754";   // Номер счета
Client_Code      = "SPBFUT00754";            // Код Клиента
Quik         = "C:\\QUIKJunior";         // путь к Квику


Tickers = "Si_Junior";             // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами


///////////////
// задаем размер лотов, коды и отступ для разных символов
/////////////

if(Name() == "Si_Junior") {            //Символ как он называется в Ами
   SecCode         = "SiH9";            
   Class         = "SPBFUT";
   Lots            = 1;
   TickS         = 1;               // Минимальный шаг цены торгуемой бумаги
   Otstup         = 100;               // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
//else if(Name() == "SBER") {      //Символ как он называется в Ами
//   SecCode         = "SBER";            
//   Class         = "EQBR";
//   Lots            = 2;
//   TickS         = 0.01;               // Минимальный шаг цены торгуемой бумаги
//   Otstup         = 1;                  // Заявка будет выставлена хуже текущей цены на Otstup рублей
//}

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

Buy1 = C>O;
Sell1 = C<O;
Short1 = 0;
Cover1 = 0;

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

Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);

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

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

///////////// проверка наличия символа в списке для торговли ////////////////

k = 0;
Permit_Ticker = False;
do {
  Tick = StrExtract(Tickers, k);
  k++;
  if(Name() == Tick)
    Permit_Ticker = True;
} while(Tick != "");

///////////    Функции  ////////////

procedure orders(bs, pr, Lot)
{
   connection = 0;

   QC = AS_QUIK_CONNECT (Quik);

   if (QC == 1)
   {
      connection = 1;
      text = "Есть соединение с сервером";
      Color = colorGreen;
   }
   else if (QC == -1)
   {
      text = "нет соединения с квиком";
      Color = colorRed;   
   }
   else if (QC == -2)
   {
      text = "нет соединения с сервером";
      Color = colorRed;
   }
   else
   {
      text = "фигня какая то";
      Color = colorRed;
   }
 
   if(connection == 1)
   {
      order = AS_QUIK_SEND_SYNC_NEWORDER( "123",      // OrderID - Любые цифры
                                 Account,
                                 Client_Code,
                                 "L",      // Тип заявки M-рыночная, L-лимитированная
                                 Class,
                                 SecCode,
                                 bs,
                                 pr,
                                 TickS,
                                 Lot);
   }

   if(StrToNum(order) > 100)
   {
      iz = "исполнена";
      coloriz = colorGreen;
      str = str + "  заяка исполнена" + " ответ сервера=" + order;
      if(pos > 0 AND bs == "S")                // закрытие лонга
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0, 0);
      else if(pos == 0 AND bs == "S")         // шорт
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot, 0);
      else if(pos < 0 AND bs == "B")          // закрытие шорта
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0, 0);
      else if(pos == 0 AND bs == "B")       // лонг
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot, 0);
      str = str + "  позиция на момент исполнения " + pos;
   else {
      iz = "не исполнена";
      coloriz = colorRed;
      str = str + "  заяка НЕ исполнена" + " ответ сервера=" + order;
   }
}

////////// конец Функций //////////

if (TimeFrame == Interval() AND Permit_Ticker)
{
   if(Buy1[BarCount-1] AND pos == 0) {
      str = str + "  Buy";
      sd = "Buy";
      orders("B", round(C[BarCount-1]) + Otstup, Lots);
      AS_WRITE_FILE("log.quik", str);
   }
   else if(Sell1[BarCount-1] AND pos > 0) {
      str = str + "  Sell";
      sd = "Sell";
      orders("S", round(C[BarCount-1]) - Otstup, abs(pos));
      AS_WRITE_FILE("log.quik", str);
   }
   else if(Short1[BarCount-1] AND pos == 0) {
      str = str + "  Short";
      sd = "Short";
      orders("S", round(C[BarCount-1]) - Otstup, Lots);
      AS_WRITE_FILE("log.quik", str);
   }
   else if(Cover1[BarCount-1] AND pos < 0) {
      str = str + "  Cover";
      sd = "Cover";
      orders("B", round(C[BarCount-1]) + Otstup, abs(pos));
      AS_WRITE_FILE("log.quik", str);
   }
}
else if(TimeFrame != Interval()) {
   PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
                     "ошибка", timeout = 5, left = -1, top = -1 );
}

SetOption( "NoDefaultColumns", 1 );
AddTextColumn(Name(), "Символ", 1.0, colorDefault, colorDefault, 60);
AddColumn( C[BarCount-1], "Последняя цена", 1.2, colorDefault, colorDefault, 100 );
AddColumn( AS_READ_PARAM("Quik_Robot", Name(), "pos"), "Позиция", 1.0, colorDefault,
   IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") > 0, colorGreen,
   IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") < 0, colorRed, colorDefault)), 60);
AddTextColumn(sd, "Сигнал", 1.0, colorDefault, colorDefault, 60);
AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);
AddTextColumn(iz, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
AddTextColumn(order, "Заявка", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Дек 27, 2018 4:30 pm Ответить с цитатой Вернуться к началу

AS_QuikTrade.dll точно положил в C:\Program Files (x86)\AmiBroker\Plugins. ???
Если положил, то плагин будет виден в Tools -> Plug-Ins

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



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

СообщениеДобавлено: Чт Дек 27, 2018 4:34 pm Ответить с цитатой Вернуться к началу

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


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

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

и TRANS2QUIK.dll точно лежит в C:\Program Files (x86)\AmiBroker\ ???

Попробуй вот этот TRANS2QUIK.dll я проверил, с ним работает.
http://arqatech.com/upload/iblock/006/Trans2QuikAPI_1.2.rar
Нужен рестарт Ами.

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



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

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

Ты прав, подтверждаю, установка версии TRANS2QUIK.dll из твоего сообщения привела к появлению второго плагина! Значит новая версия не подходит. Но проверка Робота на ошибки указывает, что еще что-то все-таки осталось под вопросом. На моменте нажатия Scan или Explore, как и просто при проверке синтаксиса Робота, идет указание на ошибку. Скрин прилагаю.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen