Украинская биржа
Индекс UX Фьючерсный контракт на Индекс украинских акций  ПоискПоиск  ПравилаПравила  ПользователиПользователи  ПрофильПрофиль  РегистрацияРегистрация  ВходВход
Форум «Алгоритмическая торговля»
Форум для обсуждения тем по разработке механических торговых систем и написанию роботов на фондовом и срочном рынках.
Готовые функции на QPILE
Модераторы: ara, Алексей Сухоруков, Комиссаров Евгений
Новая тема   Ответить на тему
На страницу Пред.  1, 2
 Предыдущая тема :: Следующая тема 
 Автор  Сообщение 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пн Апр 22, 2013 20:03 (спустя 1 год 11 месяцев 15 дней) Ответить с цитатой Получить постоянный адрес сообщения
csShket писал(а):
Помогите плз с функцией брать по заданому офферу  

Это как? 
 
csShket
Стаж: 15 лет 6 месяцев
Откуда: Киев
Сообщений: 151
Вт Апр 23, 2013 09:27 (спустя 1 год 11 месяцев 15 дней) Ответить с цитатой Получить постоянный адрес сообщения
russ писал(а):
csShket писал(а):
Помогите плз с функцией брать по заданому офферу  

Это как? 

Smile
нужно автоматом забирать с оффера если тот к примеру 1. 
 
Skyspirit
Стаж: 3 года
Сообщений: 1
Чт Дек 02, 2021 14:41 (спустя 10 лет 6 месяцев 25 дней) Ответить с цитатой Получить постоянный адрес сообщения
russ писал(а):
Давайте делиться.

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

'*********************************** ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ ПРЕДЫДУЩЕЙ СВЕЧИ ****************************************************
FUNC Get_Previous_Candle(tTextData, tTextTime)

CANDL_FOUND = 0
CANDL_DATA = 0

tempMin = SUBSTR (tTextTime, 2, 2)

tMin = Interval*Floor(tempMin/Interval) ' округляем минуты до "интервальных"
tYear = SUBSTR (tTextData, 0, 4)
tMonth = SUBSTR (tTextData, 4, 2)
tDay = SUBSTR (tTextData, 6, 2)
tHour = SUBSTR (tTextTime, 0, 2)

