суть:
вхожу маркетным ордером посредством привода. привод передает в нинзю имя ордера:
EnterLong(1, 1,"ИМЯ");
соответственно когда закрываю позицию то:
ExitLong("ИМЯ");
однако все бы ничего, если бы суммарный размер позиции всегда был равен 1
но увы.
необходимо входить в рынок поэтапно ( доливаясь)
тоесть нажал на приводе кнопочку - бай - отослал в нинзю приказ о покупке и имя ордера
нажал еще раз и так далее, пока не набрал необходимый суммарный сайз.
в качестве имени передается порядковый номер очередного ордера.
тоесть если в рынке 0 открытых ордеров - то передается 1 и тд..
при исполнении ордера нинзя передает приводу общее количество ордеров
qv1 = Positions[0].Quantity.ToString();
привод считывает количество и при необходимости войти еще одним ордером в рынок передает нинзе имя в виде qv1+1
так же и при закрытии:
привод считывает количество открытых ордеров и посылает в качестве имени эту цифру с приказом закрыть этот ордер.
этот ордер естественно есть - так как был открыт с таким именем, и нинзя его прекрасно закрывает.
тоесть сначала я октрыл 10 раз по одному ордеру, и потом обратным порядком закрыл все эти 10 ордеров по одному ордеру за раз.
проблема заключается в том, что когда я все ордера таким образом закрыл - новый торговый приказ несет в себе имя1 ( так как ноль в рынке ) и нинзя его просто не видит. она недавно ордер с таким именем уже закрыла, и теперь с таким же именем открывать не желает (((
тоесть необходимо как то либо обнулять кучу ордеров при их закрытии
умные люди подсказали создавать массив ордеров ( но я не догнал как это сделать)
либо же ВСЕГДА ордерам давать уникальные имена, а в самой нинзе как то считывать имена ордеров находящихся в рынке.