
Визуализация тестирования. Графики состояния счета.
Введение
Думаю, не только у меня при тестировании в режиме визуализации
возникало желание видеть информацию о состоянии счета в более
информативном виде.
Сколько было свободной маржи перед открытием последней позиции?
Куда "смотрит" кривая баланса? Насколько большие просадки
по эквити были за последние сутки?
На некоторые из этих вопросов пытаются ответить статья Визуализация тестирования. Расширение функциональности.. Но и в ней нет инструмента, позволяющего просматривать информацию
по счету легко и быстро. В этой статье будут рассмотрены программные
средства, реализующие графики состояния счета при тестировании
в режиме визуализации. В качестве примера будут рассмотрены
графики Баланса и Эквити. Также будут даны инструкции по созданию
графиков некоторых других показателей счета.
Это просто?
Казалось бы, что может быть проще написания индикатора, отображающего
Баланс? Единственный буфер заполняется по мере появления баров
последним известным значением Баланса. Вот и весь алгоритм.
Но есть одна проблема: индикатор, отображаемый на графике визуализации
тестирования, не имеет доступа к состоянию тестируемого счета. Все функции, отвечающие за эту информацию, возвращают
значения реального счета.
Именно эту "особенность" мы и научимся обходить. Для этого
необходимо:
- получить информацию о состоянии счета из эксперта;
- передать ее в индикатор и отобразить.
Для передачи актуальных данных мы будем использовать Глобальные переменные терминала, а для их отображения - стандартные функции пользовательских индикаторов.
Это просто!
В эксперта, который будет тестироваться, необходимо добавить
код сохранения значения Баланса в Глобальную переменную. Достаточно
одной строки в начале функции start():
int start() { // сохранение последнего значения баланса в гл. переменную GlobalVariableSet( "vGrafBalance", AccountBalance() ); // код эксперта return(0); }
Код индикатора будет не намного сложнее:
#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Blue double balance[]; int init() { IndicatorShortName( "vGrafBalance" ); IndicatorDigits( 2 ); SetIndexStyle( 0, DRAW_LINE ); SetIndexBuffer( 0, balance ); SetIndexLabel( 0, "Balance" ); } int start() { balance[0] = GlobalVariableGet( "vGrafBalance" ); return(0); }
Все! Можно компилировать индикатор, новую версию эксперта и приступать к тестированию!
После нажатия кнопки Старт и прикрепления к графику индикатора,
можно увидеть примерно следующее:
Как видите, кривая баланса отображает реальное развитие ситуации - при закрытии каждой сделки ее значение меняется.
А можно еще?
Все остальные графики делаются абсолютно аналогично:
- в эксперта добавляется строка, обновляющая значение необходимой Глобальной переменной;
- создается простой индикатор, считывающий значение этой переменной и отображающий его на графике.
Обратите внимание, что имя переменной для каждой характеристики
должно быть уникальное, то есть не совпадать с именами других
переменных.
Кроме того, оно должно совпадать с именем переменной, считываемой
индикатором.
Второй пример показывает, как добавить к графику Баланса график
Эквити.
Код эксперта:
int start() { // сохранение последнего значения баланса в гл. переменную GlobalVariableSet( "vGrafBalance", AccountBalance() ); // сохранение последнего значения эквити в гл. переменную GlobalVariableSet( "vGrafEquity", AccountEquity() ); // код эксперта return(0); }
Код индикатора:
#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red double equity[]; int init() { IndicatorShortName( "vGrafEquity" ); IndicatorDigits( 2 ); SetIndexStyle( 0, DRAW_LINE ); SetIndexBuffer( 0, equity ); SetIndexLabel( 0, "Equity" ); } int start() { equity[0] = GlobalVariableGet( "vGrafEquity" ); return(0); }
Пример использования:
Можно наложить один индикатор на другой, тогда будет видно соотношение
двух характеристик:
Заключение
В статье был описан процесс создания индикаторов, отображающих
состояние счета. Были рассмотрены простейшие индикаторы - индикаторы
Баланса и Эквити.
При желании вы можете создать любые другие графики: % прибыльных
сделок, Математическое ожидание выигрыша, Средний лот или Прибыль
позиции в пунктах - доступно все.
Информация может выглядеть красиво!





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Визуализация тестирования!
Шикарная штука
Идеи... это штука сложная
Попов изобрел радио! но есть англичанин опс... вылетело из головы имя... кажется ( Маркони )
Когда говорят о радио все помнят Попова, как изобретателя... порой одни и те же идеи приходят людям паралельно а вспоминают одного
( еще зависит от территории - на западе изобретателем радио считают Маркони)
еще --- кому башлять, кто автор идеи , я тут пишу на русском языке . .. его тоже придумал кто то... Кирил и Мифодий а точно. ..
представляю ... если бы каждый кто использует кирилицу -- заплатил бы авторам...
Но идея лежащая под сукном мертва! а выпущеная на волю уже общее достояние...
я бы гордился, если бы мои идеи пусть даже в роли Маркони попали бы в общее достояние...
Не ввязываясь в полемику, типа чисто для инфы...
Согласно закона "Об авторском праве и смежных правах" ст. 6 "Объект авторского права. Общие положения"
пункт 2."Авторское право распространяется как на обнародованные произведения, так и на необнародованные произведения, существующие в какой-либо объективной форме:
- письменной (рукопись, машинопись, нотная запись и так далеее);
- устной (публичное произнесение, публичное исполнение и так далее);
- и так далее.......................................................................................
пункт 4. "Авторское право не распространяется на идеи, методы, процессы, системы, способы, концепции, принципы, открытия, факты."
P.S. Идея сама по себе ничего не стоит с точки зрения авторского права, а вот ее выражение в объективной форме - да, но это уже другая история....
komposter, спасибо за отличную статью!
P.S .Только ссылка на статью "Визуализация тестирования. История сделок." не работает почему-то.
komposter, спасибо за отличную статью!
P.S .Только ссылка на статью "Визуализация тестирования. История сделок." не работает почему-то.
"Историю сделок" я объединил с "Расширением функциональности". Они, по сути, об одном и том же.
А тут исправить забыл ;)