Согласен, картину страшную описали для авто торговли. Думал заменить подход, теперь верну.
Вывод. Получение данных сводится к отдельной задаче. Корректность данных можно свести к общим подходам так как данные сводим в таблицы. Так?
В реализации подхода рассмотренного мною, без машины состояний вообще не вариант.
State Machine - система состояний (FSM), будет отслеживать состояние робота — в состоянии ли он торгов, или ждёт обновлений данных или ждёт сигналов и т.д.
Итог. правильная модель (минимальный фундамент):
-> рынок — это функция времени (ввести понятие дискретности "квант времени"),
-> стратегия — функция состояния (снимок, срез в заданный момент).
Принципы.
1. Источник истины — время
2. Минимальный ТФ > двигатель времени
3. Остальные ТФ > состояния мира
4. Стратегия никогда не входит в источники данных
5. Индикаторы — просто ещё один Source.
Каркас - итоговый поток:
DataSource
v
TimeEngine (tick - "квант времени")
v
WorldState (snapshot - снимок)
v
Strategy (signal)
v
SignalFilter
v
PositionManager
v
FSM
v
TradeAdapter
v
Equity
Каждый слой делает только своё.
Попробую реализовать. Не могу сказать что упростил, но "руки чешутся" по пробовать.
| Код |
|---|
----- Получаем цену последней сделки с графика цены local I = getNumCandles(tag.price) while I==nil or I==0 do sleep (100) I = getNumCandles(tag.price) end if I<=4 then toLog(log, 'Недостаточно бар для продолжения работы ' .. tostring(I) ) return end |
В реализации подхода рассмотренного мною, без машины состояний вообще не вариант.
State Machine - система состояний (FSM), будет отслеживать состояние робота — в состоянии ли он торгов, или ждёт обновлений данных или ждёт сигналов и т.д.
Итог. правильная модель (минимальный фундамент):
-> рынок — это функция времени (ввести понятие дискретности "квант времени"),
-> стратегия — функция состояния (снимок, срез в заданный момент).
Принципы.
1. Источник истины — время
2. Минимальный ТФ > двигатель времени
3. Остальные ТФ > состояния мира
4. Стратегия никогда не входит в источники данных
5. Индикаторы — просто ещё один Source.
Каркас - итоговый поток:
DataSource
v
TimeEngine (tick - "квант времени")
v
WorldState (snapshot - снимок)
v
Strategy (signal)
v
SignalFilter
v
PositionManager
v
FSM
v
TradeAdapter
v
Equity
Каждый слой делает только своё.
Попробую реализовать. Не могу сказать что упростил, но "руки чешутся" по пробовать.