← Voltar

Непонятки с MarketDepth.TotalBids(Asks)Volume

Делаю нехитрую операцию выделения крупных заявок в стакане и возникла проблема с получением всех бидов и асков в стакане. Сначала я запоминаю суммарные биды и аски и потом прохожу весь стакан, дабы найти крупные заявки. Но вот в чем дело: в цикле значения TotalBids(Asks)Volume с каждой новой Quote изменяются. В чем дело здесь может быть ?


int bids = InstrumentDepth.TotalBidsVolume;
int asks = InstrumentDepth.TotalAsksVolume;
double part=0;
foreach (Quote Quote in InstrumentDepth)
{
    if (Quote.OrderDirection == OrderDirections.Buy)
        part = Quote.Volume / bids;
    else if (Quote.OrderDirection == OrderDirections.Sell)
        part = Quote.Volume / asks;    
    if ((part) > 0.5) BigButt.Add(Quote.Price);
}

Este tópico foi útil?

Compartilhar tópico

Comentários (14)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Alexander
Alexander

Я правильно понял что значение переменных bids и asks разные в цикле? 🤨

Dottz
Dottz Autor

ну типа того : в процессе обхода циклом коллекции, с каждым следующим элементом TotalBids или AskVolume изменяются.

Mikhail Sukhov
Mikhail Sukhov

Dottz: ну типа того : в процессе обхода циклом коллекции, с каждым следующим элементом TotalBids или AskVolume изменяются.

Как это проверяете? По коду это не ясно.

frontman
frontman

Alexander: Я правильно понял что значение переменных bids и asks разные в цикле? 🤨 Dottz: ну типа того : в процессе обхода циклом коллекции, с каждым следующим элементом TotalBids или AskVolume изменяются.

Так все таки "Типо того" или может быть вы смотрите не bids и asks, а InstrumentDepth.TotalBidsVolume и InstrumentDepth.TotalAsksVolume?

Dottz
Dottz Autor

В Visual Studio ставлю точку остановки перед циклом и пошагово по нему прохожу, просматривая значения переменных.

Alexander
Alexander

Dottz: В Visual Studio ставлю точку остановки перед циклом и пошагово по нему прохожу, просматривая значения переменных.

Можно видео \ gif файл, где будет видно?

frontman
frontman

Alexander:

Dottz: В Visual Studio ставлю точку остановки перед циклом и пошагово по нему прохожу, просматривая значения переменных.

...gif файл... Александр жжете))

Alexander
Alexander

Dottz: В Visual Studio ставлю точку остановки перед циклом и пошагово по нему прохожу, просматривая значения переменных.

Вставьте в цикл foreach распечатку bids и asks и покажите здесь.

frontman
frontman

Если все таки bids и asks меняются то это ломает саму архитектуру C# . int - является типом значений и в данном куске кода меняться bids и asks просто не могут! http://msdn.microsoft.com/ru-ru/library/s1ax56ch(v=VS.90).aspx

frontman
frontman

😀 Извините не удержался...

Dottz
Dottz Autor

Подозреваю , что запись int bids = InstrumentDepth.TotalBidsVolume; является лишь ссылкой на поле ToTalBidsVolume и наверное при изменении поля меняется и значение переменной bids, т.к. оба в одном месте в памяти располагаются. Но почему-то приведение к структурному типу все равно не меняет ничего. int bids = (int)InstrumentDepth.TotalBidsVolume; Видео попробую выложить в понедельник, ибо исходники на работе остались...

зы. frontman не надо придираться так к словам, оборот "типа того" бывает паразитирует мою речь ) Прежде чем постить я несколько раз проверял эти значения и asks(bid) и TotalAsks(Bid)Volume.

Mikhail Sukhov
Mikhail Sukhov

Dottz: Подозреваю , что запись int bids = InstrumentDepth.TotalBidsVolume; является лишь ссылкой на поле ToTalBidsVolume

Неверно в корне.

Подозреваю проблема в том, что стакан успевает изменятся в процессе отладки.

frontman
frontman

Да нет не придираюсь правда. Просто эти слова у меня вызывают чувство неуверенности и неопределенности. А насчет того что int - является ссылкой... Я вам кидал ссылку на MSDN. Там написано все...

Dottz
Dottz Autor

Михаил, вы были правы , стакан успевал изменяться в процессе отладки. Проблема решилась как-то сама собой) Извиняюсь за беспокойство)