1. Все кто сталкивался с купайлом знают, что там нет возможности получения свечи по номеру. Поэтому первым делом понадобится функция, получить предыдущую свечу.
'*********************************** ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ ПРЕДЫДУЩЕЙ СВЕЧИ **************************************************** FUNC Get_Previous_Candle(tTextData, tTextTime)
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
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)
' 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)
Здравствуйте! 1. Закончил что-либо писать на QPILE в 2014 году и перешёл на язык, встроенный в Квик, Люа. На QPILE написал только обработку совершённых и открытых сделок и вывод подробного отчёта в таблицу, но это было до внедрения Люа.
2. Теперь насчёт как добавить тикер инструмента: - Поскольку в сообщении присутствует текст, то надо к тексту добавить символьное название тикера, например: