umoz
0
All posts from umoz
  umoz in Poyarkov696,

Экспорт архива котировок из Quik в Excel

1. Создать текстовый файл
2. Скопировать туда следующий код:

PORTFOLIO_EX EXPORT_QUOTE;
DESCRIPTION EXPORT_QUOTE;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;

PROGRAM

Secboard = "INDX" 
Seccode = "MICEXINDEXCF" 
TimeFrame = 60 
DaysBack = 100 

DELETE_ALL_ITEMS()
Count=0

CurYear = GET_VALUE(GET_DATETIME(), "YEAR")
CurMonth = GET_VALUE(GET_DATETIME(), "MONTH")
CurDay = GET_VALUE(GET_DATETIME(), "DAY")
CurHour = GET_VALUE(GET_DATETIME(), "Hour")
CurMin = GET_VALUE(GET_DATETIME(), "Min")

if TimeFrame > 0
CurMin = TimeFrame*Floor(CurMin/TimeFrame)
end if

for i from 1 to (DaysBack*24)*(Floor(60/TimeFrame))
TextData=Date2Text(CurYear, CurMonth, CurDay) & ""
TextTime=Time2Text(CurHour, CurMin) & ""

Candle=GET_CANDLE(Secboard,Seccode, "", TimeFrame & "", "PRICE", TextData, TextTime)
Open=GET_VALUE (Candle, "Open")+0
if Open>0
Count = Count + 1
High = GET_VALUE (Candle, "High") + 0
Low = GET_VALUE (Candle, "Low") + 0
Close = GET_VALUE (Candle, "Close") + 0
Volume= GET_VALUE (Candle, "Volume") + 0

output = CREATE_MAP()
output = SET_VALUE(output, "Time", CurDay & "." & CurMonth & "." & CurYear & " " & CurHour & ":" & CurMin & ":00")
output = SET_VALUE(output, "Open", Open)
output = SET_VALUE(output, "High", High)
output = SET_VALUE(output, "Low", Low)
output = SET_VALUE(output, "Close", Close)
output = SET_VALUE(output, "Volume", Volume)
ADD_ITEM(Count, output)
end if

CurMin = CurMin - TimeFrame
if CurMin
CurMin = 60 + CurMin
CurHour= CurHour - 1
if CurHour
CurHour = 23
CurDay = CurDay - 1
if curDay
CurDay = 31
CurMonth = CurMonth - 1
if CurMonth
CurMonth = 12
CurYear = CurYear - 1
end if
end if
end if
end if

end for

func Date2Text(Year, Month, Day)
if (LEN(Month)
Month = "0" & Month
end if
if (LEN(Day)
Day = "0" & Day
end if
result = Year & Month & Day
end func

func Time2Text(Hour, Min, Sec)
if (LEN(Hour)
Hour = "0" & Hour
end if
if (LEN(Min)
Min = "0" & Min
end if
result = Hour & Min & "00"
end func

END_PROGRAM

PARAMETER Time;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Время;
PARAMETER_TYPE STRING(30);
END

PARAMETER Open;
PARAMETER_TITLE Open;
PARAMETER_DESCRIPTION Open;
PARAMETER_TYPE NUMERIC(11,5);
END

PARAMETER High;
PARAMETER_TITLE High;
PARAMETER_DESCRIPTION High;
PARAMETER_TYPE NUMERIC(11,5);
END

PARAMETER Low;
PARAMETER_TITLE Low;
PARAMETER_DESCRIPTION Low;
PARAMETER_TYPE NUMERIC(11,5);
END

PARAMETER Close;
PARAMETER_TITLE Close;
PARAMETER_DESCRIPTION Close;
PARAMETER_TYPE NUMERIC(11,5);
END

PARAMETER Volume;
PARAMETER_TITLE Объем;
PARAMETER_DESCRIPTION Объем;
PARAMETER_TYPE NUMERIC(4,0);
END

END_PORTFOLIO_EX

3. Перименовать, сменив расширение на qpl
4. В следущих строках кода сменить следующие параметры параметры (они в верхней части):

Secboard = "INDX" (это код класса инструмента, берется из таблицы параметров, например, для фортс будет "SPBFUT")
Seccode = "MICEXINDEXCF" (код инструмента, например, для гамака будет "GMKN")
TimeFrame = 60 (период времени, выбираются только минуты)
DaysBack = 100 (количество временных периодов)

5. Сохранить изменения и загрузить данный файл в квик, для чего нужно:
5.1. Выбрать в квик "таблицы" - "портфели" - "задать портфель" - выбрать сохраненный файл и "загрузить локально"
5.2. Выбрать "портфели" - "просмотр портфеля" 
6. Когда будет выбран портфель, откроется таблица (при этом важно, чтобы одновременно был открыт график с тем же таймфреймом, что был выбран в параметрах кода в файле)
7. Если все правильно было сделано, то в таблице будет отбражена истоия котировк, которую можно вывести в любую программу, например в Эксель через DDE