Мои ответы на вопросы 13/06/10

13 июня, 2010

Вопрос на сайте QUIK.ru:
Интересует мнение бывалых.
1)Всегда ли стопы спасают от непредвиденного разрыва связи компа клиента с биржей? или иногда стопы могут не сработать?
2)Торгую на ФОРТС. Недавно, например, работала в течение дня ММВБ, а ФОРТС в это время по техпричинам не работал. Вопрос, как только ФОРТС вновь включился в работу и цены фьючерсов догоняли цены соотв. баз. активов (в пределах ножниц разумеется), то срабатывали ли на нём стопы на заданном уровне или позиции закрывались уже максимально невыгодно для клиента?
3)В случае срабатывания стопов хуже заданного уровня есть ли злой умысел нерадивого брокера? Наблюдал ли кто?
Интересует полностью автономный робот, пока что на одном компе, провайдере и брокере. Поэтому никаких подстраховок, кроме стопов, в ближ. будущем нет.
Андрей
13/06/10 08:39

Ответ:  
Основная суть стоп-заявки — разместить условную заявки на сервере брокера.
Таким образом, данная заявка всегда будет обработана брокером и направлена на биржу для исполнения, если достаточно Ваших средств.
Т.е. заявка будет направлена на биржу при обрыве связи и даже при выключенном Вашем компьютере.
Таким образом, с сервера брокера на биржу уйдет заявка «купить или продать» по указанной Вами цене, при возникновении указанного в стоп заявке события.
Но вопрос будет ли совершена сделка на бирже по Вашей цене остается открытым.
Как говорил Жванецкий — «раки были по три рубля,но вчера. А сегодня по пять». А в вашей заявке — указано — купить по три.
Но это уже другая проблема и она не связана с типом заявки.
   Относительно злого умысла.
Проблема В том, что сильное движение рынка происходит именно потому, что всем приспичило сделать одно и тоже. Т.е. именно в этот момент срабатывают многочисленные условия стопов и все стоп заявки обрабатываются последовательно сервером брокера и последовательно поступают на биржу , а сервер биржи удовлетворяет их по наилучшей цене в порядке поступления.
Поэтому именно в этот момент будет и перегрузка сервера брокера и отсутствие данных на Вашем компьютере и запоздавшее исполнение Вашего стопа.
Никакой робот Вас от этого не спасет. Спасет лишь прямой выход на биржу.

Функции для работы Amibroker c QUIK

10 июня, 2010

Автор:Николай Камынин  ©

1)  Переменные среды Amibroker

      При написании скриптов в Amibroker для торговли через QUIK необходимо в начале программы определить следующие переменные:

CLIENTCODE – код клиента
FIRMID  – код фирмы (можно не задавать)
FIRMIDF  – код фирмы FORTS (можно не задавать)
ACCID   – счет ДЕПО клиента
ACCIDF —  торговый счет на FORTS

Пример:  CLIENTCODE=”01024”;

 2) Функции для получения параметров из таблиц

    Параметры функций записываются в виде строки текста в двойных кавычках
             Таблица – строка —  название таблицы, либо ее номер;
             Параметр – строка —  название столбца

Пример: “Marginal”  –таблица клиентский портфель

GetValue(Таблица, Ключ, ЗначениеКлюча, Параметр) –получить параметр по ключу

GetValueCLIENT(Таблица, Параметр) – получить параметр по  CLIENTCODE

GetValueSEC (Параметр) -получить параметр, торгуемого в окне  AMIBROKER инструмента,  из таблицы текущих параметров (Table)

FindRstr(ИмяТаблицы,ИмяКлюча,ЗначениеКлюча) — поиск строки таблицы по ключу

Номера таблицы зафиксированы и приведены в списке таблиц.

3) Функции для торговли

nkBuy – установить ордер на покупку

nkSell — установить ордер на продажу

nkStopLoss – установить ордер Стоп-лосс

nkTakeProfit  — установить Тайк-профит

nkKillStopOrder – удалить стоп-заявку

nkKillOrder – удалить заявку

nkKillAllOrders – удалить все ордера

nkKillAllStopOrders  — удалить все стоп-ордера

nkKillAllOrdersForts -удалить все ордера на FORTS

nkKillAllStopOrdersForts – удалить все стоп- ордера на FORTS

4) Вспомогательные функции

Приведенные ниже функции не требуются для написания торговых систем, но могут применяться.

TableNumC(НомерТаблицы,ИмяСтолбца) –получить номер столбца по имени. Номера столбцов динамически изменяются. Для обращения к столбцу по номеру, его надо определить
TableNumR(НомерТаблицы,ИмяСтроки) – получить номер строки по имени
TablesLen() — число таблиц
TableNameC  (номер) — имя столбца по номеру
TableNameR (номер) —  имя строки по номеру
TableLenR(Таблица)- число строк таблицы
TableLenC(Таблица) — число столбцов