[Cкрипт] MyFxBookStatementViewer - перенос истории MyfxBook на график MT4/5

От pavlus777, 22 июля, 2025 в Скрипты

Страница 1 из 3
Автор#1

Название Скрипта: MyFxBook Statement Viewer
Сайт продажиhttps://tlap.io/

Описание: Скрипт позволяет отобразить на графике в MT4/5 сделки из истории мониторинга на MyFxBook (любого, с открытой историей торгов)


Доп. Инфо: есть возможность дополнительно посчитать лоты/прибыль/пункты, а также задать дату начала и окончания отображения истории торгов. 


Инструкция: 

 

1) Устанавливаем скрипт в терминал

2) Качаем statement любого мониторинга на Myfxbook

 

Для этого нужно залогиниться в сервисе, затем на странице нужного мониторинга справа вверху жмем кнопку c ползунками и выбираем CSV:
 

2025-07-22_15-33-19.png

 

3) Через пару минут на почту, указанную при регистрации в MyFxBook придет файл с историей торгов.

 

4) Полученный файл нужно положить в папку терминала Каталог данных - MQL4(5) - Files

Скопируйте имя файла в буфер обмена.

 

4) В терминале открываем график с нужным инструментом и таймфреймом и перетягиваем на него скрипт

 

5) В окне настроек нужно обязательно указать имя файла отчета, включая расширение. 

Например 132347statement.csv

 

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

2025-07-22_15-42-09.png

 

6) Скрипт отобразит на графике ордера

 

image.png

 

Пост в блоге

 

Strategy Viewer.zip22 скач.

Изменено 11 июля пользователем Pavel888

#2

Имхо, я бы переименовал предложенный скрипт в MyFxBookStatementViewer.

Есть несколько скриптов с названиями, похожими на Strategy Viewer, но другими назначениями и применениями - большинство визуализирует сигналы MQL5.

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

 

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

В MyFxBook изобилие центовых счетов, чья история не хранится в терминалах и её невозможно визуализировать на графиках более чем за месяц.

Предлагаемый скрипт из очень немногих, позволяющих визуализировать на графиках торги на центовиках хоть и за годы - и это позволяет хорошо анализировать торги и уточнять/оптимизировать настройки.

В общем, выглядит оправданным назвать скрипт прямо согласно назначения и по названию однозначно понимать что именно и с какими данными делается скриптом.

#3

При выборе опции no_additional_info (дефолтная) и правильном задании смещения времени разметка на графике корректна, минимальна и читаема.

Спойлер

image.thumb.png.ae0ff69a72a4a58b2f8ee269fedd12b7.png

К сожалению, я делал скрины на торговом терминале и на графике видны текущие ордера, что несколько смазывает разметку скрипта.

Но история торгов за около 50 дней содержит более 300 ордеров и понять что так или не так в работе скрипта возможно.

 

При предварительно обсуждении функционала данного скрипта я предлагал при выборе опции no_additional_info всё равно суммировать прибыль в деньгах и выводить на графике справа внизу.

В том числе потому, что нет смысла делать разметку истории торгов, не выводя как минимум их финансовый результат. 

В текущей реализации скрипта это предложение не реализовано - выводится ноль.

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

 

---

 

При выборе опции, отличной от no_additional_info (дефолтная), как выясняется, скриптом выводится текст по каждому ордеру - который плохо накладывается на график и совершенно не читаем.

Причем текст не читаем и бесполезен вне зависимости от ТФ графика - см 3 скрина разных ТФ ниже.

Спойлер

image.thumb.png.8f6faa9c33f2fe045c2f99ff7b2f87de.png

 

image.thumb.png.ae0246c8f74a67614ce1c9f41c547bfa.png

 

image.thumb.png.0309f52778f8471ca00c23bb9daaab88.png

 

Вывод текста поверх меток ордеров без адекватного смещения смысла не имеет - оправдан только вывод итоговой суммы справа внизу.

 

В чужом (недоступном для скачивания из инета) скрипте похожего назначения есть опция управляемого смещения выводимого на график текста - выглядит это примерно так.

Спойлер

1.png.0dbc2a5cf0be8ab0cd03c7e72a3a75af.png

я не берусь оценить насколько подобная опция повысит читаемость текста на графиках больших ТФ или со значительном смещении цены.

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

 

