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


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

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

Цитата:
В таком случае подскажи, код на моей картинке верен для двух систем на двух инструментах?

Да
Цитата:
И конструкцию "Buy1 = Ref(Buy1, -1); ..." прописывать в каждой системе? Или один раз в конце, как показано у меня? Надо ли их обнулять перед системами?

Достаточно одного раза в конце, как у тебя. Обнулять не надо.
Цитата:
И еще, в случае с elsе: остальные не будут проверяться лишь на той свече, где сработало первое условие, или пока не будет выхода из позиции, открытой по одной из систем по первому сработавшему условию?

Бррр. Не понял вопроса...
Цитата:
Хорошо, есть поле АККАУНТ. Т.е. я так понимаю в роботе можно прописать несколько аккаунтов? Если да, то как это сделать? И как сделать указание по количеству лотов на каждый счет? И если опять же можно так сделать, то возможно можно там же прописать и пути для двух Квиков.

Это зависит от того одно и тоже торгуется на разных аккаунтах или нет.
Если одно и тоже, то тут
Код:
   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);

Пишешь несколько orders("B", round(C[BarCount-1]) + Otstup, Lots); (по числу аккаунтов) при этом меняешь вызов процедуры примерно так
orders("B", round(C[BarCount-1]) + Otstup, Lots, Account1);

должно получиться примерно так
Код:
   if(Buy1[BarCount-1] AND pos == 0) {
      str = str + "  Buy";
      sd = "Buy";
      orders("B", round(C[BarCount-1]) + Otstup, Lots1, Account1);
                                orders("B", round(C[BarCount-1]) + Otstup, Lots2. Account2);
      AS_WRITE_FILE("log.quik", str);

и саму процедуру procedure orders(bs, pr, Lot) тоже меняешь таким макаром
procedure orders(bs, pr, Lot, Account)

Соответственно тогда можно и лоты задавать для каждого вызова orders

Кроме того надо будет записывать и читать текущую позицию в Quik_Robot.ini для каждого аккаунта отдельно.

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



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

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

Олег, возникла проблема с роботом.

Перекинули его товарищу на компьютер. Все пути, все прописали. В Ами робот видно, что работает, считает. При запуске ни на что не ругается. Но когда проходит сигнал, отображает, что соединение не установлено. Все ДЛЛки покидали в нужные папки. Все сделали идентично. Но у меня на обоих компах работает, а тут нет. Пишет следующее:

04.10.2012 21:25:05 Ri Sell заяка НЕ исполнена ответ сервера=

Вложу в сообщение полный файл лога. Начало там с моего компьюетра поэтому заявки исполнялись.

Единственное, у товарища папка с Ами установлена в папку самого Квика. Может ли это повлиять?

Имеет ли значение большими или маленькими буквами написана папка КВИК в коде робота?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Маленькие и большие буквы значение имеют (кажется). А в самом квике включили обработку внешних транзакций?

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



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

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

Каким образом прописать Lots, если это не константа, а переменная? Простое присвоение ей значения не работает, пишет, Argument has incorrect type (the function expects different argument type here)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вероятно пытаешься присвоить переменной массив.
Для этого надо взять из массива одно значение. Например
Код:
Lots = LastValue(Array);

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



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

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

спасибо, помогло.
Посмотреть профиль Отправить личное сообщение
Alex14



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

СообщениеДобавлено: Пт Ноя 02, 2012 10:49 am Ответить с цитатой Вернуться к началу

искал на форуме, но так и не дотюкал как решить проблему

Код:
  for (i = 1; i < BarCount; i++)
    {

    if (............. //условие покупки
       { 
      Buy1[ i ] = 1;
       Pos= 100;
       }       

     if (...................//условие доливки
       {
        Buy1[ i ] = sigScaleIn;
        Pos= 100;
       }

    if (......................... //условие шорта
       {
         Short1[ i ] = 1;
         Pos= 100;
       }
      if (........................)//доливка шорта
       {
          Short1[ i ] = sigScaleIn;
          Pos= 100;
       }
}


Sell1 = ,,,,,,,,,,,,,,,,;

Cover1 =,,,,,,,,,,,,,,,,,,,,,,,,;

подскажите пожалуйста, как это код прилепить к роботу? в тестере все считает правильно.
Что необходимо указать в роботе?
Код:
Lots            = 1 ;

чтобы выполнялась доливка на величину Pos, пока хватает денег Сигналы на закрытие лонга и закрытие шорта полностью закрывают позу[/code]
Посмотреть профиль Отправить личное сообщение
spitfire



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

СообщениеДобавлено: Пт Ноя 02, 2012 11:28 am Ответить с цитатой Вернуться к началу

sigScaleIn заменить на 1, также желательно переменную Lots переписывать, если доливки и входы не идентичные по объему.
Посмотреть профиль Отправить личное сообщение ICQ Number
Alex14



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

СообщениеДобавлено: Пт Ноя 02, 2012 11:37 am Ответить с цитатой Вернуться к началу

доливки и входы идентичны по объему, я же в коде указал. И , на сколько я понимаю, Buy=sigScaleIn и Buy=1 это две разные вещи, если заменить то доливки не будет...Или я не прав?Вопрос то и стоит, что указать для Lots=
Посмотреть профиль Отправить личное сообщение
spitfire



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

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

Для робота, чтобы кинуть заявку, надо чтобы Buy/Sell/Short/Cover = 1. Ему все равно что это - вход или доливка или выход, он работает с направлением сделки, ценой и числом лотов. Так что не сцы, пиши 1 и будет тебе щастье Smile
Посмотреть профиль Отправить личное сообщение ICQ Number
Alex14



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

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

нееее, если Buy/Sell/Short/Cover = 1, то он видит, что мы в позе и не доливает(((( открывает позу на размер Lots=100 и все, хотя денег еще на 5 доливок хватает, просто условия для открытия позы и доливки одинаковые. Тестер все прогоняет на УРА, а тут запинка
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Тот робот что есть сейчас не станет доливать никак. Его надо немного переделать....

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



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

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

Аа, в коде робота Олега в условии вызова процедуры orders есть проверка на то, в позиции мы или нет. И она срабатывает тока если позиции не было, то есть структура вообще-то не подразумевает доливки. Лень весь код разбирать Smile , если в роботе учтена проверка на дубликаты заявок, попробуй заменить условия типа if(Buy1[BarCount-1] AND pos == 0) на просто if(Buy1[BarCount-1]) и посмотри что получится.
ЗЫ Олег, опередил на долю минуты)) Без доливок так без доливок Smile
ЗЗЫ Можешь моего робота глянуть - он за позицией не следит, чисто за заявками. Там доливки реализуются так как я тебе сказал.
Посмотреть профиль Отправить личное сообщение ICQ Number
Alex14



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

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

спасибо, жаль что не доливает(((было бы здорово
Посмотреть профиль Отправить личное сообщение
Alex14



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

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

spitfire писал(а):

ЗЗЫ Можешь моего робота глянуть - он за позицией не следит, чисто за заявками. Там доливки реализуются так как я тебе сказал.

ага,попробую
И если Олег сказал
Код:
Его надо немного переделать....
то может переделает)))) ведь немного
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen