Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1145

 
Vladimir Karputov:

А Вы распечатайте: цену Bid и Ask, спред, уровни SYMBOL_TRADE_FREEZE_LEVEL и SYMBOL_TRADE_STOPS_LEVEL ...

GL 0 11:35:51.008 Core 01 2016.04.29 23:00:00 цена = 0.75714 с= AUDUSD до ордера= 0.003290000000000015 freeze = 20 ask= 0.7604300000000001 bid = 0.76031 spread = 12 stlev = 30 p= 9.999999999999996e-06dig= 5

2016.04.29 23:00:00 failed cancel order #25 buy limit 0.50 AUDUSD at 0.757 sl: 0.746 tp: 0.776 [Invalid stops]

HQ 0 11:35:51.008 Core 01 2016.04.29 23:00:00 цена = 0.75714 с= AUDUSD до ордера= 0.00329999999999997 freeze = 20 ask= 0.76044 bid = 0.76032 spread = 12 stlev = 30 p= 9.999999999999996e-06dig= 5

2016.04.29 23:00:00 failed cancel order #25 buy limit 0.50 AUDUSD at 0.757 sl: 0.746 tp: 0.776 [Invalid stops]

Функция SymbolInfoDouble(symbol, SYMBOL_POINT) иногда возвращает 9.9...
 
Mikhail Sergeev:

GL 0 11:35:51.008 Core 01 2016.04.29 23:00:00 цена = 0.75714 с= AUDUSD до ордера= 0.003290000000000015 freeze = 20 ask= 0.7604300000000001 bid = 0.76031 spread = 12 stlev = 30 p= 9.999999999999996e-06dig= 5

2016.04.29 23:00:00 failed cancel order #25 buy limit 0.50 AUDUSD at 0.757 sl: 0.746 tp: 0.776 [Invalid stops]

HQ 0 11:35:51.008 Core 01 2016.04.29 23:00:00 цена = 0.75714 с= AUDUSD до ордера= 0.00329999999999997 freeze = 20 ask= 0.76044 bid = 0.76032 spread = 12 stlev = 30 p= 9.999999999999996e-06dig= 5

2016.04.29 23:00:00 failed cancel order #25 buy limit 0.50 AUDUSD at 0.757 sl: 0.746 tp: 0.776 [Invalid stops]

p, b, c ... Вы бы ещё зашифровали через алгоритм.

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.11.13 08:28

А Вы распечатайте: цену Bid и Ask, спред, уровни SYMBOL_TRADE_FREEZE_LEVEL и SYMBOL_TRADE_STOPS_LEVEL ...


 
Vladimir Karputov:

p, b, c ... Вы бы ещё зашифровали через алгоритм.

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


Подскажите, как вывести на английском?

 
Mikhail Sergeev:

Подскажите, как вывести на английском?

Вот так:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.11.13 08:28

А Вы распечатайте: цену Bid и Ask, спред, уровни SYMBOL_TRADE_FREEZE_LEVEL и SYMBOL_TRADE_STOPS_LEVEL ...


Ещё важно то, как Вы обновляете цены (и обновляете ли вообще?). Спред - как Вы его получаете? 

 
Vladimir Karputov:

Вот так:


Ещё важно то, как Вы обновляете цены (и обновляете ли вообще?). Спред - как Вы его получаете? 

    double point, price, ask, bid;
    ulong digits;

    if(!SymbolInfoDouble(symbol, SYMBOL_ASK, ask)) return(true);
    if(!SymbolInfoDouble(symbol, SYMBOL_ASK, bid)) return(true);
    if(!SymbolInfoInteger(symbol, SYMBOL_DIGITS, digits)) return(true);
    if(!SymbolInfoDouble(symbol, SYMBOL_POINT, point)) return(true);
SymbolInfoInteger(symbol, SYMBOL_SPREAD);
 
Mikhail Sergeev:

Так, на будущее:

1.SymbolInfoDouble

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

2. Спред лучше брать как разницу Ask и Bid 

3. Уровень заморозки: ищите из трёх значений (SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL и вычисленный спред) максимальное и умножаете на три и будет счастье.

Пункт 3 был на практике выведен при работе с КодоБазой (а валидатор и в КодоБазе и в Маркете одинаковый).
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 
Vladimir Karputov:

Так, на будущее:

1.SymbolInfoDouble

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

2. Спред лучше брать как разницу Ask и Bid 

3. Уровень заморозки: ищите из трёх значений (SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL и вычисленный спред) максимальное и умножаете на три и будет счастье.

Пункт 3 был на практике выведен при работе с КодоБазой (а валидатор и в КодоБазе и в Маркете одинаковый).

Большое спасибо! Сейчас внесу изменения и попробую.

 
Mikhail Sergeev:

Большое спасибо! Сейчас внесу изменения и попробую.

Да, будет интересен результат.

 
Vladimir Karputov:

Да, будет интересен результат.

Проблему решил! Всё очень просто оказалось, для удаления ордера надо обязательно заполнять: request.symbol

Я не нашёл никакой структурированной информации, по тому какие данные надо обязательно передавать в request в зависимости от типа торговой операции. И использовал пример   https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions 

Там этого нет.


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

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Торговля осуществляется посредством отправки с помощью функции OrderSend() приказов на открытие позиций, а также приказов на установку, модификацию и удаление отложенных ордеров. Каждый торговый приказ содержит указание на тип запрашиваемой торговой операции. Торговые операции описаны в перечислении ENUM_TRADE_REQUEST_ACTIONS...
 
Mikhail Sergeev:

Проблему решил! Всё очень просто оказалось, для удаления ордера надо обязательно заполнять: request.symbol

Я не нашёл никакой структурированной информации, по тому какие данные надо обязательно передавать в request в зависимости от типа торговой операции. И использовал пример   https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions 

Там этого нет.


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

Зачем такие сложности? Используйте торговый класс CTrade.