P.S. Прилагаю стэйтмент истории торгов на EURUSD и GBPUSD со смещением 1 час (Ф4ю), использовавшийся для тестов скрипта и скринов

statement 20250719 No tickets.csv3 скач.

Изменено 27 июля, 2025 пользователем Старик

#4

При анализе прототипа изучаемого в данном топике скрипта в https://tlap.io/kak-perenesti-sdelki-iz-myfxbook/ коллега @alextron выявил, что старый скрипт не обрабатывает историю торгов собственного (владельца) мониторинга.

То есть если историю торгов из MyFxBook выгружает гость (не владелец мониторинга), то скрипт такой CSV файл обрабатывает корректно.

А есть владелец мониторинга выгружает собственную историю торгов из мониторинга, то скрипт выдает сообщение вида примерно как на скрине

image.png.eb168c40205f45c6860d316b8bd056c6.png

при том, что в тестируемой истории более 300 ордеров EURUSD.

Ну и старый скрипт не делал разметку торгов на графике, если видел в истории лишь 1 ордер из 300++.

 

Новый скрипт из данного топика также не обрабатывает корректно историю торгов, если её скачивает владелец мониторинга.

Владелец мониторинга собственные торги визуализировать на графике не может - можно визуализировать лишь историю чужих торгов.

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

 

Дальнейшее сравнении историй торгов из MyFxBook, скачанных владельцем и гостем мониторинга, показало, что в файле стэйтмента торгов владельца мониторинга в описании каждого ордера есть одно дополнительное поле Ticket, отсутствующее в истории торгов, скаченной гостем мониторинга.

Это лишнее (совершенно бесполезное) поле/столбец Ticket в истории торгов у владельцев мониторингов приводит к сдвигу размещения информации по каждому ордеру в истории торгов, скрипт путается и не может корректно визуализировать торги владельца мониторинга.

 

Перечень параметров ордеров в истории счета MyFxBook, скачанной гостем (не владельцем) мониторинга

Tags,

Open Date,Close Date,Symbol,Action,Units/Lots,SL,TP,Open Price,Close Price,Commission,Swap,Pips,Profit,Gain,Comment,Magic Number,Duration (DD:HH:MM:SS),Profitable(%),Profitable(time duration),Drawdown,Risk:Reward,Max(pips),Max(USD),Min(pips),Min(USD),Entry Accuracy(%),Exit Accuracy(%),ProfitMissed(pips),ProfitMissed(USD)

 

Перечень параметров ордеров в истории счета MyFxBook, скачанной владельцем мониторинга

Tags,

Ticket,

Open Date,Close Date,Symbol,Action,Units/Lots,SL,TP,Open Price,Close Price,Commission,Swap,Pips,Profit,Gain,Comment,Magic Number,Duration (DD:HH:MM:SS),Profitable(%),Profitable(time duration),Drawdown,Risk:Reward,Max(pips),Max(USD),Min(pips),Min(USD),Entry Accuracy(%),Exit Accuracy(%),ProfitMissed(pips),ProfitMissed(USD)

 

Для корректной работы скрипта как у гостя, так и у владельца мониторинга, в код скрипта надо добавить выявление и пропуск поля/столбца Ticket.

1) добавить true|false флаг наличия не нужного при визуализации поля Ticket (по дефолту false)

2) при анализе первой записи файла стэйтмента искать в перечне параметров поле Ticket и, если есть, активировать флаг наличия поля Ticket.

3) в начале обработки/расшифровки строки очередного ордера, если флаг Ticket =true, пропускать поле Ticket без обработки.

 

Возможно когда-то в будущем MyFxBook изменит структуру записей файла истории торгов и будет нужна другая обработка информации об ордерах.

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

Изменено 29 июля, 2025 пользователем Старик

#5

@Старик  Привет, коллега

Сейчас сильно загружен, я постарался реализовать все ваши пожелания. 

Последнее не удалось проверить, так как нет файла, буду благодарен, если дальнейшие подобные баги будут репортироваться с файлами.

Я изменил структуру поиска, поэтому логика иная, но она стабильнее и мы не зависим от колонок и их расположения.

Если возникнут еще какие-либо баги - пишите 

 

 

MyFxBookStatementViewer.ex45 скач. MyFxBookStatementViewer.ex56 скач.

#6
1 час назад, ademen сказал:

Старик  Привет, коллега

Сейчас сильно загружен, я постарался реализовать все ваши пожелания. 

