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

 
Ошибка при компиляции
template<typename T>
class A { public:
    A( const T * ) {} //Error: 'T' - unexpected token
};
class B {};
void OnStart()
{
    A<const B> a( new B );
}
 

Здравствуйте у меня на демо-счете Открытия

происходит следующее: при удачной модификации и удаления ордера

типа ORDER_FILLING_RETURN (обычный лимитный ордер)

переменная volume из структуры MqlTradeResult стабильно равняется изначальному размеру ордера (при этом ордер нисколько не исполнен).

Вроде бы она должна выдавать исполненный объём (в моём случае 0 ) или я ошибаюсь?

 
Sergey Kudryavtsev:

Вроде бы она должна выдавать исполненный объём (в моём случае 0 ) или я ошибаюсь?

Так было изначально

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

Библиотеки: MT4Orders

fxsaber, 2017.02.10 12:01

Результат работы скрипта
OrderSend(NULL,OP_BUYLIMIT,1,Ask-100*Point,100,0,0,My Order)
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.06356
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_IOC (1)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 57777
Result.volume = 1.0
Result.price = 1.06356
Result.bid = 0.0
Result.ask = 0.0
Result.comment = My Order
Result.request_id = 592
Result.retcode_external = 0
Теперь легко разобраться, как правильно формировать соответствующие торговые запросы в MT5.
 
fxsaber:
Так было изначально
Спасибо!
 
Поиск "MqlTradeResult" не может выдать ссылку на описание в Справке.
 

Во время выполнения OrderSend невозможно выйти из дебаг-режима или удалить советник/скрипт.

Бывает, что OrderSend выполняется 180 секунд, с выходом Request timeout. Три минуты приходится ждать, чтобы мочь компилировать в редакторе, если был запущен скрипт в дебаг-режиме. 

 

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

Ошибки, баги, вопросы

fxsaber, 2017.02.16 07:55

2017.02.16 08:53:03.158 Network '2250': disconnected from FXOpen-MT5
2017.02.16 08:53:03.285 MQL5    wrong type, loading of Test failed
2017.02.16 08:53:03.813 Network '5122740': authorized on MetaQuotes-Demo through Access Point EU Amsterdam (ping: 50.93 ms)

Что это?

На единственном чарте ничего не запущено. При любом переключении счетов выскакивает это сообщение.

Удалил все Test.ex*-файлы. Сообщение продолжает появляться.
 

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

Бешенный кеш агентов тестирования

Renat Fatkhullin, 2017.02.21 04:04

Попробуйте новый пятничный билд МТ5 1545 - кое-что улучшили.

Еще обратите внимание, что у нас на MetaQuotes-Demo МТ5 больше 230 000 постоянно активных счетов и там реально трейдерская вакханалия.

Думаю, на бирже вакханалия еще мощнее, но справляются.

1545 - вроде, стало лучше. Но все проскакивают моменты

Запрос/ответ

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = EURCAD
Request.volume = 0.01
Request.price = 1.39016
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_SELL (1)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 134821044
Request.position_by = 0
Result.retcode = 10009
Result.deal = 118450870
Result.order = 134821045
Result.volume = 0.01
Result.price = 1.39016
Result.bid = 1.39016
Result.ask = 1.39043
Result.comment = Request executed 57.225 + 18.108 ms
Result.request_id = 4096
Result.retcode_external = 0

Выделенное - столько времени появлялась запись в истории ордеров и сделок после успешного OrderSend. Очень много! 

Журнал

NO      0       08:51:22.422    Trades  '5245006': instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
MM      0       08:51:22.480    Trades  '5245006': accepted instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
LH      0       08:51:22.480    Trades  '5245006': deal #118450870 sell 0.01 EURCAD at 1.39016 done (based on order #134821045)
EQ      0       08:51:22.480    Trades  '5245006': order #134821045 sell 0.01 / 0.01 EURCAD at 1.39016 done in 57.165 ms

 

И еще случай того же запуска скрипта.

Запрос/ответ

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURCZK
Request.volume = 0.01
Request.price = 27.043
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = Benchmark_Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134821281
Result.volume = 0.01
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 392.585 + 0.299 ms
Result.request_id = 4457
Result.retcode_external = 0

Журнал

HP      0       08:51:43.740    Trades  '5245006': buy limit 0.01 EURCZK at 27.04300
RE      0       08:51:44.133    Trades  '5245006': accepted buy limit 0.01 EURCZK at 27.04300
JS      0       08:51:44.133    Trades  '5245006': order #134821281 buy limit 0.01 / 0.01 EURCZK at market done in 392.533 ms

Пинг ~54 ms.

 

Из окна Алертов невозможно ничего скопировать.

Прошу добавить в окно Алерта возможность выделения нескольких строк, по правой кнопке меню "Копировать" и "Переход в Журнал" - показать в Журнале эксперта соответствующую алерту строку.

 

Добрый день.

Столкнулся с некорректным (на мой взгляд) поведением указателей на объекты. Актуально и в MT5, и в MT4. Просветите, пожалуйста, это баг или всё-таки фича. Вот код:

class CBaseObject { };

class CDescObject:public CBaseObject { };

void OnStart()
  {
      CDescObject *obj1 = new CDescObject(), *obj2;
      CBaseObject *baseObj1 = obj1;
      
      obj2 = baseObj1;//Пока не грохнули объект - no problem
      delete(obj1);

      //Если добавить эти строки, ошибки в последней строке не будет
      //if(CheckPointer(baseObj1)==POINTER_INVALID)
         //baseObj1 = NULL;
      
      obj2 = obj1;//Указатели одного типа - no problem
      obj2 = baseObj1;//здесь ошибка "Invalid pointer access"
  }

Я понимаю, что здешние указатели - не такие, как в C, а с богатым внутренним миром. Но всё-таки было бы логичней, если б присваивание в последней строчке прошло мирно. В моём случае проверка на POINTER_INVALID была после присваивания, так что не сразу понял, откуда берется "Invalid pointer access" при том, что никакого access'a никто не делает.

P. S.: На всякий случай - Metatrader 5 build 1545, Win 7 SP1 x86

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