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

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
'******************************************************************************************************************************* 
 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пн Май 09, 2011 10:56 (спустя 6 минут) Ответить с цитатой Получить постоянный адрес сообщения
В догонку:
Предлагаю сделать вложенные форумы типа QPILE, WealthLab, S# и т.д. 
 
Солошенко Юра Digital Sky
Стаж: 13 лет 10 месяцев
Откуда: www.ds-ua.com, www.qlua.org
Сообщений: 80
Пн Май 09, 2011 13:51 (спустя 3 часа 1 минуту) Ответить с цитатой Получить постоянный адрес сообщения
The MOST important function (данный вариант берет "по рынку", но оегко меняется на лимитированную):
FUNC trade(class, security, operation, volume, id,code,depo)
trans_params=""
trans_result=""
trans_params=SET_VALUE(trans_params,"TRANS_ID",""&makeid())
trans_params=SET_VALUE(trans_params,"ACTION","NEW_ORDER")
trans_params=SET_VALUE(trans_params,"CLASSCODE",""&class)
trans_params=SET_VALUE(trans_params,"CLIENT_CODE",""&code)
trans_params=SET_VALUE(trans_params,"SECCODE",""&security)
trans_params=SET_VALUE(trans_params,"ACCOUNT",""&depo)
trans_params=SET_VALUE(trans_params,"OPERATION",""&operation)
trans_params=SET_VALUE(trans_params,"TYPE","M")
IF class=="FUTUX"
IF operation=="B"
trans_params=SET_VALUE(trans_params,"PRICE",""&GET_PARAM("FUTUX",""&security,"PRICEMAX"))
ELSE
trans_params=SET_VALUE(trans_params,"PRICE",""&GET_PARAM("FUTUX",""&security,"PRICEMIN"))
END IF
ELSE
trans_params=SET_VALUE(trans_params,"PRICE","0")
END IF
trans_params=SET_VALUE(trans_params,"QUANTITY",""&volume)
trans_result=SEND_TRANSACTION(5,trans_params)
WRITELN(log,GET_VALUE(GET_DATETIME(),"DATETIME")&" : "&"Result: "&GET_VALUE(trans_result,"RESULT")&" ,Result_ex: "&GET_VALUE(trans_result,"RESULT_EX")&" , OrderNum: "&GET_VALUE(trans_result,"ORDER_NUMBER")&" , Description: "&GET_VALUE(trans_result,"DESCRIPTION"))
IF GET_VALUE(trans_result,"RESULT_EX")!="3"
MESSAGE("Can`t send transaction !"&GET_VALUE(trans_result,"DESCRIPTION"),2)
ELSE
WRITELN(log,GET_VALUE(GET_DATETIME(),"DATETIME")&"Transaction done")
END IF
END FUNC 
 
Солошенко Юра Digital Sky
Стаж: 13 лет 10 месяцев
Откуда: www.ds-ua.com, www.qlua.org
Сообщений: 80
Пн Май 09, 2011 14:01 (спустя 3 часа 11 минут) Ответить с цитатой Получить постоянный адрес сообщения
Удобное конвертирование времени в строку (секунды тоже можно добавить):
FUNC get_cur_time()
f_time=GET_INFO_PARAM("SERVERTIME")
curhour=""&SUBSTR(f_time,0,2)
curmin=""&SUBSTR(f_time,3,2)
RESULT=curhour&curmin
END FUNC 
 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пн Май 09, 2011 21:07 (спустя 10 часов 17 минут) Ответить с цитатой Получить постоянный адрес сообщения
Продолжим:

'***************************** ФУНКЦИЯ ДЛЯ ВЫСТАВЛЕНИЯ СТОП ЗАЯВОК *************************************************************
FUNC send_stop_order (FOperation, FStopPrice, FDealPrice, FSecCode, FClassCode, FQuantity, FTransID, FAccount, FExpireDate)
trans_params = "" ' собираем все параметры и записываем их, в массив trans_params, предварительно его создав
trans_params = set_value (trans_params, "TRANS_ID", FTransID)
trans_params = set_value (trans_params, "ACTION", "NEW_STOP_ORDER")
trans_params = set_value (trans_params, "CLASSCODE", FClassCode)
trans_params = set_value (trans_params, "SECCODE", FSecCode)
trans_params = set_value (trans_params, "ACCOUNT", FAccount)
trans_params = set_value (trans_params, "STOPPRICE", FStopPrice) 'цена срабатывания стоп заявки
trans_params = set_value (trans_params, "PRICE", FDealPrice) 'цена выполнения стоп заявки
trans_params = set_value (trans_params, "OPERATION", FOperation)
trans_params = set_value (trans_params, "QUANTITY", FQuantity)
trans_params = set_value (trans_params, "CLIENT_CODE", FAccount)
trans_params = set_value (trans_params, "EXPIRY_DATE", FExpireDate) 'время жизни заявки

trans_result = SEND_TRANSACTION (300, trans_params) ' Отправляет заявку с параметрами, указанными в массиве trans_params и ожидает ответа торговой системы в течение 300 секунд, данная функция также возвращает ассоциативный массив, содержащий результаты обработки заявки, поэтому далее мы должны проверить выполнилась ли она.

message ("Отправлена стоп заявка " & FClassCode & "; " & FStopPrice & "; " & FDealPrice & "; "& FOperation & "; " & FQuantity, 1)

FOR while FROM 0 TO 1 ' открываем цикл проверки выполнения заявки
while = 0 ' обнуляем счетчик пока не получим подтверждение выполнения заявки
IF GET_VALUE (trans_result, "RESULT_EX") == "3" 'если транзакция выполнена
message ("Стоп заявка выставлена",1)
RETURN 'выходим из функции отправки заявок
END IF
message ("Стоп заявка не выставлена " & GET_VALUE (trans_result, "DESCRIPTION"),1)
SoundMessageOrderError()
RETURN
END FOR
END FUNC
'*******************************************************************************************************************************

'******************************** ФУНКЦИЯ ДЛЯ СНЯТИЯ СТОП ЗАЯВОК ***************************************************************
FUNC kill_stop_orders (FClassCode, FTransID, FSecCode, FAccount)

message("Снятие стоп заявок", 1)
n = 0 + GET_NUMBER_OF("STOP_ORDERS")
FOR i FROM 0 to n
StopOrder = GET_ITEM("STOP_ORDERS", i)
Status="" & GET_VALUE(StopOrder, "STATUS")
SC = "" & GET_VALUE(StopOrder, "SECCODE")
OrderNumber = GET_VALUE(StopOrder, "NUMBER")
if (Status == "ACTIVE") and (SC == FSecCode)
TransParams = create_map()
TransParams = set_value(TransParams, "ACTION", "KILL_STOP_ORDER")
TransParams = set_value(TransParams, "TRANS_ID", FTransID)
TransParams = set_value(TransParams, "CLASSCODE", FClassCode)
TransParams = set_value(TransParams, "SECCODE", SC)
TransParams = set_value(TransParams, "STOP_ORDER_KEY", OrderNumber)
TransResult = SEND_TRANSACTION (3, TransParams)
ss = get_value(TransResult, "DESCRIPTION")
message(ss, 1)
message("Снятие стоп заявки", 1)
end if
END FOR
END FUNC
'******************************************************************************************************************************* 
 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пн Май 09, 2011 21:19 (спустя 10 часов 29 минут) Ответить с цитатой Получить постоянный адрес сообщения
Индикатор ATR

'****************************** ФУНКЦИЯ ДЛЯ ПОДСЧЕТА ИНДИКАТОРА АТР ************************************************************
FUNC GET_ATR(AtrCandleData, AtrCandleTime, atrperiod)

FAtrCandleData = AtrCandleData
FAtrCandleTime = AtrCandleTime
avr_res = 0 + 0
FOR ATRINDEX FROM 0 TO atrperiod - 1

ATR_CANDLE_HIGH = 0 + 0
ATR_CANDLE_LOW = 0 + 0
ATR_CANDLE_PREV_CLOSE = 0 + 0

'получаем параметры текущей свечи
ATR_CANDLE_HIGH = 0 + GET_CANDLE_HIGH(FAtrCandleData, FAtrCandleTime)
ATR_CANDLE_LOW = 0 + GET_CANDLE_LOW(FAtrCandleData, FAtrCandleTime)

'получаем параметры предыдущей свечи и ее закрытие
ATR_TEMP_CANDLE_ARR = Get_Previous_Candle(FAtrCandleData, FAtrCandleTime)
ATR_CANDLE_LAST = GET_VALUE(ATR_TEMP_CANDLE_ARR, "candle")

FAtrCandleData = GET_VALUE(ATR_TEMP_CANDLE_ARR, "candle_data")
FAtrCandleTime = GET_VALUE(ATR_CANDLE_LAST, "TIME")

ATR_CANDLE_PREV_CLOSE = 0 + GET_CANDLE_CLOSE(FAtrCandleData, FAtrCandleTime)

