Поэтому по факту (из лога эксперта) синхронный и асинхронный режимы отрабатали за одинаковое время (так и должно быть по логике), а вот по логу самого терминала, якобы асинхронный в два раза оказался быстрее. Это вранье/ошибка!
Можно сделать вывод.
При асинхронном режиме лог не полный и вводит в заблуждение.
prostotrader: Да, но это, к сожалению, не решает проблемы с задержками....
Ориентироваться на лог при асинхронном режиме пока нельзя - надо самому замерять. И хорошо, если Вы напишите об этом в СД.
Вопросы тормозов решаются уже несколько дней в СД. Скрипт для быстрого воспроизведения выложен в паблик. Очевидно, что разработчики будут добиваться ситуации, когда скрипт ни разу не покажет тормоза сначала на их тестовых стендах (это быстро), затем на пользовательских терминалах (это медленно). Так что все вполне оптимистично.
Ориентироваться на лог при асинхронном режиме пока нельзя - надо самому замерять. И хорошо, если Вы напишите об этом в СД.
Вопросы тормозов решаются уже несколько дней в СД. Скрипт для быстрого воспроизведения выложен в паблик. Очевидно, что разработчики будут добиваться ситуации, когда скрипт ни разу не покажет тормоза сначала на их тестовых стендах (это быстро), затем на пользовательских терминалах (это медленно). Так что все вполне оптимистично.
Коллеги, подскажите вот по такому моменту. Всегда на ФОРТСе использовал политику ORDER_FILLING_RETURN, тут была задача протестировать ORDER_FILLING_FOK.
Но иногда FOK не срабатывает, пишет ошибку 4756. Использую СБ, в частности для покупки:
bool CTrade::BuyLimit( 1.0, // объем позиции текущий аск, // цена исполнения NULL, // символ 0.0, // цена Stop Loss 0.0, // цена Take Profit ORDER_TIME_DAY, // тип истечения 0, // время истечения ""// комментарий )
Dennis Kirichenko: Коллеги, подскажите вот по такому моменту. Всегда на ФОРТСе использовал политику ORDER_FILLING_RETURN, тут была задача протестировать ORDER_FILLING_FOK.
Но иногда FOK не срабатывает, пишет ошибку 4756. Использую СБ, в частности для покупки:
bool CTrade::BuyLimit( 1.0, // объем позиции текущий аск, // цена исполнения NULL, // символ 0.0, // цена Stop Loss 0.0, // цена Take Profit ORDER_TIME_DAY, // тип истечения 0, // время истечения ""// комментарий )
Спасибо за совет.
4756
Не удалось отправить торговый запрос
Не имеет отношения к заливке ордера.
Протрассируйте СБ, может увидите где возникает ошибка.
Dennis Kirichenko: Вот выдержка из истории ордеров и сделок:
2017.02.22 10:00:00
52884143
MIX-3.17
buy limit
1.00 / 0.00
213 700
213 525
213 900
2017.02.22 10:00:02
rejected
Неполное сведение FOK заявки.
Проверьте, поддерживает ли брокер заливку FOK
//---Filing mode int filling_mode = int(SymbolInfoInteger(a_symbol, SYMBOL_FILLING_MODE));
if((SYMBOL_FILLING_IOC & filling_mode) != SYMBOL_FILLING_IOC) { MessageBox("Символ " + a_symbol + " не поддерживает filling IOC режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND); return(false); }
if((SYMBOL_FILLING_FOK & filling_mode) != SYMBOL_FILLING_FOK) { MessageBox("Символ " + a_symbol + " не поддерживает filling FOK режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND); return(false); }
Добавлено
И посмлтрите в СБ функцию bool CTrade::FillingCheck(const string symbol)
Вот и понятно стало!
При асинхронной пишется только одна строка
соответствующая этому
А другой строки в логе журнала НЕТ! Чтобы она соответствовала этой
На лицо не полный лог при асинхронной обработке.
За то при синхронной в логе две строки
2017.02.17 16:20:47.323 Trades '1007932': order #54042531 sell limit 1.00 / 1.00 RTS-3.17 at 121520 done in 15.978 ms
Поэтому по факту (из лога эксперта) синхронный и асинхронный режимы отрабатали за одинаковое время (так и должно быть по логике), а вот по логу самого терминала, якобы асинхронный в два раза оказался быстрее. Это вранье/ошибка!
Можно сделать вывод.
При асинхронном режиме лог не полный и вводит в заблуждение.
Можно сделать вывод.
При асинхронном режиме лог не полный и вводит в заблуждение.
Да, но это, к сожалению, не решает проблемы с задержками....
В СД давно написал
Я тоже оптимист :)
В СД давно написал
На мои заявы очень оперативно реагируют. Возможно, язык, на котором изъясняюсь, разработчикам более понятен, чем Ваш.
Мне иногда трудно въехать, что имеете в виду.
Но иногда FOK не срабатывает, пишет ошибку 4756.
Использую СБ, в частности для покупки:
1.0, // объем позиции
текущий аск, // цена исполнения
NULL, // символ
0.0, // цена Stop Loss
0.0, // цена Take Profit
ORDER_TIME_DAY, // тип истечения
0, // время истечения
"" // комментарий
)
Коллеги, подскажите вот по такому моменту. Всегда на ФОРТСе использовал политику ORDER_FILLING_RETURN, тут была задача протестировать ORDER_FILLING_FOK.
Но иногда FOK не срабатывает, пишет ошибку 4756.
Использую СБ, в частности для покупки:
1.0, // объем позиции
текущий аск, // цена исполнения
NULL, // символ
0.0, // цена Stop Loss
0.0, // цена Take Profit
ORDER_TIME_DAY, // тип истечения
0, // время истечения
"" // комментарий
)
4756
Не удалось отправить торговый запрос
Не имеет отношения к заливке ордера.
Протрассируйте СБ, может увидите где возникает ошибка.
4756
Не удалось отправить торговый запрос
Не имеет отношения к заливке ордера.
Протрассируйте СБ, может увидите где возникает ошибка.
Вот выдержка из истории ордеров и сделок:
Проверьте, поддерживает ли брокер заливку FOK
int filling_mode = int(SymbolInfoInteger(a_symbol, SYMBOL_FILLING_MODE));
if((SYMBOL_FILLING_IOC & filling_mode) != SYMBOL_FILLING_IOC)
{
MessageBox("Символ " + a_symbol + " не поддерживает filling IOC режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND);
return(false);
}
if((SYMBOL_FILLING_FOK & filling_mode) != SYMBOL_FILLING_FOK)
{
MessageBox("Символ " + a_symbol + " не поддерживает filling FOK режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND);
return(false);
}
Добавлено
И посмлтрите в СБ функцию bool CTrade::FillingCheck(const string symbol)
Вот выдержка из истории ордеров и сделок:
Разве лимитник может быть FOK?
На форуме выкладывали функцию автоматического выбора filling-типа.