простые сигналы, низкочастотная торговля, только IB
Нужно встроить использование бесплатного или дешевого источника end-of-day market data
пишите в личку


PORTFOLIO_EX LUK;
DESCRIPTION Объёмы купли/продажи за интервал;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST FIRMID;
PROGRAM
'Автор: Михаил Булычев
'Что делает:
' подсчитывается объёмы купли\продажи по определённому инструменту за
' заданный интервал
'Как использовать:
' В следующих строках следует указать код бумаги и код класса для
' отслеживаемого инструмента
'=============================НАСТРОЙКИ===============================
SecCode="LKOH" ' Код инструмента
ClassCode="TQBR" 'Код класса
interv=3600 'является интервалом в секундах
razn = 0 'смещение часового пояса относительно времени торговой системы.
'=============================НАСТРОЙКИ===============================
FUNC is_in_interval(interval, trade_time, sys_time, hour_shift)
csys_time_value=0
c_time_value=0
csys_time_value =0 + (0 + get_value(sys_time, "Hour") + hour_shift)*3600 + _
get_value(sys_time, "Min")*60 + _
get_value(sys_time, "Sec")
c_time_value=0 + ((0 + substr("" & trade_time, 0, 2)) * 3600) + ((0 + substr("" & trade_time, 2, 2)) * 60) + ((0 + substr("" & trade_time, 4, 2)))
csys_time_value = csys_time_value + 0
c_time_value = c_time_value + 0
k=csys_time_value - c_time_value
if k <= interval
result=1
else
result=0
end if
END FUNC
buy_value=0
sell_value=0
total_value=0
sys_time = GET_DATETIME()
delete_all_items()
mString=create_map()
j=0
n=get_number_of("ALL_TRADES")
for i from 0 to n
mTrade=get_item("ALL_TRADES", n-i)
trade_time=get_value(mTrade, "TIME")
if (get_value(mTrade, "SECCODE")= SecCode) AND (get_value(mTrade, "CLASSCODE")= ClassCode)
if is_in_interval(interv, trade_time, sys_time, 0-razn) = 1
value=0+get_value(mTrade, "VALUE")
j=j+1
if (get_value(mTrade, "OPERATION") = "BUY")
buy_value=buy_value+value
else
sell_value=sell_value+value
end if
total_value=total_value+value
else
break
end if
end if
end for
mString=set_value(mString, "vol", total_value)
mString=set_value(mString, "volbuy", buy_value)
mString=set_value(mString, "volsell", sell_value)
add_item(1, mString)
END_PROGRAM
PARAMETER vol;
PARAMETER_TITLE vol;
PARAMETER_DESCRIPTION Купили;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER volbuy;
PARAMETER_TITLE volbuy;
PARAMETER_DESCRIPTION Купили;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER volsell;
PARAMETER_TITLE volsell;
PARAMETER_DESCRIPTION Продали;
PARAMETER_TYPE NUMERIC(10,0);
END
END_PORTFOLIO_EX
Коллеги, всем добра!
Официально объявляю о завершении нашего супермарафона БОТ / иГРЫрАЗУМа.
К финалу конкурса имеем следующую картину
Рис. 1 Общая таблица доходности участников.

Рис. 2 График доходности по 4 кварталу текущего года (выделен для для лучшей визуализации)

Коллеги, всем добра!
Завершается наш полугодовой конкурсный марафон, рубрика вопросов участникам тоже подошла к своему логическому завершению. Думаю, будет справедливо закончить рубрику вопросами к участнику, который внес наибольший вклад в техническое и интеллектуальное сопровождение данного конкурса, разработал систему сбора, анализа и графического представления результатов участников, на добровольной основе вел еженедельные отчетные блоги по конкурсу, и это — Старый бес.
Участник заявлен в номинации БОТ, на момент публикации имеет следующие результаты, являясь лидером нашего конкурса:
Рис. 1. График изменения суммы счета.

Рис. 2. График с учетом ввода-вывода.
Коллеги, всем добра!
В сегодняшней традиционной рубрике вопросов конкурсантам несколько необычный представитель, а именно – наш творческий тандем, состоящий из двух участников - Стас Бржозовский и ch5oh. Группа заявлена в номинации БОТ, специализируется, если я правильно понимаю, на работе от продажи и сборке календарей.
Результаты тандема на момент публикации:
Рис. 1 График изменения суммы на счете.

Рис. 2. График с учетом ввода-вывода.
