История изменений ордеров

 
Сталкнулся со следующей проблемкой. Забыл записать предыдущее значение S/L. Через несколько дней спахвотился... пришлось перерыть логи почти за неделю, что бы найти нужную строку. Пока рылся в мозгу сгенерилась мысль. Сохранять историю изменения ордеров. Предлогаю следующее.
Исхожу из того, что MT4 написан на ООП.
Второе предположение по поступлению информации в терминал (я пишу то, как сделал бы я, если ошибся - поправте, подумаю над другим алгоритмом)
Итак, информация в терминал о состоянии ордеров поступет в одном из двух случев:
1) При конекте - поступает вся информация о состоянии счета, втч состоянии ордеров, вероятно запрашивает сам терминал.
2) При изменении данных по ордеру S/L, T/P, Close - сервер посылает соответствующее сообщение на терминал.
Основная мысль такова. Все изменения хронятся в файле с именем, совпадающем с тикетом ордера, если ордер уже история, то в имени файла после (или до) тикета дописывается символ "h". Информация в файле:
TimeModifi, OpenTime, Type ,OpenPrice, Lots, SL, TP, CloseTime ,ClosePrice.

АЛГОРИТМ №1

После обновления терминала смотрим есть ли открытые позиции, если да то:
вызывается процедура сверки состояния ордеров с их историей:
Создаем MemoryTable с колонками: Tiket, Type ,SL,TP
Записываем туда соответствующие данные из файлов (последняя строка) без символа "h".
Запускаем цикл от 1 до TotalTrades
Берем позицию N, ищем ее в MemoryTable, если не находим, то создаем новый файл (при этом TimeModifi := OpenTime), если находим, то
Если Type , SL,TP совпадают, то удоляем соответствующую строку из MemoryTable, если не совпадают, то пишем в конеце файла новою строку с данными, при этом если изминился Type, то TimeModifi := OpenTime, иначе TimeModifi := CurTime, а затем удоляем соответствующую строку из MemoryTable
После окончания цикла проверяем, пуста ли MemoryTable, если пуста, то Return, иначе (вероятно эти позиции стали историей) запускаем цикл от 1 до TotalTableColumn
Берем позицию N ищем соответствующий Тикет в истории ордеров, если находим, то пишем в конеце файла новою строку с данными TimeModifi:=CloseTime, добавляем в имя файла симол "h", если не находим, то игнорируем (вообще-то это исключительная ситуация и я мало представляю как такое может случиться, если ордер был, а теперь его нет ни где, только одно, кто-то ручками постарался)
После оконяания цикла Return.

Если нет открытых позиций, проверяем есть ли файлы без символа "h", если есть то Создаем MemoryTable с колонками: Tiket, Type ,SL,TP
Записываем туда соответствующие данные из файлов (последняя строка) без символа "h".
запускаем цикл от 1 до TotalTableColumn
Берем позицию N ищем соответствующий Тикет в истории ордеров, если находим, то пишем в конеце файла новою строку с данными TimeModifi:=CloseTime, добавляем в имя файла симол "h", если не находим, то игнорируем (вообще-то это исключительная ситуация и я мало представляю как такое может случиться, если ордер был, а теперь его нет ни где, только одно, кто-то ручками постарался)
После оконяания цикла Return.

Если ли файлы без символа "h" нет, то Return.


АЛГОРИТМ №2

При поступлении с сервера новых данных о состоянии ордера.
Проверяем есть ли файл с именем тика, если нет, то создаем
Пишем в конец файла информацию о новом состоянии ордера.
если ордер созался или изминился тип ордера, то TimeModifi:= OpenTime
если ордер закрылся, то TimeModifi:=CloseTime, дописываем в имя фала символ "h".
иначе TimeModifi := CurTime


Ну вот, где-то так. Возможно что-то упустил, поправте.

И еще. Открытие файла с историей внести в меню правой мыши в терминале
 
Мы как раз примерно такую идею собираемся реализовать для окна работы с ордерами: автоматически писать в определенный файл (HTML формат) все торговые транзакции, произведенные с терминала.

Не уверен, что хорошо будет вести автоматический лог всех изменений ордеров - придется городить целую базу по сохранению состояния всех когда-либо обслуживаемых ордеров для отслеживания состояний.
 
Мы как раз примерно такую идею собираемся реализовать для окна работы с ордерами: автоматически писать в определенный файл (HTML формат) все торговые транзакции, произведенные с терминала.

Не уверен, что хорошо будет вести автоматический лог всех изменений ордеров - придется городить целую базу по сохранению состояния всех когда-либо обслуживаемых ордеров для отслеживания состояний.

А зачем база, если по каждому работающему ордеру отслеживать наличие файла, а по истории уже не надо (один раз сохранили). Все дело в том, на мой взгляд, что насколько долго хранить информацию о конкретном ордере, дело каждого пользователя. Если он снес файл (ручками) с историей еще живого ордера, то, предпологается, что история ордера до этого момента ему уже не нужна, а процедура создает новый файл и пищет изменения с текущего момента. То есть задача в чем, не перегружать сервер хранимой информацией, пусть все пишется на локальный компьютер. Лишь бы для каждого ордера отдельный файл (HTML-это тоже не плохо, главное, чтобы в виде таблицы, и легко можно было перетащить в эксел или еще куда) который можно посмотреть по правой мышке.
Причина обращения: