пятница, 11 октября 2013 г.

Аналитические таблицы Quik: параметры разброса колебаний финансового инструмента


PORTFOLIO_EX Volatile;
DESCRIPTION Параметры волатильности рынка;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST Volatile;
PROGRAM
NEW_GLOBAL("Stop_Time",174458)
NEW_GLOBAL("Time_Trade",0)
NEW_GLOBAL("NameStock","")
NEW_GLOBAL("Class",CREATE_COLLECTION())
NEW_GLOBAL("Code",CREATE_COLLECTION())
NEW_GLOBAL("Start_Flag",1)

IF (Start_Flag == 0)
IF (IS_CONNECTED() == 1)
MESSAGE ("Подключение установлено...", 1)
Start_Flag = 1
END IF
ELSE

IF (Start_Flag == 2)
FOR i FROM 0 TO GET_COLLECTION_COUNT(Class)-1
Time_Trade = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "time")
StockInfo = GET_SECURITY_INFO(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i))
NameStock = GET_VALUE (StockInfo, "NAME")
        Open = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "open")+0
        Max = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "high")+0
        Min = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "low")+0        
        Close = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "closeprice")+0
        Price = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "last")+0 
        LastClose = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "prevprice")+0 
        
        Price_Open = (Price/Open*100)-100
        Max_Price = (Max/Price*100)-100 
        Price_Min = (Price/Min*100)-100        
Max_Open = (Max/Open*100)-100 
Max_Close = (Max/Close*100)-100
Max_Min = (Max/Min*100)-100
Open_LastClose = (Open/LastClose*100)-100
string = ""
string = set_value(string, "NameStock", NameStock)
string = set_value(string, "Open", Open)
string = set_value(string, "Max", Max)
string = set_value(string, "Min", Min)
string = set_value(string, "Close", Close)
string = set_value(string, "Max_Open", Max_Open)
string = set_value(string, "Max_Close", Max_Close)
string = set_value(string, "Max_Min", Max_Min)
string = set_value(string, "Price_Open", Price_Open)
string = set_value(string, "Max_Price", Max_Price)
string = set_value(string, "Price_Min", Price_Min)
string = set_value(string, "LastClose", LastClose)
string = set_value(string, "Open_LastClose", Open_LastClose)
IF Time_Trade > 0
string = set_value(string, "Time_Trade", SUBSTR(Time_Trade,0,2)&":"&SUBSTR(Time_Trade,2,2)&":"&SUBSTR(Time_Trade,4,2))
ELSE
string = set_value(string, "Time_Trade", 0)
END IF
MODIFY_Item(i+1,string)
 
END FOR

    IF (IS_CONNECTED() == 0)
MESSAGE ("Quik не подключен к серверу...", 1)
Start_Flag = 0
END IF

ELSE

IF (Start_Flag == 1)
  delete_all_items()
    Class = CREATE_COLLECTION()
    Code = CREATE_COLLECTION()

    Class = INSERT_COLLECTION_ITEM(Class,0,"EQNL")   
    Class = INSERT_COLLECTION_ITEM(Class,0,"EQNE")
    Class = INSERT_COLLECTION_ITEM(Class,0,"EQBR")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQBR")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQNL")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQNE")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQNE")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQNL")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQBR")
Class = INSERT_COLLECTION_ITEM(Class,0,"EQNE")

    Code = INSERT_COLLECTION_ITEM(Code,0,"TRNFP")
    Code = INSERT_COLLECTION_ITEM(Code,0,"NOTK")
    Code = INSERT_COLLECTION_ITEM(Code,0,"RU14TATN3014")    
    Code = INSERT_COLLECTION_ITEM(Code,0,"RU14TATN3006")
    Code = INSERT_COLLECTION_ITEM(Code,0,"SIBN")
    Code = INSERT_COLLECTION_ITEM(Code,0,"SNGSP")
    Code = INSERT_COLLECTION_ITEM(Code,0,"SNGS")
    Code = INSERT_COLLECTION_ITEM(Code,0,"ROSN")
    Code = INSERT_COLLECTION_ITEM(Code,0,"LKOH")
    Code = INSERT_COLLECTION_ITEM(Code,0,"GAZP")

FOR i FROM 0 TO GET_COLLECTION_COUNT(Class)-1
Time_Trade = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "time")
StockInfo = GET_SECURITY_INFO(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i))
NameStock = GET_VALUE (StockInfo, "NAME")
        Open = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "open")+0
        Max = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "high")+0
        Min = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "low")+0        
        Close = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "closeprice")+0
        Price = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "last")+0 
        LastClose = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "prevprice")+0 
        
        Price_Open = (Price/Open*100)-100
        Max_Price = (Max/Price*100)-100 
        Price_Min = (Price/Min*100)-100        
Max_Open = (Max/Open*100)-100 
Max_Close = (Max/Close*100)-100
Max_Min = (Max/Min*100)-100
Open_LastClose = (Open/LastClose*100)-100
string = ""
string = set_value(string, "NameStock", NameStock)
string = set_value(string, "Open", Open)
string = set_value(string, "Max", Max)
string = set_value(string, "Min", Min)
string = set_value(string, "Close", Close)
string = set_value(string, "Max_Open", Max_Open)
string = set_value(string, "Max_Close", Max_Close)
string = set_value(string, "Max_Min", Max_Min)
string = set_value(string, "Price_Open", Price_Open)
string = set_value(string, "Max_Price", Max_Price)
string = set_value(string, "Price_Min", Price_Min)
string = set_value(string, "LastClose", LastClose)
string = set_value(string, "Open_LastClose", Open_LastClose)
IF Time_Trade > 0
string = set_value(string, "Time_Trade", SUBSTR(Time_Trade,0,2)&":"&SUBSTR(Time_Trade,2,2)&":"&SUBSTR(Time_Trade,4,2))
ELSE
string = set_value(string, "Time_Trade", 0)
END IF
Add_item(i+1,string)
END FOR

    IF (IS_CONNECTED() == 0)
MESSAGE ("Quik не подключен к серверу...", 1)
Start_Flag = 0
ELSE
Start_Flag = 2
END IF

ELSE
    IF (IS_CONNECTED() == 0)
MESSAGE ("Quik не подключен к серверу...", 1)
Start_Flag = 0
END IF
END IF
END IF
END IF

FUNC FTime()
TIME = GET_INFO_PARAM("SERVERTIME")
IF TIME+0 > 0 
Result = (SUBSTR(TIME,0,2)&SUBSTR(TIME,3,2)&SUBSTR(TIME,6,2))+0
ELSE
Result = 0
END IF
END FUNC

END_PROGRAM

PARAMETER NameStock;
PARAMETER_TITLE Инструмент;
PARAMETER_DESCRIPTION Инструмент;
PARAMETER_TYPE STRING(40);
END

PARAMETER Open;
PARAMETER_TITLE Open;
PARAMETER_DESCRIPTION Цена открытия рынка;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Max;
PARAMETER_TITLE Max;
PARAMETER_DESCRIPTION Максимальная цена внутри торгов;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Min;
PARAMETER_TITLE Min;
PARAMETER_DESCRIPTION Минимальная цена внутри торгов;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Close;
PARAMETER_TITLE Close;
PARAMETER_DESCRIPTION Цена закрытия рынка;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Price_Open;
PARAMETER_TITLE Price/Open %;
PARAMETER_DESCRIPTION Отношение цены к цене открытия;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Max_Price;
PARAMETER_TITLE Max/Price %;
PARAMETER_DESCRIPTION Отношение максимальной цены к цене;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Price_Min;
PARAMETER_TITLE Price/Min %;
PARAMETER_DESCRIPTION Отношение цены к минимальной цене;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Max_Open;
PARAMETER_TITLE Max/Open %;
PARAMETER_DESCRIPTION Отношение максимальной цены к цене открытия;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Max_Close;
PARAMETER_TITLE Max/Close %;
PARAMETER_DESCRIPTION Отношение максимальной цены к цене закрытия;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Max_Min;
PARAMETER_TITLE Max/Min %;
PARAMETER_DESCRIPTION Отношение максимальной цены к минимальной цене;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER LastClose;
PARAMETER_TITLE LastClose;
PARAMETER_DESCRIPTION Цена прошлого закрытия;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Open_LastClose;
PARAMETER_TITLE Open/LastClose %;
PARAMETER_DESCRIPTION Отношение цены открытия к цене прошлого закрытия;
PARAMETER_TYPE NUMERIC(15,2);
END

PARAMETER Time_Trade;
PARAMETER_TITLE Время послед.;
PARAMETER_DESCRIPTION Время последнего изменения;
PARAMETER_TYPE STRING(10);
END

END_PORTFOLIO_EX