Избавиться от тягостной истории : )

 

Скальпер закрывает по сотне сделок на инструмент ежедневно.

И склонен к "глубокому самоанилизу" - просматривает и обсчитывает перед каждой операцией свою торговую историю а несолько раз.

Когда число исторических ордеров доходит до тысячи, тормозит в тестере до невозможности, даже если интервал тестирования 2-4 дня.

Как сделать, чтобы в реале он не подвесил мой, не очень-то мощный, в общем-то, ноутбук?

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

Это возможно?

Пока меня посетила только такая идея: каждые выходные переустанавливать терминал.

Ведь ордера открытые в пятницу от этого не потеряются?

Но такой вариант не слишком хорош:

1) часть истории хотелось бы оставлять для скальпера.

2) Если мне потом захочется извлечь всю историю сделок и построить, скажем, график, откуда мне брать данные?

В общем, подскажите, как это по-человечески сделать? (сократить доступную советнику историю)

 

А что мешает брать из истории сделок только последние 1000?

 

Да тут скорее дело не в количестве ордеров, а в корявости кода. Ведь просканировать тысячу ордеров - много времени не требуется. Просто по всей видимости это сканирование делается у автора на каждом тике, поэтому и торомозит. Да и помимо этого наверняка ещё куча ненужных операций выполняется. Могу конечно ошибаться, но просто такое ощущение складывается.

А зачем "каждые выходные переуставливать терминал" - вообще непонятно. Какое это имеет отношение к скорости работы советника?

 
Конечно, надо поработать с OrdersHistoryTotal( ).. как самого простого сигнала к пересчёту ордеров.
 
Cmu4:
Конечно, надо поработать с OrdersHistoryTotal( ).. как самого простого сигнала к пересчёту ордеров.
:-))), ИМХО, прежде "надо поработать" с букварем!!! :-))) этой темой, в частности...
 
Meat:

Да тут скорее дело не в количестве ордеров, а в корявости кода. Ведь просканировать тысячу ордеров - много времени не требуется. Просто по всей видимости это сканирование делается у автора на каждом тике, поэтому и торомозит.

А зачем "каждые выходные переуставливать терминал" - вообще непонятно. Какое это имеет отношение к скорости работы советника?

1) Конечно, скальпер сканирует всю историю на каждом тике (а как иначе - он же скальпер). Это сканирование делается несколькими независимыми функциями, каждой самостоятельно, поэтому получается, что история несколько раз прокручивается. Свести функции в одну - у меня не получится - слишком громоздкий код потом не отдебажить.

2) При переустановке терминала я надеюсь потерять часть истории, чтобы нечего стало сканировать

 
Eugene1:

1) Конечно, скальпер сканирует всю историю на каждом тике (а как иначе - он же скальпер). Это сканирование делается несколькими независимыми функциями, каждой самостоятельно, поэтому получается, что история несколько раз прокручивается. Свести функции в одну - у меня не получится - слишком громоздкий код потом не отдебажить.

2) При переустановке терминала я надеюсь потерять часть истории, чтобы нечего стало сканировать

1) Да уж... При таком подходе к программированию у вас ни один суперкомпьютер не справится с вашими задачами, хотя при нормальном коде с ними бы справилась и машина 15 летней давности. Мне очень жаль ваш ноутбук... Как ему не повезло с хозяином...

2) Даже не хочется комментировать такой бред... Но так для справки: история вообще не затрагивается при переустановке. Хотя конечно я не сомневаюсь, что вы найдёте не менее "изящное" решение вопроса.

 
Meat:

1) Да уж... При таком подходе к программированию у вас ни один суперкомпьютер не справится с вашими задачами, хотя при нормальном коде с ними бы справилась и машина 15 летней давности. Мне очень жаль ваш ноутбук... Как ему не повезло с хозяином...

2) Даже не хочется комментировать такой бред... Но так для справки: история вообще не затрагивается при переустановке. Хотя конечно я не сомневаюсь, что вы найдёте не менее "изящное" решение вопроса.

+100

Автор вообще не в теме про оптимизацию и ничего не слышит, кроме своих слов.. такое ощущение.

 
Cmu4:

+100

Автор вообще не в теме про оптимизацию и ничего не слышит, кроме своих слов.. такое ощущение.

Извините, если создал у вас такое впечатление.

Но если историю не урезать, то деваться некуда - надо оптимизировать.

Читаю док. по ссылке, но пока прояснения нет.

Может, к утру осенит... ну или чуть конкретней кто-нибудь выскажется.

 
Eugene1:

Извините, если создал у вас такое впечатление.

Но если историю не урезать, то деваться некуда - надо оптимизировать.

Читаю док. по ссылке, но пока прояснения нет.

Может, к утру осенит... ну или чуть конкретней кто-нибудь выскажется.

Дарю первую идею для осенения:

у вас было 1000 сделок в истории, вы их обработали, выставили ордер (допустим)

пришел новый тик.. в истории все теже 1000 сделок, все тот же ордер стоит. рассчитывать и анализировать ничего не надо

пришел новый тик.. в истории все теже 1000 сделок, все тот же ордер стоит. рассчитывать и анализировать ничего не надо

...

 

Т.е. в самом простом варианте можно сделать так:

int N; // глобальная переменная

if (N!=OrdersHistoryTotal( ))

{

...

алгоритм расчёта истории

...

N=OrdersHistoryTotal( );

}

Причина обращения: