Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что не так с кодом. Почему постоянно выводятся ошибки "failed cancel order #0 buy 0.00 at market [Invalid request]"
а где выбор позиции?
какое отношение имеют ордера к сделкам?
вы вообще что пытаетесь сделать? позицию закрыть?
а имя order_remove_mql_trade_request это страшный сон.
а где выбор позиции?
какое отношение имеют ордера к сделкам?
вы вообще что пытаетесь сделать? позицию закрыть?
а имя order_remove_mql_trade_request это страшный сон.
да, нужно пояснить.
назначение кода -- если есть открытая позиция, то отменить все лимитные ордера того же направления, что и позиция.
например, если открыта позиция БАЙ. то отменить все ордера типа бай лимит
Выбрать позицию забыл =). Ну ошибка не от этого (проверил).
Что не так с кодом. Почему постоянно выводятся ошибки "failed cancel order #0 buy 0.00 at market [Invalid request]"
MqlTradeRequest order_remove_mql_trade_request = {0};
order_remove_mql_trade_request.action = TRADE_ACTION_REMOVE;
i = OrdersTotal();
if(i > 0){
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
for(i2 = 0;i2 <= i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
for(i2 = 0;i2 <= i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}
уберите эти знаки равенства.
Убирал уже, не помогает.
обманывать старших не хорошо.
обманывать вообще нехорошо. я этого и не делаю.
сейчас еще раз перепроверил все вот с таким кодом:
i = OrdersTotal();
if(i > 0){
PositionSelect(_Symbol);
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
for(i2 = 0;i2 < i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
for(i2 = 0;i2 < i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}
результат тот же. часто возникает упомянутая ошибка
результат тот же. часто возникает упомянутая ошибка
"часто" - это пустой звук.
ёклмн, по вашему 2+2 часто равно 4 ?
не ленитесь - сделайте анализ отправки и анализ возвращаемой ошибки.
проверьте ЧТО ВЫ ПЫТАЕТЕСЬ УДАЛИТЬ???
есть ли ордера в наличии на момент закрытия?
может вы пытаетесь удалить ордер, который уже удален.
в-третьих - кто вас так учил закрывать ордера??? Вы думаете что вы проходите по всем ордерам - фигушки. После вашего каждого закрытия OrdersTotal уменьшается на 1. А вы все равно долбите своим i2++ до победы, до первичного i.
Вы даже не удосужились проверить - а не возвращает ли ошибку OrderGetTicket или OrderSelect
плохо, очень плохо.
вот из- за таких ручёнок потом наши спутники с орбиты сходят.
"часто" - это пустой звук.
ёклмн, по вашему 2+2 часто равно 4 ?
не ленитесь - сделайте анализ отправки и анализ возвращаемой ошибки.
проверьте ЧТО ВЫ ПЫТАЕТЕСЬ УДАЛИТЬ???
есть ли ордера в наличии на момент закрытия?
может вы пытаетесь удалить ордер, который уже удален.
в-третьих - кто вас так учил закрывать ордера??? Вы думаете что вы проходите по всем ордерам - фигушки. После вашего каждого закрытия OrdersTotal уменьшается на 1. А вы все равно долбите своим i2++ до победы, до первичного i.
Вы даже не удосужились проверить - а не возвращает ли ошибку OrderGetTicket или OrderSelect
плохо, очень плохо.
вот из- за таких ручёнок потом наши спутники с орбиты сходят.
насчет Вашего "в третьих", замечу что Вы правы =). я был уверен что дело совсем не в этом, иначе бы при тестировании были ошибки не только с байлимитами, но и с селллимитами. а вообще, конечно же так не годится закрывать ордера. Вообщем спасибо что попытались помоч и наставить на путь
Приветствую господа.
Прошу помочь разобраться. Перед нами прототип windows функции, эмулирующей нажатие клавиши:
Дело в том, что эта функция вызывается в MT4 c int'ами вместо байтов. Выглядит это так:
В чем дело? Передача минимум 4 байта? Зависит ли от аппаратных средств?Приветствую господа.
Прошу помочь разобраться. Перед нами прототип windows функции, эмулирующей нажатие клавиши:
Дело в том, что эта функция вызывается в MT4 c int'ами вместо байтов. Выглядит это так:
В чем дело? Передача минимум 4 байта? Зависит ли от аппаратных средств?При передаче параметров в функцию минимальным квантом является 32-битное целое. То есть в Вашем случае bVk и bScan перед передачей в функцию будут преобразованы к типу int
Поэтому приведённые выше прототипы функций не противоречат друг другу