Библиотеки: MT4Orders - страница 27

 
Ilya Malev:

Зачем читать ветку, я вроде и так уже во всем разобрался. 

У меня всё работает отменно в нескольких советниках, проблем с библиотекой нет

 
fxsaber:

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

1) К Вашему сведению, частичные позиции в МТ4 тоже просто так не порождаются (во всяком случае, у нормальных брокеров), а исключительно с комментами "from#" и "to#". Ещё аргументы есть?

2) На самом деле "боевого применения" на данный конкретный момент не выдержала именно Ваша библиотека, поскольку как я уже сказал библиотеки пишутся не для идеального мира, а для нашего грешного, несовершенного и убогого. Хотя я Вашу позицию прекрасно понимаю и сам бы, скорее всего, такой код никогда не стал бы писать. А если бы я его написал, то не стал бы спорить с Вами на эту тему, а тихо переделал. Но проблема в том, что этот код писал не я :) Ладно, спасибо за диалог, пойду думать

 
Ilya Malev:

1) К Вашему сведению, частичные позиции в МТ4 тоже просто так не порождаются (во всяком случае, у нормальных брокеров), а исключительно с комментами "from#" и "to#". Ещё аргументы есть?

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

2) На самом деле "боевого применения" на данный конкретный момент не выдержала именно Ваша библиотека, поскольку как я уже сказал библиотеки пишутся не для идеального мира, а для нашего грешного, несовершенного и убогого. Хотя я Вашу позицию прекрасно понимаю и сам бы, скорее всего, такой код никогда не стал бы писать. А если бы я его написал, то не стал бы спорить с Вами на эту тему, а тихо переделал. Но проблема в том, что этот код писал не я :) Ладно, спасибо за диалог, пойду думать

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

Факт, кривой MT4-советник библиотека может не переварить. Правильно написанный MT4-советник - без проблем.


ЗЫ Надо просто научиться не пихать SELECT_BY_TICKET для "облегчения".

 

Я сталкивался с проблемой смены тикета без использования СелектБайТикет. Обошел вот так:

                #ifdef __MQL5__
                        long ticket = OrderTicketOpen();
                        ticket = HistoryDealGetInteger( ticket, DEAL_ORDER );
                #endif 
 
Andrey Khatimlianskii:

Я сталкивался с проблемой смены тикета без использования СелектБайТикет. Обошел вот так:

Просьба пояснить.

 
fxsaber:

Просьба пояснить.

Мы вроде бы обсуждали это тогда, в процессе решения.

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

 
Andrey Khatimlianskii:

Мы вроде бы обсуждали это тогда, в процессе решения.

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

Понял. Нужно было понять, как дербанилась позиция.

 

OrderSend вместо TRADE_RETCODE_INVALID_PRICE возвращает ERR_TRADE_SEND_FAILED:

2018.12.14 01:00:18.479 2016.02.11 15:40:40   failed buy stop 0.08 EURUSD.m at 1.13196 [Invalid price]
2018.12.14 01:00:18.479 2016.02.11 15:40:40   Alert: #4756, Не удалось отправить торговый запрос: CommonExpert.mqh|2438 | OrderSend buy stop 0.08 @1.13196

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

 
Edgar:

OrderSend вместо TRADE_RETCODE_INVALID_PRICE возвращает ERR_TRADE_SEND_FAILED:

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

#include <MT4Orders.mqh>

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)

void OnStart()
{
  if (OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid - 100 * _Point, 0, 0, 0) < 0)
  {
    Print(GetLastError());                     // ERR_TRADE_SEND_FAILED
    Print(MT4ORDERS::LastTradeResult.retcode); // TRADE_RETCODE_INVALID_PRICE
  }
}


Полный лог выполнения скрипта

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.13473
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_SELL_LIMIT (3)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 10015
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Invalid price 0.082 ms
Result.request_id = 0
Result.retcode_external = 0

4756
10015
 
Спасибо
Причина обращения: