Ошибки, баги, вопросы - страница 1804
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тормоза на TRADE_ACTION_REMOVE.
Request.magic = 0
Request.order = 134003202
Request.symbol =
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
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 = 10009
Result.deal = 0
Result.order = 134003202
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 290.089 + 0.005 ms
Result.request_id = 10078
Result.retcode_external = 0
GG 0 23:02:46.849 Trades '5122740': accepted buy limit 1.00 Si-3.17 at 56288
PR 0 23:02:46.852 Trades '5122740': order #134003202 buy limit 1.00 / 1.00 Si-3.17 at market done in 54.423 ms (0.342 ms on server)
PR 0 23:02:46.854 Trades '5122740': cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
LL 0 23:02:47.142 Trades '5122740': accepted cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
CE 0 23:02:47.144 Trades '5122740': cancel #134003202 buy limit 1.00 Si-3.17 at market done in 290.050 ms (1.400 ms on server)
Как это нет цены, есть даже в логе она указана?!
Запрос
2017.02.14 23:18:41.442 Request.magic = 0
2017.02.14 23:18:41.442 Request.order = 0
2017.02.14 23:18:41.442 Request.symbol = EURPLN
2017.02.14 23:18:41.442 Request.volume = 1.0
2017.02.14 23:18:41.442 Request.price = 4.30632
2017.02.14 23:18:41.442 Request.stoplimit = 0.0
2017.02.14 23:18:41.442 Request.sl = 0.0
2017.02.14 23:18:41.442 Request.tp = 0.0
2017.02.14 23:18:41.442 Request.deviation = 100
2017.02.14 23:18:41.442 Request.type = ORDER_TYPE_BUY (0)
2017.02.14 23:18:41.442 Request.type_filling = ORDER_FILLING_RETURN (2)
2017.02.14 23:18:41.442 Request.type_time = ORDER_TIME_GTC (0)
2017.02.14 23:18:41.442 Request.expiration = 1970.01.01 00:00:00
2017.02.14 23:18:41.442 Request.comment = My Position
2017.02.14 23:18:41.442 Request.position = 0
2017.02.14 23:18:41.442 Request.position_by = 0
2017.02.14 23:18:41.442 Result.retcode = 10021
2017.02.14 23:18:41.442 Result.deal = 0
2017.02.14 23:18:41.442 Result.order = 0
2017.02.14 23:18:41.442 Result.volume = 0.0
2017.02.14 23:18:41.442 Result.price = 0.0
2017.02.14 23:18:41.442 Result.bid = 0.0
2017.02.14 23:18:41.442 Result.ask = 0.0
2017.02.14 23:18:41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02.14 23:18:41.442 Result.request_id = 0
2017.02.14 23:18:41.442 Result.retcode_external = 0
2017.02.14 23:18:41.442
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_BID) = 4.30151
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_ASK) = 4.30632
Ошибка [No prices] на ровном месте
Как это нет цены, есть даже в логе она указана?!
ЗЫ. В данный момент общаюсь с техподдержкой очень известной компании на L... (ведётся конфиденциальная переписка, поэтому называть не буду), они объясняют, что время исполнения на их торговом сервере одинаково что для приказов исходящих с МТ4 (у них МТ4), что отправленных по FIX и составляет примерно 1-6мс. Тогда, вопрошаю я у них, на что тратятся время 40-50 мс при торговле из МТ4, так с момента отправки приказа и получения ответа проходит 40-60 мс примерно. Они толерантно пожимают плечами, типа ищи у себя в задержках сетевых, я им говорю пинг 1-2мс, а они опять пожимают плечами. Вывод - тормозит серверная часть МТ4/5. Теперь вот логи новые показывают это. Я понимаю, что время не может быть "чистым" как по FIX, но по крайней мере должно быть одинакового порядка.
ЗЫ. В данный момент общаюсь с техподдержкой очень известной компании на L... (ведётся конфиденциальная переписка, поэтому называть не буду), они объясняют, что время исполнения на их торговом сервере одинаково что для приказов исходящих с МТ4 (у них МТ4), что отправленных по FIX и составляет примерно 1-6мс. Тогда, вопрошаю я у них, на что тратятся время 40-50 мс при торговле из МТ4, так с момента отправки приказа и получения ответа проходит 40-60 мс примерно. Они толерантно пожимают плечами, типа ищи у себя в задержках сетевых, я им говорю пинг 1-2мс, а они опять пожимают плечами. Вывод - тормозит серверная часть МТ4/5. Теперь вот логи новые показывают это. Я понимаю, что время не может быть "чистым" как по FIX, но по крайней мере должно быть одинакового порядка.
В L... имели в виду, что когда получают в свою систему приказ, то время исполнения в самой системе и отправке обратно мизерное. Получить они приказ могут от MT4-сервера, либо по FIX и другим их API. Сам же MT4-сервер многие десятки мс тратит на внутреннюю обработку, никак не связанную с execution.
Когда-то на MT4 минимальное время было 150 мс. Похоже, что-то серьезно подрихтовали, раз стало 40-60. Но MT5 заметно быстрее. По логам теперь видно, сколько сам сервер отрабатывал. Осталось понять, на что основное время уходит.
Ошибка компиляции: нельзя обратиться к f() //2
#import "Test.ex5"
void f(); //1
#import
void f() {} //2
void OnStart()
{
fn g1 = Test::f; //нормально
fn g2 = f; //Error: 'f' - cannot resolve function address
}
@Slawa уточните пожалуйста, есть ли какие-то ограничения, на запись индикаторных буферов вне функции OnCalculate()? Всегда ли будет все корректно записываться в случае записи буферов в функциях: OnTimer(), OnBookEvent(), OnChartEvent()?
НО можете нарваться на перераспределение буферов в момент добавления нового бара (перераспределение производится с запасом, поэтому не на каждом новом баре).
PS хотя нет. вся обработка идёт в одном потоке, поэтому коллизий не должно быть. Пробуйте
Явных ограничений нет. Попробуйте.
НО можете нарваться на перераспределение буферов в момент добавления нового бара (перераспределение производится с запасом, поэтому не на каждом новом баре)
Вот тут подробнее, пожалуйста. Что за распределение, как с ним быть?
Как раз написал вопрос потому, что замечаю "подвисания" на новом баре. Причем эти подвисания обнуляют буферные значения = 0 (причем пустое значение установленное явно мной - EMPTY_VALUE). Пока не удалось поймать этот момент. Иногда происходит просто "скачок" индикатора и сразу восстановление в нормальное состояние, иногда именно "залипает". При залипании не пишутся значения в файл и отрисовка буферов не производится. Запись в буферы произвожу в OnBookEvent().
Тот же самый код в OnCalculate() отрабатывает нормально, но OnCalculate() не позволяет собрать все значения открытого интереса и других биржевых параметров.
Лечится только переключением ТФ. Да, одновременно запущены 5-7 одинаковых индикаторов, пишущих разные данные.
Добавлено:
Да, еще сегодня при включении терминала заметил точно такую же штуку. Все просто повисло, во всех буферах, на всех значениях нули, индикатор историю (записанную в файл) не выдал. Т.е. просто все повисло. Рынок еще был закрыт. Изменил ТФ - история подргузилась, НО, опять к вопросу о необходимости временной метки к значениям SESSION: была произведена запись последнего известного значения на момент закрытия терминала! Синхронизация истории прошла успешно, ошибок не было. Но TimeCurrent() вернул ошибочное значение (где-то 21:03). Хотя реальное время прихода этого значения 23:49:59. В общем, какая-то печаль...
Вот тут подробнее, пожалуйста. Что за распределение, как с ним быть?
Как раз написал вопрос потому, что замечаю "подвисания" на новом баре. Причем эти подвисания обнуляют буферные значения = 0 (причем пустое значение установленное явно мной - EMPTY_VALUE). Пока не удалось поймать этот момент. Иногда происходит просто "скачок" индикатора и сразу восстановление в нормальное состояние, иногда именно "залипает". При залипании не пишутся значения в файл и отрисовка буферов не производится. Запись в буферы произвожу в OnBookEvent().
Тот же самый код в OnCalculate() отрабатывает нормально, но OnCalculate() не позволяет собрать все значения открытого интереса и других биржевых параметров.
Лечится только переключением ТФ. Да, одновременно запущены 5-7 одинаковых индикаторов, пишущих разные данные.
Делаем перераспределение буфера на 1250 баров, копируем в новый буфер 1000 баров из прежнего буфера. Новый буфер выставляем вместо прежнего буфера, прежний буфер удаляем. Добавляем 1001-й бар.
Что значит "как с ним быть"?
Имейте в виду, что все индикаторы одного символа считаются последовательно друг за другом в одном потоке. Если какой-то индикатор тормозит, то тормозится и весь поток обработки символа