Poyarkov696
0
All posts from Poyarkov696
  Poyarkov696 in Poyarkov696,

Робот-шпион.

'Следит за скоростью изменения цен списка бумаг и скидывает данные в файл при резком росте или падении.

'Важно оптимально задать максимальную скорость и период обновления портфеля

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