Отслеживание истории сделок и применение Z-счёта в экспертах

 

Подскажите, пожалуйста, можно ли заставить эксперт записывать историю сделок и постоянно к ней обращаться, и самое главное, каким образом это сделать?

Т.е. речь идёт не о записи в файл статистики, которая, насколько я понимаю, происходит после прогона, а во время тестирования с целью использования текущих значений в расчётах.

Цели следующие:

1. В зависимости от знака и величины Z-счёта эксперт принимает решение об объёме открываемой позиции, а также (при определённых условиях) о целесообразности открытия позиции.

2. На принятие решения оказывают влияние и величины максимальных прибыльных/убыточных серий.

Прочитал статью «Математика в трейдинге», просмотрел «Вычисление Z-счёта», да и с книгами Винса неплохо знаком, но в программировании ещё не настолько силён, потому прошу подсказать.

P.S. За материалы огромное спасибо, в том числе и за статьи на Альпари. И ещё вопрос в догонку: переписал инклюдник статистики «под себя» - всё работает отлично, кроме величины баланса после каждой сделки – в каждой строке выдаёт последнее (конечное) значение баланса, с чем это может быть связано и как это исправить?
 
Rone:

Подскажите, пожалуйста, можно ли заставить эксперт записывать историю сделок и постоянно к ней обращаться, и самое главное, каким образом это сделать?

Т.е. речь идёт не о записи в файл статистики, которая, насколько я понимаю, происходит после прогона, а во время тестирования с целью использования текущих значений в расчётах.

Для тестирования можно предложить объявить массив double на глобальном уровне (размером эдак на 500 элементов, думаю, больше сделок вряд ли будет) и записывать туда результаты сделок. Вот еще некоторые идеи, скачал, а где скачал - не могу найти.
Файлы:
 

Может это поможет

      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || Magic != OrderMagicNumber()) continue;
         //----
         if(OrderProfit()>0) profit++;
         if(OrderProfit()<0) losses++;
        }
А потом обрабатывай кол лосей и профитов
 

To Rosh

To Prival

Большое спасибо за ответы, попробую реализовать