for i from 1 to (DayToFind*24)*(Floor(60/Interval))
IF CANDL_FOUND <> 0
break
END IF
' откат на "интервал" назад
tMin=tMin-Interval
if tMin < 0
tMin = 60 + tMin
tHour = tHour - 1
if tHour < 0
tHour = 23
tDay = tDay - 1
if tDay < 1
tDay = 31
tMonth = tMonth - 1
if tMonth < 1
tMonth = 12
tYear = tYear - 1
if tYear < 0
message ("Котировка не найдена",1)
end if
end if
end if
end if
end if
'=======================================================================
tTextData=fTextData(tYear,tMonth,tDay) &""
tTextTime=fTextTime(tHour,tMin) & ""
'=======================================================================
PREV_CANDLE = (GET_CANDLE_EX (SecCode, tTextData, tTextTime)
IF Len(GET_VALUE(PREV_CANDLE, "TIME")) > 0
CANDL_FOUND = 1
CANDL_DATA = tTextData
END IF
'=======================================================================
end for

candl_mass = CREATE_MAP()
candl_mass = SET_VALUE (candl_mass, "candle", PREV_CANDLE)
candl_mass = SET_VALUE (candl_mass, "candle_data", CANDL_DATA)
result = candl_mass
END FUNC
'*******************************************************************************************************************************

Вызывается она так:

'получаем последнюю полную сформированную свечу
TEMP_CANDLE_ARR = Get_Previous_Candle(TextData, TextTime)
CANDLE_LAST = GET_VALUE(TEMP_CANDLE_ARR, "candle")
CANDLE_LAST_DATA = GET_VALUE(TEMP_CANDLE_ARR, "candle_data")
CANDLE_LAST_TIME = GET_VALUE(CANDLE_LAST, "TIME")

2. Канал Дончиана, он же хай и лой за последние N свечей.

Вспомогательные функции получения ОХЛС по заданной свече
'***********************************ФУНКЦИИ ДЛЯ ВОЗВРАТА ОХЛС ПО ТЕКУЩЕЙ СВЕЧЕ*************************************************
FUNC GET_CANDLE_OPEN (GetTextData, GetTextTime)
TCandleData = GET_CANDLE(ClassCode, SecCode, "", Interval, "PRICE", GetTextData, GetTextTime)
result = get_value(TCandleData, "OPEN")
END FUNC

FUNC GET_CANDLE_HIGH (GetTextData, GetTextTime)
TCandleData = GET_CANDLE(ClassCode, SecCode, "", Interval, "PRICE", GetTextData, GetTextTime)
result = get_value(TCandleData, "HIGH")
END FUNC

FUNC GET_CANDLE_LOW (GetTextData, GetTextTime)
TCandleData = GET_CANDLE(ClassCode, SecCode, "", Interval, "PRICE", GetTextData, GetTextTime)
result = get_value(TCandleData, "LOW")
END FUNC

FUNC GET_CANDLE_CLOSE (GetTextData, GetTextTime)
TCandleData = GET_CANDLE(ClassCode, SecCode, "", Interval, "PRICE", GetTextData, GetTextTime)
result = get_value(TCandleData, "CLOSE")
END FUNC

FUNC Get_Parabolik(GetTextData, GetTextTime)
TCandleData = GET_CANDLE(ClassCode, SecCode, "", Interval, "PARABOLIC SAR", GetTextData, GetTextTime)
result = get_value(TCandleData, "OPEN")
END FUNC
'*******************************************************************************************************************************

Сама функция получения хая и лоя
'****************************** НАХОДИМ ПОСЛЕДНИЙ ХАЙ И ЛОЙ ЗА N СВЕЧЕЙ ********************************************************
FUNC GET_CHANEL_HIGH_AND_LOW (barsCount)

CHANEL_HIGH = 0 + 0
CHANEL_HIGH = 0 + CANDLE_LAST_HIGH

CHANEL_LOW = 0 + 0
CHANEL_LOW = 0 + CANDLE_LAST_LOW

' CANDLE_LAST_DATA и CANDLE_LAST_TIME дата и время свечи с которой начинает отсчет
CHANEL_LAST_CANDLE_DATA = CANDLE_LAST_DATA
CHANEL_LAST_CANDLE_TIME = CANDLE_LAST_TIME

FOR K FROM 0 TO barsCount - 1
'получаем последнюю полную сформированную свечу
CHANEL_CANDLE_ARR = Get_Previous_Candle(CHANEL_LAST_CANDLE_DATA, CHANEL_LAST_CANDLE_TIME)

CHANEL_CANDLE_LAST = GET_VALUE(CHANEL_CANDLE_ARR, "candle")
CHANEL_LAST_CANDLE_DATA = GET_VALUE(CHANEL_CANDLE_ARR, "candle_data")
CHANEL_LAST_CANDLE_TIME = GET_VALUE(CHANEL_CANDLE_LAST, "TIME")

'подсчитываем ХАЙ последней свечи
CHANEL_CANDLE_LAST_HIGH = 0 + 0
CHANEL_CANDLE_LAST_HIGH = 0 + GET_CANDLE_HIGH(CHANEL_LAST_CANDLE_DATA, CHANEL_LAST_CANDLE_TIME)

IF CHANEL_CANDLE_LAST_HIGH > CHANEL_HIGH
CHANEL_HIGH = CHANEL_CANDLE_LAST_HIGH
END IF

'подсчитываем ЛОЙ последней свечи
CHANEL_CANDLE_LAST_LOW = 0 + 0
CHANEL_CANDLE_LAST_LOW = 0 + GET_CANDLE_LOW(CHANEL_LAST_CANDLE_DATA, CHANEL_LAST_CANDLE_TIME)

IF CHANEL_CANDLE_LAST_LOW < CHANEL_LOW
CHANEL_LOW = CHANEL_CANDLE_LAST_LOW
END IF

END FOR

pos_mass = CREATE_MAP()
pos_mass = SET_VALUE (pos_mass, "HIGH", CHANEL_HIGH)
pos_mass = SET_VALUE (pos_mass, "LOW", CHANEL_LOW)
result = pos_mass

END FUNC
'******************************************************************************************************************************* 


Всем привет.
class=get_class(code)
SecInfo = GET_SECURITY_INFO("", code)
message("Вход в лонг позицию",1)

как в сообщение добавить Тикер инструмента? Спасибо  
 
Fed
Стаж: 11 лет 7 месяцев
Сообщений: 75
Чт Янв 27, 2022 12:52 (спустя 10 лет 8 месяцев 20 дней) Ответить с цитатой Получить постоянный адрес сообщения
Здравствуйте!
1. Закончил что-либо писать на QPILE в 2014 году и перешёл на язык, встроенный в Квик, Люа.
На QPILE написал только обработку совершённых и открытых сделок и вывод подробного отчёта в таблицу, но это было до внедрения Люа.

2. Теперь насчёт как добавить тикер инструмента:
- Поскольку в сообщении присутствует текст, то надо к тексту добавить символьное название тикера, например:

class=get_class(code)
SecInfo = GET_SECURITY_INFO("", code)

secClass = "SPBFUT"
secCode = "SiZ5"
msg="Вход в лонг позицию"&secCode

message(msg, 1)

П.С.: Понимаю, что давать советы просто, но это практический совет. 
 
Показать сообщения:   
Новая тема   Ответить на тему
Список форумов Украинской биржи -> Алгоритмическая торговляНа страницу Пред.  1, 2
Страница 2 из 2
Сайт Украинской биржи
Copyright © Украинская биржа, 2024.
Предложения, замечания и вопросы по работе форума направляйте на email: