Внизу кода таблицы есть пояснения, что считается.
Какие выводы делать на основе полученной аналитики? Смотрите в следующей статье.
PORTFOLIO_EX ABTactic;
DESCRIPTION Тактические параметры закона "Спроса и Предложения";
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ABTactic;
PROGRAM
NEW_GLOBAL("Stop_Time",174958)
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
Pr = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "offer")+0
Sp = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "bid")+0
Price = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "last")+0
Time_Trade = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "time")
Pr_SP = (Pr/Sp*100)-100
PrSP = Pr-Sp
Pr_Price = (Pr/Price*100)-100
PrPrice = Pr-Price
Price_Sp = (Price/Sp*100)-100
PriceSp = Price-Sp
string = ""
string = set_value(string, "Pr", Pr)
string = set_value(string, "Sp", SP)
string = set_value(string, "Price", Price)
string = set_value(string, "Pr_SP", Pr_SP)
string = set_value(string, "PrSP", PrSP)
string = set_value(string, "Pr_Price", Pr_Price)
string = set_value(string, "PrPrice", PrPrice)
string = set_value(string, "Price_Sp", Price_Sp)
string = set_value(string, "PriceSp", PriceSp)
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)
IF (Pr_Price < 0)
SET_ROW_COLOR_EX (i+1, "RGB(178,246,160)", "RGB(123,239,91)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
IF (Pr_Price == 0)
SET_ROW_COLOR_EX (i+1, "RGB(219,229,241)", "RGB(200,215,234)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
IF (Price_Sp < 0)
SET_ROW_COLOR_EX (i+1, "RGB(253,185,185)", "RGB(255,139,139)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
SET_ROW_COLOR_EX (i+1, "DEFAULT_COLOR", "DEFAULT_COLOR", "DEFAULT_COLOR", "DEFAULT_COLOR")
END IF
END IF
END IF
END FOR
IF FTime() > 0
string = set_value(string, "Time_Trade", SUBSTR(FTime(),0,2)&":"&SUBSTR(FTime(),2,2)&":"&SUBSTR(FTime(),4,2))
ELSE
string = set_value(string, "Time_Trade", "")
END IF
string = ""
string = set_value(string, "NameStock", "ИТОГО:")
string = set_value(string, "Pr", 0)
string = set_value(string, "Sp", 0)
string = set_value(string, "Price", 0)
FOR i FROM 1 TO GET_NUMBER_OF("OWN")-1
trade = GET_ITEM ("OWN", i)
string = set_value(string, "Pr", get_value(string, "Pr")+GET_VALUE(trade, "Pr"))
string = set_value(string, "Sp", get_value(string, "Sp")+GET_VALUE(trade, "Sp"))
string = set_value(string, "Price", get_value(string, "Price")+GET_VALUE(trade, "Price"))
END FOR
trade = GET_ITEM ("OWN", GET_NUMBER_OF("OWN"))
string = set_value(string, "Pr_SP", (GET_VALUE(trade, "Pr")/GET_VALUE(trade, "Sp")*100)-100)
string = set_value(string, "PrSP", GET_VALUE(trade, "Pr")-GET_VALUE(trade, "Sp"))
string = set_value(string, "Pr_Price", (GET_VALUE(trade, "Pr")/GET_VALUE(trade, "Price")*100)-100)
string = set_value(string, "PrPrice", GET_VALUE(trade, "Pr")-GET_VALUE(trade, "Price"))
string = set_value(string, "Price_Sp", (GET_VALUE(trade, "Price")/GET_VALUE(trade, "Sp")*100)-100)
string = set_value(string, "PriceSp", GET_VALUE(trade, "Price")-GET_VALUE(trade, "Sp"))
MODIFY_Item(GET_NUMBER_OF("OWN"),string)
SET_ROW_COLOR_EX (GET_NUMBER_OF("OWN"), "RGB(0,112,192)", "RGB(0,98,172)", "RGB(255,255,255)", "RGB(255,255,255)")
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
StockInfo = GET_SECURITY_INFO(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i))
NameStock = GET_VALUE (StockInfo, "NAME")
Pr = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "offer")+0
Sp = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "bid")+0
Price = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "last")+0
Time_Trade = GET_PARAM(GET_COLLECTION_ITEM(Class,i), GET_COLLECTION_ITEM(Code,i), "time")
Pr_SP = (Pr/Sp*100)-100
PrSP = Pr-Sp
Pr_Price = (Pr/Price*100)-100
PrPrice = Pr-Price
Price_Sp = (Price/Sp*100)-100
PriceSp = Price-Sp
string = ""
string = set_value(string, "NameStock", NameStock)
string = set_value(string, "Pr", Pr)
string = set_value(string, "Sp", SP)
string = set_value(string, "Price", Price)
string = set_value(string, "Pr_SP", Pr_SP)
string = set_value(string, "PrSP", PrSP)
string = set_value(string, "Pr_Price", Pr_Price)
string = set_value(string, "PrPrice", PrPrice)
string = set_value(string, "Price_Sp", Price_Sp)
string = set_value(string, "PriceSp", PriceSp)
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)
IF (Pr_Price < 0)
SET_ROW_COLOR_EX (i+1, "RGB(178,246,160)", "RGB(123,239,91)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
IF (Pr_Price == 0)
SET_ROW_COLOR_EX (i+1, "RGB(219,229,241)", "RGB(200,215,234)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
IF (Price_Sp < 0)
SET_ROW_COLOR_EX (i+1, "RGB(253,185,185)", "RGB(255,139,139)", "RGB(0,0,0)", "RGB(0,0,0)")
ELSE
SET_ROW_COLOR_EX (i+1, "DEFAULT_COLOR", "DEFAULT_COLOR", "DEFAULT_COLOR", "DEFAULT_COLOR")
END IF
END IF
END IF
END FOR
IF FTime() > 0
string = set_value(string, "Time_Trade", SUBSTR(FTime(),0,2)&":"&SUBSTR(FTime(),2,2)&":"&SUBSTR(FTime(),4,2))
ELSE
string = set_value(string, "Time_Trade", "")
END IF
string = ""
string = set_value(string, "NameStock", "ИТОГО:")
string = set_value(string, "Pr", 0)
string = set_value(string, "Sp", 0)
string = set_value(string, "Price", 0)
FOR i FROM 1 TO GET_NUMBER_OF("OWN")
trade = GET_ITEM ("OWN", i)
string = set_value(string, "Pr", get_value(string, "Pr")+GET_VALUE(trade, "Pr"))
string = set_value(string, "Sp", get_value(string, "Sp")+GET_VALUE(trade, "Sp"))
string = set_value(string, "Price", get_value(string, "Price")+GET_VALUE(trade, "Price"))
END FOR
Add_item(GET_NUMBER_OF("OWN")+1,string)
trade = GET_ITEM ("OWN", GET_NUMBER_OF("OWN"))
string = set_value(string, "Pr_SP", (GET_VALUE(trade, "Pr")/GET_VALUE(trade, "Sp")*100)-100)
string = set_value(string, "PrSP", GET_VALUE(trade, "Pr")-GET_VALUE(trade, "Sp"))
string = set_value(string, "Pr_Price", (GET_VALUE(trade, "Pr")/GET_VALUE(trade, "Price")*100)-100)
string = set_value(string, "PrPrice", GET_VALUE(trade, "Pr")-GET_VALUE(trade, "Price"))
string = set_value(string, "Price_Sp", (GET_VALUE(trade, "Price")/GET_VALUE(trade, "Sp")*100)-100)
string = set_value(string, "PriceSp", GET_VALUE(trade, "Price")-GET_VALUE(trade, "Sp"))
MODIFY_Item(GET_NUMBER_OF("OWN"),string)
SET_ROW_COLOR_EX (GET_NUMBER_OF("OWN"), "RGB(0,112,192)", "RGB(0,98,172)", "RGB(255,255,255)", "RGB(255,255,255)")
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 Pr;
PARAMETER_TITLE Предл.;
PARAMETER_DESCRIPTION Ближайшая цена предложения в стакане;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Sp;
PARAMETER_TITLE Спрос;
PARAMETER_DESCRIPTION Ближайшая цена спроса в стакане;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Price;
PARAMETER_TITLE Price;
PARAMETER_DESCRIPTION Текущая цена последней сделки;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Pr_SP;
PARAMETER_TITLE Pr/Sp %;
PARAMETER_DESCRIPTION Соотношение ближайших цен предложения и спроса;
PARAMETER_TYPE NUMERIC(15,3);
END
PARAMETER PrSP;
PARAMETER_TITLE Pr-Sp;
PARAMETER_DESCRIPTION Разница ближайших цен предложения и спроса;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Pr_Price;
PARAMETER_TITLE Pr/Price %;
PARAMETER_DESCRIPTION Соотношение ближайшей цены предложения и текущей цены последней сделки;
PARAMETER_TYPE NUMERIC(15,3);
END
PARAMETER PrPrice;
PARAMETER_TITLE Pr-Price;
PARAMETER_DESCRIPTION Разница ближайшей цены предложения и текущей цены последней сделки;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Price_Sp;
PARAMETER_TITLE Price/Sp %;
PARAMETER_DESCRIPTION Соотношение текущей цены последней сделки и ближайшей цены спроса;
PARAMETER_TYPE NUMERIC(15,3);
END
PARAMETER PriceSp;
PARAMETER_TITLE Price-Sp;
PARAMETER_DESCRIPTION Разница текущей цены последней сделки и ближайшей цены спроса;
PARAMETER_TYPE NUMERIC(15,2);
END
PARAMETER Time_Trade;
PARAMETER_TITLE Время послед.;
PARAMETER_DESCRIPTION Время последнего изменения;
PARAMETER_TYPE STRING(10);
END
END_PORTFOLIO_EX