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

 
sergey1294:
В альпари исполнение сделок маркет, при исполнении маркет стопы сразу нельзя ставить, сначала нужно открыть позицию, а потом ее модифицировать
Уточните пожалуйста: в Альпари нельзя одной командой OrderSend выставить ордер со стопами? Или речь о том, что перед устанавливкой стопов для существующего ордера, нужно вызвать PositionSelect ?
 
Snaf:

Метатестер пилит диск HDD

Версия 527.

Если посмотреть в процесс монитор идет непрерывно такая ерунда.

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

В приведенном скриншоте нет информации об именах файлов.

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

 
idispatch:

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

Это я торможу (дайте плз. пример кода) или так задумано?

Можно и сразу со стопом и профитом.

У Вас в запрсе

reqest.sl=SL;

reqest.tp=TP;

Это ошибка. Уровни SL и TP должны устанавливаться на расстоянии от рыночных цен, поэтому эти строки должны выглядеть примерно так:

для позиции на покупку: 

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_BID) - SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT); 

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

для позиции на продажу наоборот:

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT); 

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_BID) - TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

Надеюсь, что нигде не ошибся...

 
idispatch:
Уточните пожалуйста: в Альпари нельзя одной командой OrderSend выставить ордер со стопами? Или речь о том, что перед устанавливкой стопов для существующего ордера, нужно вызвать PositionSelect ?

Можно, почему нет?

В каком режиме выставляете ордер?

 
ShurikAn:

Можно и сразу со стопом и профитом.

У Вас в запрсе

reqest.sl=SL;

reqest.tp=TP;

Это ошибка. Уровни SL и TP должны устанавливаться на расстоянии от рыночных цен, поэтому эти строки должны выглядеть примерно так:

Разумеется SL и TP у меня определяются как у вас. Более того, я же писал выше, что если просто добавить 

m_request.action = TRADE_ACTION_SLTP;
OrderSend(m_request, m_result);

то стопы успешно выставляются по заданным SL и TP, чего не происходило бы в случае их некорректности.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Renat:

Можно, почему нет?

В каком режиме выставляете ордер?

MqlTradeRequest m_request;
MqlTradeResult m_result;

m_request.action = TRADE_ACTION_DEAL;
m_request.symbol = Symbol();
m_request.type = ORDER_TYPE_BUY;

m_request.price = Price;  // заранее вычислено  и верно :)

m_request.sl = SL; // заранее вычислено  и верно :)  
m_request.tp = TP; // заранее вычислено  и верно :)

m_request.volume = Vol;

m_request.type_filling = ORDER_FILLING_FOK;
m_request.deviation = 10;
m_request.type_time = 0;
m_request.expiration = 0;
m_request.magic = 0;
m_request.comment = "";

OrderSend(m_request, m_result);
 
idispatch:
Уточните пожалуйста: в Альпари нельзя одной командой OrderSend выставить ордер со стопами? Или речь о том, что перед устанавливкой стопов для существующего ордера, нужно вызвать PositionSelect ?

Совершенно верно. со стопами можно только в режиме инстант

Типы исполнения

В клиентском терминале реализованы четыре режима исполнения ордеров:

  • Немедленное исполнение (Instant Execution)
    В этом режиме исполнение рыночного ордера осуществляется по цене, предложенной брокеру. При отправке запроса на исполнение, терминал автоматически подставляет в ордер текущие цены. В случае, если брокер принимает цены, ордер будет исполнен. Если брокер не принимает запрошенную цену, то происходит так называемое "Перекотирование" (Requote) — брокер возвращает цены, по которым может быть исполнен данный ордер.
  • Исполнение по запросу (Request Execution)
    В этом режиме исполнение рыночного ордера осуществляется по цене, предварительно полученной от брокера. Перед отправкой рыночного ордера у брокера запрашиваются цены его исполнения. После их получения выполнение ордера по данной цене можно либо подтвердить, либо отклонить.
  • Исполнение по рынку (Market Execution)
    В этом режиме исполнения рыночного ордера решение о цене исполнения принимает брокер без дополнительного согласования с трейдером. Отправка рыночного ордера в таком режиме подразумевает досрочное согласие с ценой, по которой он будет выполнен.

По нажатии кнопки "Sell by Market" или "Buy by Market" будет создан приказ брокеру на исполнение сделки по продаже или покупке, соответственно, по цене, определенной брокером.

  • В режиме исполнения "по рынку" уровни "Стоп Лосс" и "Тейк Профит" могут быть выставлены только для уже открытой позиции путем ее изменения.
  • Комментарий к ордеру может быть изменен брокером или сервером. Например, в случае закрытия по Стоп Лосс или Тейк Профит, в нем будет указана соответствующая информация.
  • Если поле "Исполнение" неактивно, значит возможность его изменения заблокирована на сервере.
  • Двойное нажатие левой кнопкой мыши на окне открытия позиции открывает/скрывает тиковый
  • Биржевое исполнение (Exchange Execution)
    В данном режиме торговые операции, совершаемые в клиентском терминале, выводятся во внешнюю торговую систему (биржу). Торговые операции совершаются по ценам текущих рыночных предложений.

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


А вообще в справке терминала все об этом написано. Только вот ни кто ее не читает.

Что бы узнать какой тип исполнения надо запросить свойство с помощью функции SymbolInfoInteger() с идентификатором SYMBOL_TRADE_EXEMODE

SYMBOL_TRADE_EXEMODE

Режим заключения сделок

ENUM_SYMBOL_TRADE_EXECUTION




ENUM_SYMBOL_TRADE_EXECUTION

Идентификатор

Описание

SYMBOL_TRADE_EXECUTION_REQUEST

Торговля по запросу

SYMBOL_TRADE_EXECUTION_INSTANT

Торговля по потоковым ценам

SYMBOL_TRADE_EXECUTION_MARKET

Исполнение ордеров по рынку

SYMBOL_TRADE_EXECUTION_EXCHANGE

Биржевое исполнение


 

Большое спасибо, теперь понятно.

А справку я читал, то что не нашел - моя оплошность + недостаточная проработанность перекрестных сслылок или типа того в справке:)  

 

При тестировании советника Хирурга https://www.mql5.com/ru/code/611

с измененным

[quote]

Чтобы запустить тестирование, в строке 84 заменить:
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT); 
на
double Limit= 5; 

[/quote] 

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

Файлы:
Error01.JPG  382 kb
Error02.JPG  346 kb
 

На демо счете вот такая бяка:

 

Все время сбрасывается в начало.

И на XAUUSD нажимаешь  F9 и вот

 

 

 хотя в "обзоре рынка" нельзя двойным щелчком вызвать окно ордера.

 

P.S. Я знаю, что нельзя торговать XAUUSD.)  

Причина обращения: