'Следит за скоростью изменения цен списка бумаг и скидывает данные в файл при резком росте или падении. 'Важно оптимально задать максимальную скорость и период обновления портфеля PORTFOLIO_EX SpySpeed-1; DESCRIPTION SpySpeed-1; CLIENTS_LIST ALL_CLIENTS; FIRMS_LIST ALL_FIRMS; INCLUDE func_gr.txt; PROGRAM NEW_GLOBAL ("MegaMap", 0) NEW_GLOBAL ("Fiststart", 1) if Fiststart=1 Fiststart=0 MegaMap=CREATE_MAP () Values=CREATE_MAP () end if file_log = "C:\program1\SpySpeed\log.txt" 'Файл для хранения логов. file_units = "C:\program1\SpySpeed\units.txt" 'файл со списком классов бумаг и их кодов maxspeed=7 CurrentHour = GET_VALUE(GET_DATETIME(), "HOUR") CurrentMin = GET_VALUE(GET_DATETIME(), "MIN") CurrentSec = GET_VALUE(GET_DATETIME(), "SEC") CurrentTime = str2num(fTextTime(CurrentHour,CurrentMin,CurrentSec) & "") IF (CurrentTime > 103500 AND CurrentTime units_len=GET_FILE_LEN(file_units) units_len=units_len/2 ni=0 DELETE_ALL_ITEMS() for ii from 1 to units_len error=0 ClassCodeList = "" & READ_LINE (file_units, ii*2-1, error) Instrument = "" & READ_LINE (file_units, ii*2, error) CurrentHour = GET_VALUE(GET_DATETIME(), "HOUR") CurrentMin = GET_VALUE(GET_DATETIME(), "MIN") CurrentSec = GET_VALUE(GET_DATETIME(), "SEC") Secs=CurrentSec+CurrentMin*60+CurrentHour*3600 price = get_param(ClassCodeList,Instrument,"last") if price0 Values=Get_Value(MegaMap,Instrument) price1=Get_Value(Values,"price1") Secs1=Get_Value(Values,"Secs1") price2=Get_Value(Values,"price2") Secs2=Get_Value(Values,"Secs2") speed1=(price2-price1)/(secs2-secs1)*1000/price*100 speed=(price-price2)/(secs-secs2)*1000/price*100 accel=(speed-speed1)/(Secs-secs1) price1=price2 Secs1=secs2 price2=price Secs2=secs if (speed>maxspeed)or(speed WRITELN(File_Log, CurrentTime & ";" & Instrument & ";" & floor(speed*10)/10 & ";" & price ) end if values=Set_Value(values,"price1",price1) values=Set_Value(values,"price2",price2) values=Set_Value(values,"Secs1",secs1) values=Set_Value(values,"Secs2",secs2) MegaMap=Set_Value(MegaMap,Instrument,Values) output=CREATE_MAP() output=SET_VALUE(output,"time" , currenttime) output=SET_VALUE(output,"class" , ClassCodeList) output=SET_VALUE(output,"unit" , Instrument) output=SET_VALUE(output,"speed" , speed) output=SET_VALUE(output,"accel" , accel) output=SET_VALUE(output,"price" , price) ni=ni+1 ADD_ITEM(ni,output) end if end for END IF END_PROGRAM PARAMETER time; PARAMETER_TITLE время; PARAMETER_DESCRIPTION время; PARAMETER_TYPE string(10); END PARAMETER class; PARAMETER_TITLE класс; PARAMETER_DESCRIPTION класс; PARAMETER_TYPE string(10); END PARAMETER unit; PARAMETER_TITLE бумага; PARAMETER_DESCRIPTION бумага; PARAMETER_TYPE string(10); END PARAMETER price; PARAMETER_TITLE price; PARAMETER_DESCRIPTION price; PARAMETER_TYPE NUMERIC(10,2); END PARAMETER speed; PARAMETER_TITLE speed; PARAMETER_DESCRIPTION speed; PARAMETER_TYPE NUMERIC(10,2); END PARAMETER accel; PARAMETER_TITLE accel; PARAMETER_DESCRIPTION accel; PARAMETER_TYPE NUMERIC(10,2); END