1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*****************************************************************************
* URL: http://avin.info
* AUTHOR: Alex Avin
* E-MAIL: mr.alexavin@gmail.com
* LICENSE: MIT
****************************************************************************/
//! # AVIN - Ars Vincere
//!
//! Core structures for crate `avin`.
//!
//! # ru
//! Основные трейдерские объекты: бар, график, таймфрейм, ордер и тп.
//! Используются всеми остальными частями системы (крейтами):
//! `avin_strategy`, `avin_tester`, `avin_trader`, `avin_terminal`.
//!
//! Модуль импортирован в главный крейт `avin`, используйте его для работы.
//!
//! ## Архитектура (Overview).
//!
//! Центральные понятия модуля:
//!
//! 1. [`AssetList`] - список активов. Состоит из списка активов - [`Asset`].
//! Внутри актива хранится идентификатор инструмента [`Iid`], графики
//! [`Chart`] разных таймфреймов, тики [`Tic`]. График содержит
//! [`TimeFrame`], список [`Bar`] и копию [`Iid`]. К графику может быть
//! добавлен [`Indicator`], а так же датафрейм [`UserData`] с любыми
//! пользовательскими расчетами по этому графику (если нужно сделать
//! какой-то свой не стандартный индикатор). Тики внутри ассета
//! группируются по таймфреймам в [`Footprint`] и над ними рассчитываются
//! разные метрики [`Cluster`].
//! 2. [`TradeList`] - список трейдов, то что получается после отработки
//! тестера, или в боевом режиме. Он состоит из названия и списка
//! [`Trade`]. Когда на счете открывается позиция, открывается трейд.
//! Дальше все операции [`Operation`] связанные с этой позицией и
//! ордера [`Order`] привязываются к этому трейду. Когда позиция
//! закрывается, закрывается трейд. Трейд подсчитывает суммарные значения
//! по всем операциям. Операция состоит из отдельных сделок
//! [`Transaction`], потому что на стороне биржи ордер может исполниться
//! несколькими сделками.
//! 3. Брокер содержит счета [`Account`] на которых непосредственно
//! совершаются все операции. Брокер крутится в отдельном потоке, и
//! отправляет через канал события [`Event`]. Пример события: новый бар,
//! новый тик, ордер исполнен, ордер выставлен... События в боевом режиме
//! принимает трейдер (см. модуль avin_trader) или тестер в режиме
//! бэктеста (см. модуль avin_tester). И передает их стратегии (см. модуль
//! avin_strategy). Стратегия создает действия [`Action`], например:
//! выставить ордер, отменить ордер, подписаться на бары по инструменту...
//! И отправляет их через канал тестеру/трейдеру который уже по очереди
//! их передает брокеру (или VirtualBroker в режиме тестера).
//! 4. Подмодуль [`data`] отвечает за загрузку рыночных данных, которые
//! загружены утилитой avin-data.
//!
//! ## Getting start.
pub use ;
pub use ;
pub use Account;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use Indicator;
pub use ;
pub use ;
pub use ;
// market order statuses
pub use ;
// limit order statuses
pub use ;
// stop order statuses
pub use ;
// extrumum indicator
pub use ;