Последнее не удалось проверить, так как нет файла, буду благодарен, если дальнейшие подобные баги будут репортироваться с файлами.

Я изменил структуру поиска, поэтому логика иная, но она стабильнее и мы не зависим от колонок и их расположения.

Если возникнут еще какие-либо баги - пишите 

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

ДЦ Ф4ю, смещение 1 час.

statement 20250719 No tickets.csv2 скач. statement 20250719 + tickets.csv2 скач.

#7
В 29.07.2025 в 23:46, ademen сказал:

Если возникнут еще какие-либо баги - пишите 

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

Детально посимвольно мы не тестировали, но, на первый взгляд, стэйтменты и владельца, и гостя мониторинга обрабатываются вроде одинаково.

Это был баг, который в исходном скрипте существовал с 2013 года! :classic_laugh:

 

Но управление выводом (подсчет сумм) вы вроде 1) сломали и 2) изменили, имхо, нежелательным образом (желательно оптимизировать).

 

Для тестов мы используем фиксированные (одни и те же) стэйтменты, прикрепленные в предыдущем посте.

И, соответственно, результаты (как минимум суммы) любой работы первого и второго релизов скрипта должны совпадать ввиду неизменности обрабатываемых данных.

Спойлер

 

image.png.c05d73ecd3959b770f1f3c4ff583127d.png

 

 

image.thumb.png.5684ed2ba432a85b323089c0dbe564e2.png

В отработке первого релиза скрипта прибыль +830, второй релиз насчитал -1030 (чего в мартине без стопов не может быть).

Точнее, любого несовпадения не должно быть - поскольку тестируются один и то же файл стэйтмента.

Ну и, насколько понимаю, прибыль/убыток ордеров в последнем релизе визуализируется (или вычисляется) некорректно.

 

Корректность вычисления значений и сумм пипсов и лотов я не проверял.

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

Изменено 3 августа, 2025 пользователем Старик

#8

Есть предложения по небольшому развитию скрипта.

Потенциально это чрезвычайно полезный скрипт для анализа и оптимизации торгов!

И скрипт задуман как "легкий" - такой, каким можно быстро показать торги за большой период на 1 паре.

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

 

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

Можно дублировать - крупнее справа внизу и обычным шрифтом слева вверху.

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

 

2) предоставить возможность выбора хотя бы цвета выводимого на график текста/информации Sell/Buy ордеров.

Шрифт, размер - то ладно, можно обойтись...  Но хотя бы выбор 2х цветов текста на графике желателен.

 

3) добавить переключатель TextOnGrafik=false|true (по дефолту =false) для управления выводом инфы по каждому ордеру отдельно.

Оставить меню из 3х позиций как у вас уже есть (с всегда выводом суммы согласно режима) - а инфу по каждому ордеру выводить лишь при TextOnGrafik=true.

Информация по отдельным ордерам, что бы не делалось, читается на графике плохо и очень желательна опция полного отключения вывода на график информации по отдельным ордерам.

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

То есть на графике метки ордеров, трассировка и итоговая сумма по каждому из 3х режимов - это оптимальный минимум по дефолту.

 

4) добавить опцию Magic в минимальном варианте:

а) -1 показывать и учитывать в сумме ордера с любым магиком (дефолтно, контроль магика отключен)

б) 0 и более (одно число) показывать и учитывать ордера только с этим явно указанным магиком.

Теоретически можно задавать несколько магиков через разделитель - но, имхо, для простого скрипта это чрезмерно, хватит и одного магика.
 

5) было также пожелание задавать даты в скрипте через календарь - но, имхо, даты и вручную вписывать можно.

 

Посмотрите, пожалуйста, что из перечисленного можно реализовать.

Изменено 3 августа, 2025 пользователем Старик

#9
3 часа назад, Старик сказал:

5) было также пожелание задавать даты в скрипте через календарь - но, имхо, даты и вручную вписывать можно.

Добрый день

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

Все сделаю, только насчет календаря, можете прислать исходник, где такой метод реализован? 

#10
1 час назад, ademen сказал:

Все сделаю, только насчет календаря, можете прислать исходник, где такой метод реализован? 

Исходника с параметрами такого типа как-то не припоминаю, кроме Сетки...

Сетка, параметр FinalGridDate (в Сетке параметров такого типа несколько десятков)

 

SINPUT datetime FinalGridDate = D'2029.12.30 00: 00: 00';

 

