Обсуждение статьи "Virtual Order Manager для управления ордерами в позициях терминала MetaTrader 5" - страница 2

 
phampton:

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

Я должен был уточнить в статье, что если советник VOM введен на определенном символе, то все остальные советники, торгующие на этом символе, также должны быть VOM-совместимыми. Это связано с кодом Disaster Protection SL в VOM.

Пол

Спасибо, Пол.

Можно ли использовать VirtualOrderManager.mqh в тестере стратегий MT-5? Если да, то как нужно настроить советник в VOM?

 
wackena:

Спасибо, Пол.

Можно ли использовать VirtualOrderManager.mqh в тестере стратегий MT-5? Если да, то как нужно настроить советника в VOM?

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

Работал с VOM над советником типа Мартингейла. При нескольких открытых сделках на продажу, одного типа и валютной пары, функция CloseAllOrders закрывает только последнюю сделку, оставляя предыдущие сделки открытыми.

VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_SELL);

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

VOM.OrdersTotal() достаточно хорошо отслеживает количество открытых ордеров vo.

 
wackena:

Работал с VOM над советником типа Мартингейла. При наличии нескольких открытых сделок на продажу, одного типа и валютной пары, функция CloseAllOrders закрывает только последнюю сделку, оставляя предыдущие сделки открытыми.

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

VOM.OrdersTotal() достаточно хорошо отслеживает количество открытых ордеров vo.

Привет, Вакена,

Я только что добавил кнопку Close all в VirtualOrderManagerTester, см. вложение. Она работает нормально, хотя я признаю, что это неуклюжий способ закрыть все виртуальные ордера - лучшим способом было бы суммировать их и выдать один серверный ордер, и я рассмотрю возможность сделать это в следующем релизе.

Не стесняйтесь прислать мне копию журнала LOG_VERBOSE EA, чтобы я мог лучше понять, что происходит.

Пол

Файлы:
 
phampton:

Привет, Вакена,

Я только что добавил кнопку Close all в VirtualOrderManagerTester, см. вложение. Она работает нормально, хотя я признаю, что это неуклюжий способ закрыть все виртуальные ордера - лучшим способом было бы суммировать их и выпустить один серверный ордер, и я рассмотрю возможность сделать это в следующем выпуске.

Не стесняйтесь прислать мне копию журнала LOG_VERBOSE EA, чтобы я мог лучше понять, что происходит.

Пол

Прилагаю файл журнала.
Файлы:
 
wackena:
Прилагается файл журнала.

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

 

Обновление приложений к статье: 

Документация,  руководство пользователя и комментарии к исходным кодам библиотеки Virtual Order Manager теперь доступны на русском языке.

 

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

Более того, когда в VOM я пытаюсь закрыть эту сделку, VOM открывает сделки в противоположном направлении.

Например:

- Я открываю 5 ордеров на покупку с помощью VirtualOrderManagerTester и все нормально.

- Я закрываю вручную все 5 ордеров: в MT5 я не вижу ордеров, а на графике (VOM) 5 открытых ордеров

- Я закрываю 5 ордеров из VirtualOrderManagerTester: Я вижу 5 ордеров на продажу в MT5 и ни одного в VOM(VirtualOrderManagerTester)

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

Есть ли какое-нибудь решение для этой проблемы?

Файлы:
vom_test.jpg  188 kb
 
mbt22:

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

Более того, когда в VOM я пытаюсь закрыть эту сделку, VOM открывает сделки в противоположном направлении.

Например:

- Я открываю 5 ордеров на покупку с помощью VirtualOrderManagerTester и все нормально

- Я закрываю вручную все 5 ордеров: в MT5 я не вижу ордеров, а на графике (VOM) 5 открытых ордеров

- Закрываю 5 ордеров из VirtualOrderManagerTester: Я вижу 5 ордеров на продажу в MT5 и ни одного в VOM(VirtualOrderManagerTester)

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

Есть ли какое-нибудь решение для этой проблемы?

Здравствуйте mbt22,

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

Однако имейте в виду, что это ограничение общительности советников VOM, скорее всего, будет наблюдаться во многих советниках MQL5. Другими словами, эти советники также могут потерпеть неудачу в случае ручных сделок или других советников любого типа, работающих на том же символе.

Предположим, что внешние по отношению к этому советнику сделки (ручные и/или сгенерированные советником) составляют 1,0 короткий лот, и советник выставляет ордер на покупку 0,1 лота со стопом в 50 пунктов.Я не помню, как именно сработает функция OrderSend в советнике (выполнится ли она или вернет ошибку стопа), но точно можно сказать, что стоп не может быть установлен на 50 пунктов ниже результирующего размера позиции в 0,9 лота.

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

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

Пол

 
phampton:

Привет, mbt22,

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

Однако имейте в виду, что это ограничение общительности советников VOM, скорее всего, будет наблюдаться во многих советниках MQL5. Другими словами, эти советники также могут потерпеть неудачу в случае ручных сделок или других советников любого типа, работающих на том же инструменте.

Предположим, что внешние по отношению к этому советнику сделки (ручные и/или сгенерированные советником) составляют 1,0 короткий лот, и советник выставляет ордер на покупку 0,1 лота со стопом в 50 пунктов.Я не помню точно, как сработает функция OrderSend в советнике (выполнится ли она или вернет ошибку стопа), но точно можно сказать, что стоп не может быть применен на 50 пунктов ниже результирующего размера позиции в 0,9 лота.

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

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

Пол


Хорошо.

Спасибо за быстрый ответ.