Закрытие позиций. По сигналу индикатора. - страница 4

 
Благодарю. Сейчас попробую...
 
granit77:
Если верить komposter'у и Vinin'у, то вместо:
for (int v=0; v<OrdersTotal(); v++)

написать:
for (int v=OrdersTotal()-1; v>0; v--)

У меня работает.
Ошибочка ;) Так будут закрываться все ордера кроме первого.
Правильный вариант:
for ( int z = OrdersTotal() - 1; z >= 0; z -- )
{
 
}
 

Схожу, поищу.

granit77 и Vinin ! У вас работает это и закрывает все открытые позиции? У меня почему-то этот кусочек

то вместо:
for (int v=0; v<OrdersTotal(); v++) 
 
написать:
for (int v=OrdersTotal()-1; v>0; v--)
вместо самой ранней открытой позиции стал закрывать последнюю открытую. Но все остальные продолжают движение...
 
komposter:
granit77:
Если верить komposter'у и Vinin'у, то вместо:
for (int v=0; v<OrdersTotal(); v++)

написать:
for (int v=OrdersTotal()-1; v>0; v--)

У меня работает.
Ошибочка ;) Так будут закрываться все ордера кроме первого.
Правильный вариант:
for ( int z = OrdersTotal() - 1; z >= 0; z -- )
{
 
}


Благодарю! Сейчас попробую вашу рекомендацию !
 

Результат пока всё тот же! С последним вариантом закрывается только последняя открытая позиция.!

Попробуем разобраться!

int z = OrdersTotal() - 1

-здесь "z" у нас равно общему числу открытых ордеров минус один ! При этом z задаем >=0.

z--, видимо означает, что мы далее (OrderSelect) перебираем открытые ордера с самого последнего ?

И понятно, что самый последний ордер у нас закрывается . Поскольку он первым "попадает под раздачу". Но на этом выполнение операции закрытия оставшихся ордеров останавливается! И этот алгоритм ждет следующего сигнала индикатора на закрытие. Думаю, что здесь надо что-то добавить. А что - пока не знаю....

А почему, собственно - z = OrdersTotal() - 1; ?

 
rid:

Результат пока всё тот же! С последним вариантом закрывается только последняя открытая позиция.!

А теперь убираем return после OrderClose-а, и наблюдаем результат ;)
 
rid:

А почему, собственно - z = OrdersTotal() - 1; ?

Потому что всего ордеров OrdersTotal(), 1-й имеет индекс 0, а последний, соответственно, OrdersTotal()-1.
Учим матчасть ;)
 
rid:

Результат пока всё тот же! С последним вариантом закрывается только последняя открытая позиция.!

Попробуем разобраться!

исследовательская работа увлекает! это даже полезно. и для мозгов и для экспириенса. приветствую и уважаю.

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

ps (исчо одно). если решите серьёзно отнестись к своему творению, не забывайте, что в любую секунду (миллисекунду) связь с ДЦ могет отвалиться. ничего страшного, но если у вас сигнал "сиюминутный", то, начиная закрывать по этому сигналу ордера, учтите это момент. в идеале вообще - даже чтобы после экстренного выключения/включения эксперта, он мог увидеть необходимость закрытия определённых ордеров (в данном случае). и закрыл их. хоть на следующем тике. .

если же это просто "игрушечный" эксперт - то никаких этих усложнений не нужно. впрочем, большинство публично продаваемых "граалей" в виде ч.я. - аналогично игрушечные..

 
Shu:

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

Можно поинтересоваться, а зачем? ;)
Понятно, если какая-то сложная логика или несколько алгоритмов в одном, то можно заморачиваться, а для простого переворотного эксперта - зачем?
 
komposter:
Shu:

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

Можно поинтересоваться, а зачем? ;)
Понятно, если какая-то сложная логика или несколько алгоритмов в одном, то можно заморачиваться, а для простого переворотного эксперта - зачем?


совершенно верно - для сложной логики. однако, один раз попробовав вкус мёда, винни уже не мог его забыть. :-)

если ордеров больше одного - использую практически всегда. наверное, привычка. или просто автоматизация (своей) работы. :-)