Ошибки, баги, вопросы - страница 579

 

olyakish:

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

вообще то это одна сделка состоящая из sell in  (открытие позиции на продажу) и buy out (закрытие позиции на продажу )

Как раз это ДВЕ сделки In - Открывает позицию, а Out - закрывает (насколько помню есть еще InOut - встречная сделка к имеющейся позе).

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

 
papaklass:

Не понятно следующее:

Имеем два моновалютных эксперта, каждый из которых работает в своем потоке и со своим одним инструментом, со своим последовательным набором тиков. Вот эти два последовательных набора тиков независимы друг от друга. Например, приходят тики по GBPUSD. Разве они влияют на EURUSD? У EURUSD есть свой независимый поток котиров. Я прав, или в чем то ошибаюсь? Если я прав, то почему эти два независимым друг от друга потока нельзя раскидать на разные ядра? Вот что мне не понятно.

 

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

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

 
Interesting:

Как раз это ДВЕ сделки In - Открывает позицию, а Out - закрывает (насколько помню есть еще InOut - встречная сделка к имеющейся позе).

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



Хорошо Тут согласен не совсем верно выразился.

В моем случае один нормальный (минимальный) цикл, открыл позицию закрыл позицию.

состав заявка - ордер - сделка-позиция на продажу, далее заявка -ордер -сделка на покупку (закрытие продажи)

Вопрос по существу - прошу комментарий к графику эквити/баланса в тестере.

 
papaklass:

Простите мне мою тупость. Выделенный тест я понимаю, когда он касается (текст) одного потока (фин. инструмента). Т.е. имеем один моновалютный эксперт, который работает с одним инструментом. В нем последовательно обрабатываются тики и нет смысла обрабатывать их параллельно. Понятно.

Не понятно следующее:

Имеем два моновалютных эксперта, каждый из которых работает в своем потоке и со своим одним инструментом, со своим последовательным набором тиков. Вот эти два последовательных набора тиков независимы друг от друга. Например, приходят тики по GBPUSD. Разве они влияют на EURUSD? У EURUSD есть свой независимый поток котиров. Я прав, или в чем то ошибаюсь? Если я прав, то почему эти два независимым друг от друга потока нельзя раскидать на разные ядра? Вот что мне не понятно.

stringo:

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

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

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

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

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

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

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

а) параметрические обработчики для определенных событий (возможно добавление новых или изменение существующих);

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

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

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

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

PS

Вывод один - Сначала OnTick с параметрами (достаточно будет имя символа), а потом уже продолжение разговора о том зачем это все нужно.

Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
Предопределенные переменные / _Symbol - Документация по MQL5
 
papaklass:
Т.е. в рамках одного тестера, если даже эксперт мультивалютный, то тики последовательны (вне зависимости от инструмента), один поток, одно ядро. Так?

1. Тики в имеющейся архитектуре обрабатываются только по основному инструменту (инструменту графика). Следовательно схема должна быть последовательной.

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

2. Одиночное тестирование (да и любая работа эксперта)  выполняется последовательно, в один поток. Т.е. только одна команда (строка кода) в конкретный момент времени.

Когда же мы проводим оптимизацию эксперта разным агенам (читай ядрам) достается своя копия экспета, со своими параметрами и вводными.

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

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

Да. Всё как в жизни. В реальной жизни все тики последовательны. За один квант времени в принципе не может прийти больше одного тика.

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

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

Мультивалютный эксперт как в тестере, так и в терминале всегда занимает один поток, но это не значит, что другие потоки в этот момент простаивают 

 

Добрый день! Волнует ордерная система MT5. В целом я не против нетинга, но считаю что в пятерки он сырой. Последние дни пытаюсь придумать как красиво перворачиваться в MT5, причем так чтобы быть в рынке если разворота не произошло, но либо я туплю либо задача невыполнима. Заметил что MQ не желает по этому поводу разговаривать. Стоит ли описывать все в деталях? И еще как вы ответите на такой вопрос:

Текущая ордерная система:

   а. Хорошая и мы ее менять не будем

   б. Нуждается в дороботки

ИМХО: в данный момент можно организовать торговлю только так что ПК всегда контролировал процес. Но это нагрузка и нервы. Зачем мне эти переживания - есть связь или нет. Я собираюсь вкладывать в рынок значимые для меня деньги, поэтому для меня это важно. 
 

 
Vict:

Добрый день! Волнует ордерная система MT5. В целом я не против нетинга, но считаю что в пятерки он сырой. Последние дни пытаюсь придумать как красиво перворачиваться в MT5, причем так чтобы быть в рынке если разворота не произошло, но либо я туплю либо задача невыполнима.


Отпишите мне в личку плиз, обсудим.
 
Vict:

...Последние дни пытаюсь придумать как красиво перворачиваться в MT5, причем так чтобы быть в рынке если разворота не произошло, но либо я туплю либо задача невыполнима.

Что означает "быть в рынке, если разворота не произошло"? Как Вы переворачиваете позицию, что с этим возникают проблемы?
 

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

Пояснение к рисунку:

* Пришел старший сигнал вверх, открыаем позицию бай.

* Приходит младший сигнал вниз, дерхать позицию бай сейчас нет смысла. Мои действия в четверки - залочить прибыль stopLoss на уровни 1, takeProfit за старшим отбоем. В итоге если рынок уйдет вниз я возьму часть  старшего профита, если вернется вверх буду ждать старшего целевого уровня для тройки.

*А как поступить в MT5? Например я первернул позицию в сел. Как востоновить прежний бай если рынок вернется? Доверить это советнику (не надежно, хотелось бы такие команды разместить на сервере)? Поставить  отложку BuyStop на уровни 1? но тогда что делать если цена уйдет ниже старшего отбоя, как ее удалить?  

Файлы:
x71ec4t1j4.png  15 kb
Причина обращения: