Главная Quikprofit twiiter Quikprofit Rss

Закрываем позиции вовремя теперь для фьючерсов

Июнь 8, 2010 | Нет комментариев

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

Основываясь на письма наших читателей более актуальной является проблема закрытия позиций по фьючерсам в определенное время суток, чем те же действия на ММВБ. Трудно с этим поспорить, если учесть что время работы FORTS с 10.00 до 23.50 по московскому времени.

За основу возьмем код предыдущей статьи и внесем в него необходимые коррективы. Оригинальный код смотрим здесь.

Внесенные коррективы:
1. Получение данных о наличии чистых позиций из таблицы «Позиции по по клиентским счетам»
2. Добавление отклонения от лучшей цены стакана для повышения вероятности выполнения заявки.

Получение данных о наличии чистых позиций из таблицы «Позиции по по клиентским счетам»

1
Tool_Quantity = depo_current_balance (ClientCode, FirmId, Tool_SecCode, Account)

на блок:

1
2
3
4
5
FOR I FROM 0 TO GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS") ' цикл по таблице "Позиции по клиентским счетам"
	IF (GET_VALUE (GET_ITEM ("FUTURES_CLIENT_HOLDINGS", I), "SECCODE")==SECCODE) and (GET_VALUE (GET_ITEM ("FUTURES_CLIENT_HOLDINGS", I), "ACCOUNT")==ACCOUNT) ' просматриваем каждую строку в поиске определенного инструмента и по определенному торг.счету
		Tool_Quantity=GET_VALUE(GET_ITEM("FUTURES_CLIENT_HOLDINGS",I), "TOTAL_NET")+0 ' берем значение поля "текущая чистая позиция"
	END IF
END FOR

Добавление отклонения от лучшей цены стакана для повышения вероятности выполнения заявки

Отклонение в валюте инструмента будем хранить в переменной :

Delta = 20

Вместо:

1
2
3
4
5
6
7
8
if (Tool_Quantity < 0)
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "BID") +  0
Tool_Quantity = Tool_Quantity * -1
Operation = "B"
else
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "OFFER") + 0
Operation = "S"
end if

Делаем так:

1
2
3
4
5
6
7
8
9
Delta = 20 ' Отклонение от цены. Прибавляем/убавляем в зависимости от открытой позиции
if (Tool_Quantity < 0)
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "BID") + Delta + 0
Tool_Quantity = Tool_Quantity * -1
Operation = "B"
else
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "OFFER") - Delta + 0
Operation = "S"
end if

Это все хорошо, но мы хотим чтобы у каждого инструмента было собственное значение отклонения цены.
В начале программы до или после декларирования переменной ToolSecCodeList, вставляем такой код:

1
2
3
4
ToolSecCodeList = "SRM0,RSM0"
Delta = create_map()
Delta = set_value(Delta, "SRM0", 20) ' Задаем отступ по инструменту SRM0 в 20 пунктов
Delta = set_value(Delta, "RSM0", 30) ' Задаем отступ по инструменту RSM0 в 30 пунктов

То есть создается ассоциативный массив, Delta, в котором хранятся все значения отклонений. В качестве индекса элемента массива используется код инструмента.
Вносим изменения в наш код:

1
2
3
4
5
6
7
8
if (Tool_Quantity < 0)
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "BID") + get_value(Delta, Tool_SecCode) + 0
Tool_Quantity = Tool_Quantity * -1
Operation = "B"
else
OrderPrice = get_param(get_value(Tool_Info, "CLASS_CODE"), Tool_SecCode, "OFFER") - get_value(Delta, Tool_SecCode) + 0
Operation = "S"
end if

Немного подкорректировав текст получаем отличный инструмент для работы на FORTS.

Можно скачать готовый вариант портфеля, который мы назвали ClosePosInTime_FORTS

Внимание! Программный продукт ClosePosInTime_FORTS находится в свободном доступе,  никаких дополнительных модулей приобретать не требуется.

Внимание! Для лучшего понимания материала рекомендуем Вам ознакомиться со статьей Настройка скриптов под свой торговый счет

Понравилось? Следите за обновлениями по RSS! Также можете следить за обновлениями в Twitter.
          0 проголосовавших

Комментарии

Оставить комментарий





Поля помеченные (*) обязательны к заполнению

Страница 1 из 11
  • Меню

  • Облако тегов

  • Рубрики

  • Для пользователя