Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 708

 
Rustam Bikbulatov:
Привет ребята. Подскажите пожалуйста почему у меня пару десятков ордеров закрываются в шахматном порядке или вообще вразнобой? И как это исправить? Есть метод закрытия разом?

при закрытии - изменяйте порядок перебора ордеров

то есть цикл должен быть

for(int i=OrdersTotal()-1;i>=0;i--){...}

как минимум :-)

PS. раз уж всё одно на "это" наступили - закрытие ордеров в "шахматном" порядке иногда бывает полезным.
 
Maxim Kuznetsov:

при закрытии - изменяйте порядок перебора ордеров

то есть цикл должен быть

как минимум :-)

PS. раз уж всё одно на "это" наступили - закрытие ордеров в "шахматном" порядке иногда бывает полезным.

Если это управляемое закрытие ;)

А вообще (хоть и ваше замечание верное) вопрос был о "методе закрытия разом", что невозможно сделать в цикле.

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

 
Artyom Trishkin:

Если это управляемое закрытие ;)

А вообще (хоть и ваше замечание верное) вопрос был о "методе закрытия разом", что невозможно сделать в цикле.

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

а что мешает закрытию ордеров по порядку?

 
Rustam Bikbulatov:

а что мешает закрытию ордеров по порядку?

Смещение индексов ордеров в списке рыночных при их удалении при прямом цикле от нуля до OrdersTotal()-1.

 
Rustam Bikbulatov:

а что мешает закрытию ордеров по порядку?

Либо вы закрываете все открытые позиции в обратном цикле от OrdersTotal()-1 до >=0 по порядку их расположения в списке, либо открываете противоположную позицию для локирования, а потом спокойно закрываете нужные позиции встречной.

 
спасибо Артем!
 
Artyom Trishkin:

Если это управляемое закрытие ;)

А вообще (хоть и ваше замечание верное) вопрос был о "методе закрытия разом", что невозможно сделать в цикле.

Тут нужно открывать противоположную позицию лотом, равным сумме лотов всех открытых позиций для локирования, а затем уже спокойного закрытия встречным

самый правильный метод закрытия - звонок своему агенту, "Джон, закрой позицию по Дженерал Электрик, мы о обо всё договорились"

:-)

крыть встречным объёмом не всегда возможно. И скользит сильнее - объём большой.

 
Artyom Trishkin:

Смещение индексов ордеров в списке рыночных при их удалении при прямом цикле от нуля до OrdersTotal()-1.

Я видел код закрытия ордеров в прямой последовательности и работал без сбоев.

Там просто при успешном закрытии ордера счётчик цикла увеличивали на единицу. )))) Или уменьшали?? точно не помню, а напрягать мозг не получается.

 
Maxim Kuznetsov:

самый правильный метод закрытия - звонок своему агенту, "Джон, закрой позицию по Дженерал Электрик, мы о обо всё договорились"

:-)

крыть встречным объёмом не всегда возможно. И скользит сильнее - объём большой.

Но зато разом :) А в цикле - по одному.

 
Alexey Viktorov:

Я видел код закрытия ордеров в прямой последовательности и работал без сбоев.

Там просто при успешном закрытии ордера счётчик цикла увеличивали на единицу. )))) Или уменьшали?? точно не помню, а напрягать мозг не получается.

Вот чтобы его не напрягать, нужно собрать все позиции, приготовленные на удаление в список в нужном порядке (в любом, каком хочется), и удалять их "поимённо" глядя на этот список. Тогда точно будет соблюдён нужный порядок удаления.

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