image.png.653e6feea9559a2c53709d2d2a333481.png

 

В файле сета дата выводится в секундах FinalGridDate=1893283200

 

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

Изменено 3 августа, 2025 пользователем Старик

#11

Коллега @ademen, ещё один файл стэйтмента мониторинга для тестирования работы скрипта.

В этом файле нет не только поля Ticket, но нет и поля Tags - поле Open Date первое п/п в строках ордеров.

 

Странно, конечно, что MyFxBook выдает стэйтменты в csv как минимум в 3х разнящихся вариантах.

Ну очень странно.

Хорошо хоть наименования полей в первой справочной строке стэйтмента строго одинаковое и это позволяется корректно расшифровывать строки информации по ордерам.

Но накрутили ребята из MyFxBook с информацией в стэйтментах конкретно...

4UR33 - 20250804.csv2 скач.

#12
1 час назад, Старик сказал:

Коллега @ademen, ещё один файл стэйтмента мониторинга для тестирования работы скрипта.

В этом файле нет не только поля Ticket, но нет и поля Tags - поле Open Date первое п/п в строках ордеров.

 

Странно, конечно, что MyFxBook выдает стэйтменты в csv как минимум в 3х разнящихся вариантах.

Ну очень странно.

Хорошо хоть наименования полей в первой справочной строке стэйтмента строго одинаковое и это позволяется корректно расшифровывать строки информации по ордерам.

Но накрутили ребята из MyFxBook с информацией в стэйтментах конкретно...

Коллега, работает же.  Или у вас нет?

image.png.268ed344244cf6f827760d2c8a2ba840.png

Вот эти поля главные, советник находит из в любом месте и другие игнорирует

 

 

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

Изменено 4 августа, 2025 пользователем ademen

#13
1 час назад, ademen сказал:

Коллега, работает же.  Или у вас нет?

да, и у меня отработала - в смысле отрисовало сетки.

надписи и суммы неверные, скрипт пока использовать нельзя - но ордера из этого стейтмента вроде корректно перенесены на график.

 

я просто удивился, выявив уже 3й вариант стэйтмента торгов от одного и того же сайта MyFxBook.

и тут же передал его вам как ещё один набор исходных данных (стэйтмент) для тестирования скрипта.

Изменено 5 августа, 2025 пользователем Старик

#14
В 04.08.2025 в 23:29, ademen сказал:

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

У меня нет другой цифры для вас, кроме +$830.35

Только EURUSD, прибыльные торги Сеткой 1.5 месяца с 2 июня по 19 июля - прибыль +830.35

 

Эту число абсолютно корректно вычислил скрипт первого релиза из первого поста - 3й раз привожу скрин

Спойлер

image.png.c05d73ecd3959b770f1f3c4ff583127d.png

То есть первая версия скрипта, выложенная в этом топике, считала прибыль корректно.

И прибыль/убыток отдельных ордеров, визуализировавшийся на графике, скрипт из первого поста вроде вычислял и показывал корректно.

 

Эту же прибыль +830.35 от торгов Сеткой на евре по 19 июля показывает и мониторинг - совпадение с точностью до цента.

Спойлер

image.thumb.png.359c5099ba75d4cd5fa3c34a5e6a1bd6.png

Задайте в монике в анализе только евру, период по 19 июля - и вы подучите прибыль $830.35.   Это ни разу не случайное число!

 

То есть есть независимое подтверждение, что на обеих выложенных мною файлах statement 20250719 прибыль безоговорочно должна быть +$830.35.

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

То есть ваши -1030.13 это гарантированная одна или нескольких ошибок в коде скрипта - у вас даже знак суммы не совпадает с мониторингом.

 

---

 

Вы что-то сломали в последнем релизе в вычислении прибыли/убытка отдельных ордеров - причем вряд ли отдельно в суммировании...

Это обычное дело: скрипт очень серьезно перерабатывается и расширяется - что-то из ранее работавшего можно и сломать.

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

 

Возможно баг на уровне реорганизованной вами выборки информации из строк ордеров, а дальше корректно...

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

Может даже, при выборке информации о прибыли, где-то просто вычитание вместо прибавления

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

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

 

Критично, что релиз из первого поста до цента совпадал с мониторингом - а второй не совпадает вообще. 

Точно что-то сломалось - возможно, в модифицированной выборке или обработке результатов переработанной выборки.