'ищем максимум из 3-х величин
IF abs(ATR_CANDLE_HIGH - ATR_CANDLE_LOW) > abs(ATR_CANDLE_HIGH - ATR_CANDLE_PREV_CLOSE)
res = 0 + abs (ATR_CANDLE_HIGH - ATR_CANDLE_LOW)
ELSE
res = 0 + abs(ATR_CANDLE_HIGH - ATR_CANDLE_PREV_CLOSE)
END IF
IF abs(ATR_CANDLE_LOW - ATR_CANDLE_PREV_CLOSE) > res
res = 0 + abs(ATR_CANDLE_LOW - ATR_CANDLE_PREV_CLOSE)
END IF

'считаем АТР
IF ATRINDEX == 0
avr_res=res
ELSE
avr_res=(avr_res*(atrperiod-1)+res)/atrperiod
END IF
END FOR

result = 0 + avr_res
END FUNC
'*******************************************************************************************************************************
 
 
QuQL
Стаж: 14 лет 8 месяцев
Сообщений: 237
Вс Июн 19, 2011 16:26 (спустя 1 месяц 11 дней 5 часов) Ответить с цитатой Получить постоянный адрес сообщения
Помогите реализовать функцию на qpile получения min и max price для фьючерса за конкретный день

типа:

get_max_price('14/05/2011') = 2425.65
 
 
Последний раз редактировалось автором 19.06.2011 16:26, всего редактировалось 1 раз
Мисс Ликвидность
Стаж: 13 лет 6 месяцев
Сообщений: 4
Пн Июн 20, 2011 10:54 (спустя 1 месяц 12 дней) Ответить с цитатой Получить постоянный адрес сообщения
Если за сегодня, то это легко:
get_param("FUTUX","UXM1","high")

А если за другой день, то можно попробовать функции для работы с графиками. Сначала построить график с нужным интервалом, например 1 день, присвоить ему имя (tag). А потом через функцию get_candle_ex("MyChart", 20110615, 170000) получить доступ к данным свечки за 15 июня 2011 на 17:00. И из этих данных уже выдернуть максимум этой свечки.
В мануале к qpile есть подробный пример как вытаскивать данные с графиков. 
 
QuQL
Стаж: 14 лет 8 месяцев
Сообщений: 237
Пн Июн 20, 2011 13:13 (спустя 1 месяц 12 дней 2 часа) Ответить с цитатой Получить постоянный адрес сообщения
спасибо, попытаюсь
А как-то без графика вчерашний high and low можно получить? 
 
Мисс Ликвидность
Стаж: 13 лет 6 месяцев
Сообщений: 4
Пн Июн 20, 2011 14:11 (спустя 1 месяц 12 дней 3 часа) Ответить с цитатой Получить постоянный адрес сообщения
Master of Puppets писал(а):
спасибо, попытаюсь
А как-то без графика вчерашний high and low можно получить? 


Насколько я знаю - нет. Квик интрадейная система и исторические данные, кроме как на графиках, не хранит.
Посмотрите функции в первом посте этой ветки + на форуме Квика (http://quik.ru/forum/) масса информации (как правило, все проблемы с которыми вы сталкиваетесь там уже обсуждались.) 
 
mvp
Стаж: 13 лет 5 месяцев
Сообщений: 27
Ср Авг 03, 2011 00:19 (спустя 2 месяца 24 дня 13 часов) Ответить с цитатой Получить постоянный адрес сообщения
russ писал(а):


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

...
for i from 1 to (DayToFind*24)*(Floor(60/Interval))
...
' откат на "интервал" назад
tMin=tMin-Interval
if tMin < 0
tMin = 60 + tMin
....

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


Функция не работает с интервалами больше часа. А также совершает лишние движения в несуществующие дни типа 31-га февраля. Когда проверю свой вариант - выложу 
 
Последний раз редактировалось автором 03.08.2011 00:50, всего редактировалось 2 раза
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пт Окт 14, 2011 08:59 (спустя 5 месяцев 4 дня 22 часа) Ответить с цитатой Получить постоянный адрес сообщения
' функция перевода даты в текстовый формат
func fTextData(Year,Month,Day)
if (LEN(Month) < 2)
Month = "0" & Month
end if
if (LEN(Day) < 2)
Day = "0" & Day
end if
result = Year & Month & Day
end func

' функция перевода времени в текстовый формат
func fTextTime(Hour,Min,Sec)
if (LEN(Hour) < 2)
Hour = "0" & Hour
end if
if (LEN(Min) < 2)
Min = "0" & Min
end if
result = Hour & Min & "00"
end func 
 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пт Окт 14, 2011 09:00 (спустя 5 месяцев 4 дня 22 часа) Ответить с цитатой Получить постоянный адрес сообщения
'****************************** ФУНКЦИЯ ДЛЯ ВЫСТАВЛЕНИЯ ОБЫЧНЫХ ЛИМИТИРОВАННЫХ ЗАЯВОК ******************************************
FUNC send_order (FOperation, FPrice, FType, FSecCode, FClassCode, FQuantity, FTransID, FAccount)
trans_params = "" ' собираем все параметры и записываем их, в массив trans_params, предварительно его создав
trans_params = set_value (trans_params, "TRANS_ID", FTransID)
trans_params = set_value (trans_params, "ACTION", "NEW_ORDER")
trans_params = set_value (trans_params, "CLASSCODE", FClassCode)
trans_params = set_value (trans_params, "SECCODE", FSecCode)
trans_params = set_value (trans_params, "ACCOUNT", FAccount)
trans_params = set_value (trans_params, "PRICE", FPrice)
trans_params = set_value (trans_params, "OPERATION", FOperation)
trans_params = set_value (trans_params, "QUANTITY", FQuantity)
trans_params = set_value (trans_params, "CLIENT_CODE", FAccount)
trans_params = set_value (trans_params, "TYPE", FType) ' "L" - лимитированная , "М" - рыночная. Не обязательный параметр

trans_result = SEND_TRANSACTION (300, trans_params) ' Отправляет заявку с параметрами, указанными в массиве trans_params и ожидает ответа торговой системы в течение 300 секунд, данная функция также возвращает ассоциативный массив, содержащий результаты обработки заявки, поэтому далее мы должны проверить выполнилась ли она.

message ("Отправлена заявка " & FClassCode & "; " & FPrice & "; " & FOperation & "; " & FQuantity, 1)

FOR while FROM 0 TO 1 ' открываем цикл проверки выполнения заявки
while = 0 ' обнуляем счетчик пока не получим подтверждение выполнения заявки
IF GET_VALUE (trans_result, "RESULT_EX") == "3" 'если транзакция выполнена
message ("Заявка выполнена ",1)
RETURN 'выходим из функции отправки заявок
END IF
message ("Заявка не выполнена " & GET_VALUE (trans_result, "DESCRIPTION"),1)
RETURN
END FOR
END FUNC
'******************************************************************************************************************************* 
 
russ
Стаж: 14 лет 8 месяцев
Сообщений: 1136
Пт Окт 14, 2011 09:00 (спустя 5 месяцев 4 дня 22 часа) Ответить с цитатой Получить постоянный адрес сообщения
'****************************** ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ ТЕКУЩИХ ПОЗИЦИЙ ПО ФЬЮЧЕРСУ **********************************************************
FUNC Get_Current_Pos()
total_net = ""
open_buys = ""
open_sells = ""

tt = GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS")
N = 0 + GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS")
IF N>0
FOR I FROM 1 TO N
TRDACCID = GET_VALUE (GET_ITEM ("FUTURES_CLIENT_HOLDINGS", I), "TRDACCID")
IF TRDACCID == ClientCode
total_net = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS",I), "TOTAL_NET") 'получаем текущие позиции

open_buys = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS",I), "OPEN_BUYS") 'получаем текущие позиции
open_sells = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS",I), "OPEN_SELLS") 'получаем текущие позиции
END IF
END FOR
END IF

IF total_net = ""
total_net = 0
END IF

IF open_buys = ""
open_buys = 0
END IF

IF open_sells = ""
open_sells = 0
END IF

pos_mass = CREATE_MAP()
pos_mass = SET_VALUE (pos_mass,"total_net", total_net)
pos_mass = SET_VALUE (pos_mass,"open_buys", open_buys)
pos_mass = SET_VALUE (pos_mass,"open_sells", open_sells)
result = pos_mass
END FUNC
'******************************************************************************************************************************* 
 
Последний раз редактировалось автором 14.10.2011 09:00, всего редактировалось 1 раз
csShket
Стаж: 15 лет 5 месяцев
Откуда: Киев
Сообщений: 151
Пн Апр 22, 2013 10:07 (спустя 1 год 11 месяцев 14 дней) Ответить с цитатой Получить постоянный адрес сообщения
Помогите плз с функцией брать по заданому офферу  
 
Показать сообщения:   
Новая тема   Ответить на тему
Список форумов Украинской биржи -> Алгоритмическая торговляНа страницу 1, 2  След.
Страница 1 из 2
Сайт Украинской биржи
Copyright © Украинская биржа, 2024.
Предложения, замечания и вопросы по работе форума направляйте на email: