Страница 2 из 3

Re: Как узнать количество отложников по инструменту?

Добавлено: 22 июл 2019, 15:01
Balalayka
evge писал(а):Так выше Дмитрий (oxi) это и описал.
Ну там чуть изменить и будет в переменных.

Код: Выделить всё

var orders = GetActiveOrders();
var count = orders.Count;
for (int i = 0;  i < count; i++)
{
var Quantity = orders[i].Quantity;
var OrderDirection = orders[i].OrderDirection;
}


Евгений спасибо!
Теперь буду знать, что так можно :)
А подобная схема справедлива в отношении всех подобных функций? Например, GetFinInfo() GetPosition() ?

Re: Как узнать количество отложников по инструменту?

Добавлено: 22 июл 2019, 15:10
evge
var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)

аналогично и в FinInfo();

GetFinInfo() – функция возврата информации по инструменту, используемому в стратегии
• Lot– Размер торгового лота, штук (аналог LotSize()). Тип int
• PriceStep – Текущая стоимость шага цены (аналог GetPriceStep()). Тип double
• PriceStepCost – Текущая стоимость шага цены. Тип double
• UpPrice – Верхний предельный уровень цены заявки. Тип double
• DownPrice – Нижний предельный уровень цены заявки. Тип double
• GtBuy – Гарантийные требования биржи для открытия длинной позиции, руб/шт. Тип double
• GtSell – Гарантийные требования биржи для открытия «короткой» позиции, руб/шт. Тип double

var I = GetFinInfo();
var UpPrice = I.UpPrice;
var DownPrice = I.DownPrice;

Re: Как узнать количество отложников по инструменту?

Добавлено: 23 июл 2019, 10:50
Balalayka
Евгений добрый день!

Код: Выделить всё

var orders = GetActiveOrders();
var count = orders.Count;
for (int i = 0;  i < count; i++)
{
var Quantity = orders[i].Quantity;
}

if ( (CurrentPosition() == 1) && (Quantity == 0) )
{                                                     
StopLoss(AverPrice() + P5 * GetPriceStep(), SignalPriceType.Price);
}


Имя Quantity отсутствует в контексте. Где допускаю ошибку?

Re: Как узнать количество отложников по инструменту?

Добавлено: 23 июл 2019, 12:05
evge
Приветствую!

За циклом надо объявлять.
Переменную объявленную в цикле не будет видно за его пределами.

А вообще не понятен смысл такого способа.

В итоге в вашем Quantity будет значение из последнего ордера.

Какой смысл перебирать тогда в цикле?

Re: Как узнать количество отложников по инструменту?

Добавлено: 23 июл 2019, 13:18
Balalayka
evge писал(а):За циклом надо объявлять.
Переменную объявленную в цикле не будет видно за его пределами.


Понял

evge писал(а):
А вообще не понятен смысл такого способа.

В итоге в вашем Quantity будет значение из последнего ордера.

Какой смысл перебирать тогда в цикле?


Я честно говоря и не знаю нужен здесь цикл или нет :?:
Просто именно такой способ описан и в документации и ранее в теме.

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

Евгений, если не затруднит, покажите пример как сделать это оптимальным способом?

Re: Как узнать количество отложников по инструменту?

Добавлено: 24 июл 2019, 09:09
Balalayka
evge писал(а):var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)

аналогично и в FinInfo();

GetFinInfo() – функция возврата информации по инструменту, используемому в стратегии
• Lot– Размер торгового лота, штук (аналог LotSize()). Тип int
• PriceStep – Текущая стоимость шага цены (аналог GetPriceStep()). Тип double
• PriceStepCost – Текущая стоимость шага цены. Тип double
• UpPrice – Верхний предельный уровень цены заявки. Тип double
• DownPrice – Нижний предельный уровень цены заявки. Тип double
• GtBuy – Гарантийные требования биржи для открытия длинной позиции, руб/шт. Тип double
• GtSell – Гарантийные требования биржи для открытия «короткой» позиции, руб/шт. Тип double

var I = GetFinInfo();
var UpPrice = I.UpPrice;
var DownPrice = I.DownPrice;


На основе вашего примера

Код: Выделить всё

var orders = GetActiveOrders();
var Quantity = orders.Quantity;


Не удалось найти метод расширения Quantity

Re: Как узнать количество отложников по инструменту?

Добавлено: 24 июл 2019, 11:34
evge
var orders = GetActiveOrders();
var Quantity = orders[x].Quantity;

где x - индекс от 0 до orders.Count.

Re: Как узнать количество отложников по инструменту?

Добавлено: 24 июл 2019, 12:06
Balalayka
evge писал(а):var orders = GetActiveOrders();
var Quantity = orders[x].Quantity;

где x - индекс от 0 до orders.Count.


[x] - же нужно объявлять? Это будет х = 0 ? :|

Re: Как узнать количество отложников по инструменту?

Добавлено: 24 июл 2019, 12:12
evge
x - индекс, может быть числом, может быть переменной, параметром :)

Re: Как узнать количество отложников по инструменту?

Добавлено: 24 июл 2019, 12:28
Balalayka
evge писал(а):x - индекс, может быть числом, может быть переменной, параметром :)


Тогда еще глупый вопрос разрешите
Если я объявляю [х] равным 1, что это будет значит в рамках вышеуказанного кода? т.е. какая логика воздействия на orders[x].Quantity;