Возможно что-то сломалось при урезании меню вывода с 4х до 3х вариантов выводимой информации и подсчитываемых сумм.

 

я бы порекомендовал прогнать на statement 20250719 No tickets.csv первый и второй релизы и сравнить одинаковые ордера на м1.

Раз первый релиз совпадает с мониторингом, ориентироваться надо на финрезультаты ордеров из первого релиза (первого поста) или моника.

Спойлер

Вам доступна информация из моника по прибыли каждого ордера - вы можете перепроверить расчет скрипта и убедиться верно считает или нет

image.thumb.png.c51bfbadb9922339cac4ff59ace2d660.png

 

Пока у вас неверно вычисляется финрезультат каждого ордера, корректных сумм (совпадающих с мониторингом) вы не получите.

Хотя может дело и в чём-то другом, может какая-то описка разовая...

Изменено 6 августа, 2025 пользователем Старик

#15

3.0
- добавлено название файла
- добавлен цвет и размер подписи
- добавлен переключатель для текста на графике
- добавлен фильтр по магику
- добавлен календарь к входным данным

- исправлен баг с сумой на графике

@Старик, коллега, работаем дальше

MyFxBookStatementViewer.ex44 скач.

#16
В 07.08.2025 в 22:50, ademen сказал:

3.0

Это уже намного лучше!   И быстродействие скрипта отличное!

 

Мне сообщили, что размер шрифта не меняется

Спойлер

не меняется размер шрифта.png

 

---

 

Есть предложения по реорганизации ввода - параметры должны располагаться сколь возможно группами согласно назначения:

fileName=.csv
InpMagic=-1

InpStartDate=0
InpEndDate=2051222399

 

hourOffset=0

InpTextOnChart=false

addInfoType=1
InpYDistance=0

 

InpColorForBuy=16711680
InpColorForSell=255
InpFontSize=10

 

То есть сначала все параметры ЧТО визуализируем - а потом КАК визуализируем.

Группы параметров можно разделить комментами (выводимыми в таблицу настроек и сет) для лучшей понимаемости пользователями.
Скрипт важный, но использоваться он будет нечасто пользователями по потребности - интересный моник ещё надо найти...

Важно, чтобы люди не путались в не очень понятных многим параметрах.   

Минимальное описание параметров лучше добавить файлом в финальный архив релиза (который будет помещен в первый пост).

 

---

 

Мои предложения по дефолтным настройкам:

 

1) fileName=.csv  (дефолтно точка и расширение csv).    Или как в винде *.csv

При такой настройке удобнее всего средствами винды скопировать имя файла и вставить левее точки - просто нет проблем.

Выдумывать какое-то дефолтное имя файла, которое разные люди вряд ли будут использовать у себя, вряд ли оправдано.

Да и людям всё же сложнее выделять дефолтное имя файла, чтобы заменить на реальное - больше вероятность ошибки ввода.

 

2) InpTextOnChart=false

Скорее всего, в большинстве случаев люди будут визуализировать всю информацию моника за весь период.

Это будут ТФ от часа и, даже при малом количестве ордеров, инфа по отдельным ордерам будет читаться крайне хреново - если ТФ больше минуты, текст накладывается на свечи.

Инфу по отдельным ордерам имеет смысл выводить только если человеку зачем-то она нужна - если вообще будет нужна.

Вот суммы деньги/пипсы/лоты критичны - это понимание эффективности торгов.  А по ордерам только лишь если надо.

Поэтому дефолтно предлагаю =false.

 

Предлагаемый вариант дефолтных настроек можно использовать лишь в финальном архиве для первого поста.

Пока отладка, дефолтные настройки можно использовать любые.

 

---

 

Ну и вопрос - в чем задается InpYDistance?   Пиксели, пункты 5тизнак, пипсы 4хзнак?  Как задавать настройку?

Лучше бы в чем-то понятном трейдерам - типа пунктов или пипсов.

Ну а для вывода пункты или пипсы пересчитывать в то, в чем смещение задается на графике.

Изменено 10 августа, 2025 пользователем Старик

#17

Есть предложение до предела упростить вывод итоговых сумм.   Как вверху, так и внизу.
Потому что нет необходимости сверхсложно/шифрованно выводить запрошенный режим суммирования - нужен только результат.

Поскольку суммирование не важно чего должно дать ответ на простой вопрос - сколько чего!

Как в школьных задачках - 6 яблок или 8 груш.

Строго говоря, минимальных вариантов показа сумм чего угодно всего два: "сколько чего" - или "чего сколько".

 

То есть слева вверху и справа внизу достаточно выводить результат суммирования как текст 100 money или 1000 points или 15 lots.

Если на графике справа внизу написано 1000 points, то как бы всем понятно, что было задано суммирование пунктов, а не денег или лотов.

 

Вместо money можно currency, конечно.

Но, насколько помню, стэйтмент не содержит информации о валюте счета и мы не знаем в какой валюте приведена прибыль в стэйтменте.

А депозиты в ДЦ могут быть в добром десятке валют и какая currency счета из стэйтмента вроде просто х.з.

Ну а раз мы не знаем какая у счета currency и в чем выражена прибыль/финрезультат, то чего бы по-крестьянски не писать просто money?!

 

 

P.S.  Полагаю, что мы уже на финише.

Может, полный тест скрипта позднее что-то выявит - но по функционалу и интерфейсу скрипта-минимум мы вроде уже определились.

Изменено 10 августа, 2025 пользователем Старик

#19
15 часов назад, ademen сказал:

@Старик, ничего не упустил?

Сейчас скрипт надо протестировать в абсолютно всех режимах - это займет какое-то время, но сделаю!

Предварительно (как скрипт задумывался) мы с Вами вышли на финальную версию - пред официальный релиз.

Но может в будущем, в процессе эксплуатации скрипта, у пользователей возникнут какие-то предложения.

Теоретически это возможно - хотя не думаю, что мы что-то значимое в скрипте упустили.

 

Для меня без ответа остались один вопрос и одно предложение по настройкам.

 

Вопрос

В 08.08.2025 в 22:27, Старик сказал:

в чем задается InpYDistance?   Пиксели, пункты 5тизнак, пипсы 4хзнак?  Как задавать настройку?

Лучше бы в чем-то понятном трейдерам - типа пунктов или пипсов.

Ну а для вывода пункты или пипсы пересчитывать в то, в чем смещение задается на графике.

 

Предложение

В 08.08.2025 в 22:27, Старик сказал:

2) InpTextOnChart=false

Скорее всего, в большинстве случаев люди будут визуализировать всю информацию моника за весь период.

Это будут ТФ от часа и, даже при малом количестве ордеров, инфа по отдельным ордерам будет читаться крайне хреново - если ТФ больше минуты, текст накладывается на свечи.

Инфу по отдельным ордерам имеет смысл выводить только если человеку зачем-то она нужна - если вообще будет нужна.

Вот суммы деньги/пипсы/лоты критичны - это понимание эффективности торгов.  А по ордерам только лишь если надо.

Поэтому дефолтно предлагаю =false.

Это не обязательно, конечно - но вывод тьмы плохо читаемого текста на график вроде лучше делать лишь по прямому приказу пользователя.

А по дефолту вроде лучше выводить только разметку ордеров и суммарный итог выбранного режима addInfoType.

Изменено 15 августа, 2025 пользователем Старик

#20
В 14.08.2025 в 23:10, ademen сказал:

3.01

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

Спойлер

image.thumb.png.db44df7447492d5e512b61eed5a137ef.png

 

image.thumb.png.659fbe70a4f19d6dc6739b44c70c0865.png

 

image.thumb.png.1c6710550486298ccdfcb5745fe3da5f.png

 

image.thumb.png.17d5ac1d9676843ab9787cddf9a52102.png

В итоговой строке вверху и внизу верно выводится единица измерения money/pips/lots.

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

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

MyFxBookStatementViewer test 1.set2 скач. statement 20250820 No tickets.csv3 скач.

Изменено 21 августа, 2025 пользователем Старик

#21

Тест корректности визуализации №2 - с включенной визуализацией прибыли/пипсов/лотов каждого ордера InpTextOnChart=true

Спойлер

image.thumb.png.d3c41bf9cdb0f1b1fe0acef02cec8174.png

 

image.thumb.png.0ca8babfb6a2e819eb902860b74f011c.png

 

image.thumb.png.d4ff00047ba23431c6771e11bc748a30.png

 

Выводы по работе параметра addInfoType и визуализации результатов его работы:

1) выборка и визуализация прибыли/пипсов/лотов отдельных ордеров работает корректно

2) в итоговых строках единица измерения (money/pips/lots) выводится корректно согласно заданного режима параметра addInfoType.

3) не корректно, по неизвестной причине, выводится в итоговых суммы/числа пипсов или лотов - всегда выводится сумма прибыли (money).

 

MyFxBookStatementViewer test 2.set1 скач.

Изменено 22 августа, 2025 пользователем Старик

#22

Тест корректности выборки по магику и датам №3.

 

Тесты с магиками -1, 0 и 2220 корректны - прибыль по магикам -1 и 2220 (магик сета пары) совпали.

 

Тесты выборки по датам (месяц 16.07-16.08) с меняющимися магиками разницу в результатах не показал.

То есть потери или иной обработки ордеров при комбинировании (одновременной работе) фильтров магика и дат не выявлено.

 

-----

 

Наиболее сложная проверка полноты и корректности учета и визуализации ордеров при задании диапазона дат внутри истории торгов.

Проверка учета и визуализации ордеров за месяц 16.07-16.08.2025 не позволила получить 100% совпадение сумм прибыли GBPUSD за период.

Результат работы скрипта MyFxBookStatementViewer, по сумме факторов, при задании дат выглядит условно правдоподобным.

Но замер прибыли GBPUSD за период 16.07-16.08.2025 четырьмя разными способами дал 4 достаточно разнящихся числа.

 

MyFxBook 841.53

Спойлер

image.thumb.png.d22697d1aaf7c272973cf20c3ae4789e.png

 

Исходный мт4 терминал, стэйтмент истории счета, обработанный Анализатором статистики сеток - 791

Спойлер

image.png.e2e58f30fac6482e2e90283cb651f419.png

 

Скрипт history визуализации ордеров из истории счета  744.90

Спойлер

image.png.452bed3cc95e83153421447085e7270d.png

 

MyFxBookStatementViewer  939,96

Спойлер

image.thumb.png.630c6852709f51f3da21df47b89607fb.png

 

Как следует из проведенных тестов, выдача скрипта MyFxBookStatementViewer в данном примере существенно отличается от всех других инструментов оценки прибыли GBPUSD - включая MyFxBook, историю которого скрипт визуализирует.

Ну и вряд ли совсем нормально, что выдача первоисточника MyFxBook настолько не совпадает с выдачей визуализирующего историю MyFxBook автономного скрипта MyFxBookStatementViewer.

 

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

Из-за этой особенности реализации скрипт учитывает и визуализирует достаточно большую сетку, закрывшуюся по ТР 18 августа вне/за конца интервала 16 августа 2025.

И прибыль именно этой сетки, закрывшейся после заданного интервала, дает расхождение около 100 между мониторингом и скриптом.

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

 

---

 

Эта странная особенность скрипта де-факто всегда некорректна и может искажать сумму прибыли/пипсов за период как существенно в плюс, так и существенно в минус. 

Вплоть до большого минуса за выбранный период в выдаче скрипта при вполне прибыльных торгах в истории MyFxBook.

Это обусловлено тем, что в выбранном периоде нам доступна и учитывается информация только об открытых в периоде ордерах.

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

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

Наиболее понятно это на примерах.

 

Пример 1.  Торги как на приведенном скрине MyFxBookStatementViewer - сетка полностью открылась (все ордера) в пределах выбранного периода, но закрылась по ТР после выбранного периода.

В данном случае закрывшаяся по ТР (после истечения выбранного периода) сетка скриптом учтена и отрисована в полном объеме.

Есть разница между выдачей скрипта и MyFxBook, но отличие должно быть равным прибыли от сетки, закрытой 18 августа.

 

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

Потому что скрипт в статистику торгов за выбранный период включит финансовый/технический результат торгов после истечения выбранного периода.

 

Пример 2.  В выбранном периоде открылась лишь часть (например, половина) ордеров сетки, достроившейся и закрывшейся после истечения выбранного периода.

Скрипт очевидно отрисует и посчитает лишь те (отрицательные) ордера сетки, которые откроются в выбранном периоде.

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

 

---

 

Хоть учет/отрисовка всех открытых в периоде ордеров и особенность реализации скрипта, пожалуй нельзя оставить скрипт как есть - надо править.

Ну это реально ненормально, что, при задании в настройках скрипта интервала, выдача скрипта почти гарантированно перестает совпадать с оригиналом MyFxBook.

Тем более что расхождение между сайтом мониторинга и скриптом не фиксированное - на разных интервалах разница результатов (мониторинга и скрипта) в этих торгах может быть и в 10-15 раз больше, чем в проведенных мной тестах.

И, по сумме факторов, всё же надо доработать скрипт, чтобы разницы с MyFxBook не было вообще или была управляемой.

 

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

Вроде достаточно в цикл считывания строк/записей ордеров из файла стэйтмента добавить проверку Close Date > InpEndDate.

И, если условие выполняется, пропускать обработку данного ордера - не учитывать в статистике и не визуализировать его.

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

 

---

 

Но теоретически это можно реализовать более гибко и к проверке Close Date > InpEndDate добавить on/off включатель этого контроля.

Например добавить параметр ShowAllOrdersInPeriod=true/false  (дефолтно =false).

Если =true, то учитывать и отрисовывать все ордера, открытые в заданном в настройках периоде.

Если =false, то не отрисовывать и не учитывать в статистике ордера, закрывающиеся после периода, заданного в настройках.

 

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

Именно поэтому я и предложил добавить параметр ShowAllOrdersInPeriod=true/false  (дефолтно =false).

Но этот дополнительный параметр на ваше усмотрение, коллега @ademen.

Как по мне, параметр небесполезный - но нужен или нет, решайте вы.

 

Фильтр Close Date > InpEndDate точно нужен для синхронизации выдачи скрипта MyFxBookStatementViewer с первоисточником MyFxBook.

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

А вот еще один внешний параметр скрипта ShowAllOrdersInPeriod=true/false допустим и теоретически полезен, но нет гарантии, что будет использоваться пользователями.

Такая опция скрипта допустимая и теоретически полезная, но может оказаться не востребованной пользователями.

Изменено 23 августа, 2025 пользователем Старик

#23

@Старик, все ли верно?

3.02

-Исправил надпись

-Добавил параметр InpShowAllOrdersInPeriod

 

MyFxBookStatementViewer.mq46 скач.

#24
16 часов назад, ademen сказал:

-Добавил параметр InpShowAllOrdersInPeriod

Вы реализовали максимальный вариант - спасибо!

Один из тестов показал точное совпадение выдачи скрипта с MyFxBook - то есть вы поняли идею доработки правильно и всё получилось!

 

Но есть пожелание сделать использование параметра InpShowAllOrdersInPeriod "зеркальным" - применять его настройки наоборот.

Имхо, это необходимо для точного понимания пользователями назначения параметра и его верного ими применения.

 

Пользователь, глядя на параметр с названием InpShowAllOrdersInPeriod=ДА/НЕТ, будет предполагать, что:

=true  (=1) скрипт отрисует и учтет все ордера из истории (даже если они закроются после заданного в настройках периода)

=false (=0) скрипт НЕ отрисует и не учтет ордера, которые закрываются позднее заданного периода (как в MyFxBook).

То есть фильтр (InpShowAllOrdersInPeriod=false И Close Date > InpEndDate) - такие ордера скрипт пропускает, не учитывает и не рисует.

 

Сейчас в скрипте параметр InpShowAllOrdersInPeriod работает "зеркально" - если =1, то скрипт НЕ показывает ордера, что противоречит смыслу названия параметра.

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

Поэтому есть просьба внести микроправку в работу параметра InpShowAllOrdersInPeriod - чтобы он работал согласно его названия.

 

 

В целом же полученное в тестах совпадение до цента выдачи скрипта и MyFxBook за указанный период - это отличная новость!

Это значит, что вертушка, дешифрация строк ордеров и несколько фильтров работают корректно - что далось не так-то и легко!

Есть ещё одна сырая идея по визуализации, которую обсудим сегодня-завтра - и, вероятно, работа над скриптом будет завершена.

#25
8 часов назад, Старик сказал:

Пользователь, глядя на параметр с названием InpShowAllOrdersInPeriod=ДА/НЕТ, будет предполагать, что:

=true  (=1) скрипт отрисует и учтет все ордера из истории (даже если они закроются после заданного в настройках периода)

=false (=0) скрипт НЕ отрисует и не учтет ордера, которые закрываются позднее заданного периода (как в MyFxBook).

То есть фильтр (InpShowAllOrdersInPeriod=false И Close Date > InpEndDate) - такие ордера скрипт пропускает, не учитывает и не рисует.

3.03
-Изменена логика для InpShowAllOrdersInPeriod

 

MyFxBookStatementViewer.ex44 скач.

Страница 1 из 3

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025