listCurrentOrders помогите с реализацией
#1 OFFLINE
Добавлено 21 April 2015 - 06:48
вызвать listCurrentOrders
без параметров не получается
нужно просто получить список всех ставок
спасибо
#2 OFFLINE
Добавлено 21 April 2015 - 07:12
orderBy.Add(OrderBy.BY_MARKET);
var listcurrentorders = client.listCurrentOrders(null,null,orderBy) ;
не работает
#3 OFFLINE
Добавлено 21 April 2015 - 13:18
maxspeed, on 21 April 2015 - 07:12, сказал:
не могу понять, что означает этот ваш паттерн
client.listCurrentOrders(null,null,orderBy);
1. как он накладывается на спецификацию ?
2. и разве не ругается, что вы подсовываете набор (Set) вместо одного OrderBy ?
#4 OFFLINE
Добавлено 21 April 2015 - 13:53
maxspeed, on 21 April 2015 - 06:48, сказал:
вызвать listCurrentOrders
без параметров не получается
нужно просто получить список всех ставок
спасибо
вот такой запрос нужно передать
mRequest = "{""jsonrpc"": ""2.0"",""method"":""SportsAPING/v1.0/listCurrentOrders"",""params"": {""marketIds"":[""" & mMarketId & " ""],""orderProjection"":""ALL"",""dateRange"":{}}, ""id"": 1}"чтобы получить ответ в виде списка всех ставок, где mMarketId - MarketID нужного рынка
#5 OFFLINE
Добавлено 21 April 2015 - 14:18
client.listCurrentOrders(null,marketId,null);если придерживаться этому описанию класса https://github.com/j...irClientSync.cs
Отредактировано Brain, 21 April 2015 - 14:19.
#6 OFFLINE
Добавлено 21 April 2015 - 16:55
задача вызвав listCurrentOrders узнать какие ставки на данный момент у меня есть
если вызываю с 8-ю параметрами Null то выдает все ставки но хотелось отсортировать по рынку
#7 OFFLINE
Добавлено 21 April 2015 - 19:03
Цитата
вызвать listCurrentOrders
без параметров не получается
нужно просто получить список всех ставок
спасибо
Цитата
Цитата
отсортировать вы можете ответ сервиса по следующим параметрам:
BY_BET
@Deprecated Use BY_PLACE_TIME instead. Order by placed time, then bet id.
BY_MARKET
Order by market id, then placed time, then bet id.
BY_MATCH_TIME
Order by time of last matched fragment (if any), then placed time, then bet id. Filters out orders which have no matched date. The dateRange filter (if specified) is applied to the matched date.
BY_PLACE_TIME
Order by placed time, then bet id. This is an alias of to be deprecated BY_BET. The dateRange filter (if specified) is applied to the placed date.
BY_SETTLED_TIME
Order by time of last settled fragment (if any due to partial market settlement), then by last match time, then placed time, then bet id. Filters out orders which have not been settled. The dateRange filter (if specified) is applied to the settled date.
BY_VOID_TIME
Order by time of last voided fragment (if any), then by last match time, then placed time, then bet id. Filters out orders which have not been voided. The dateRange filter (if specified) is applied to the voided date.
по времени размещения ставки, по времени сматчивания, по рынку и т.д.
denvb, on 21 April 2015 - 13:18, сказал:
#8 OFFLINE
Добавлено 21 April 2015 - 20:39
надо ответ сервиса отсортировать по рынку
CurrentOrderSummaryReport listCurrentOrders(ISet<String> betIds, ISet<String> marketIds, OrderProjection? orderProjection = null, TimeRange placedDateRange = null, OrderBy? orderBy = null, SortDir? sortDir = null, int? fromRecord = null, int? recordCount = null);
вот что в объявлении
не пойму какие аргументы обязательные а какие можно пропустить
#9 OFFLINE
Добавлено 21 April 2015 - 21:01
maxspeed, on 21 April 2015 - 20:39, сказал:
надо ответ сервиса отсортировать по рынку
CurrentOrderSummaryReport listCurrentOrders(ISet<String> betIds, ISet<String> marketIds, OrderProjection? orderProjection = null, TimeRange placedDateRange = null, OrderBy? orderBy = null, SortDir? sortDir = null, int? fromRecord = null, int? recordCount = null);
вот что в объявлении
не пойму какие аргументы обязательные а какие можно пропустить
null, null, ALL, null, BY_MARKET, null, 0, 100
#10 OFFLINE
Добавлено 21 April 2015 - 21:38
вот попробовал выдает:
You supplied one or more malformed bet IDs. Bet IDs are of the form "<exchangeId>:<betId>" where both the exchange ID and the bet ID parts are non-negative integers
Brain, on 21 April 2015 - 21:01, сказал:
null, null, ALL, null, BY_MARKET, null, 0, 100
var listcurrentorders = client.listCurrentOrders(new HashSet<string>(){"ALL"},new HashSet<string> (){"BY_MARKET"});
эту пропускает но при выполнении ошибка
You supplied one or more malformed bet IDs. Bet IDs are of the form "<exchangeId>:<betId>" where both the exchange ID and the bet ID parts are non-negative integers
а вот так получилось:
var listcurrentorders = client.listCurrentOrders(null, null,OrderProjection.ALL, null, OrderBy.BY_MARKET, null, 0, 100);
спасибо большое за помощь
#11 OFFLINE
Добавлено 23 April 2015 - 02:12
при обработке результата с помощью foreach
Ошибка 5 Оператор foreach не может использоваться для переменных типа "SearchMarket.TO.CurrentOrderSummaryReport", так как "SearchMarket.TO.CurrentOrderSummaryReport" не содержит открытого определения для "GetEnumerator"
#12 OFFLINE
Добавлено 23 April 2015 - 06:41
maxspeed, on 23 April 2015 - 02:12, сказал:
при обработке результата с помощью foreach
Ошибка 5 Оператор foreach не может использоваться для переменных типа "SearchMarket.TO.CurrentOrderSummaryReport", так как "SearchMarket.TO.CurrentOrderSummaryReport" не содержит открытого определения для "GetEnumerator"
CurrentOrderSummaryReport у вас класс, не может "перебраться" этим оператором.
Снова неверно вопрос задан)
Скорее всего обрабатываете вы какой-то список(массив)
Проверте в цикле foreach ,верно ли объявляются переменные списка которые хотите обработать
https://msdn.microso...y/bb383973.aspx
или подкорректировать foreach
или используйте for
www.dotnetperls.com/list
Отредактировано Brain, 23 April 2015 - 06:42.
#13 OFFLINE
Добавлено 23 April 2015 - 07:12
отправив серверу listCurrentOrders (проблема выше была) - вы дали запрос бирже, - "дай ка мне список ставок, отсортированных по marketid"
listCurrentOrders классами формирует верный запрос в строку в формате json и отправляет тудысь, что-то вроде:
[{"jsonrpc": "2.0", "method": "SportsAPING/v1.0/listCurrentOrders", "params": {"marketIds":["1.117020524"],"orderProjection":"ALL","dateRange":{}}, "id": 1}]
Биржа говорит - "на те список", и присылает ответ одной длинной срокой в формате json, соответсвеннно вашему запросу
[{"jsonrpc":"2.0","result":{"currentOrders":[{"betId":"45496907354","marketId":"1.117020524","selectionId":9170340,"handicap":0.0,"priceSize":{"price":10.0,"size":5.0},"bspLiability":0.0,"side":"BACK","status":"EXECUTABLE","persistenceType":"LAPSE","orderType":"LIMIT","placedDate":"2015-01-22T13:01:53.000Z","averagePriceMatched":0.0,"sizeMatched":0.0,"sizeRemaining":5.0,"sizeLapsed":0.0,"sizeCancelled":0.0,"sizeVoided":0.0,"regulatorCode":"GIBRALTAR REGULATOR"}],"moreAvailable":false},"id":1}]
а CurrentOrderSummaryReport из этой строки формирует список раскидывая все для вас удобно в структуры, из которых вы можете эти данные вывести или обработать.
все остальное это классы вашего "движка" по обработке запросов и ответов.
тут уже идет изучение языка C#, как правильно подсунуть переменные и обработать ответ.
в синтаксисе шарпа я не понимаю, поэтому подсказать не могу, для себя писал на php с нуля
будем изучать шарп вместе, пригодится)
Отредактировано Brain, 23 April 2015 - 07:15.
#14 OFFLINE
Добавлено 23 April 2015 - 09:44
maxspeed, on 23 April 2015 - 02:12, сказал:
при обработке результата с помощью foreach
Ошибка 5 Оператор foreach не может использоваться для переменных типа "SearchMarket.TO.CurrentOrderSummaryReport", так как "SearchMarket.TO.CurrentOrderSummaryReport" не содержит открытого определения для "GetEnumerator"
CurrentOrderSummaryReport result = listCurrentOrders(bla-bla-bla); foreach (CurrentOrderSummary order in result.currentOrders) { Console.WriteLine(order); }
не знаю как у вас сделан доступ к полю класса, может result.currentOrders или result.currentOrders() или result.getCurrentOrders() или ещё как, это во второй строчке подправите если надо
#15 OFFLINE
Добавлено 23 April 2015 - 11:06
теперь может посоветуете каким образом вывести в DataGridView список ставок с названиями матчей?
как связать матчи со ставками которые сделаны?
#16 OFFLINE
#17 OFFLINE
Добавлено 23 April 2015 - 15:38
и выбрать из listMarketCatalogue те marketId которые содержаться в ListCurrentOrders?
это лучше сделать через LINQ?
если это не будет наглостью можно пример через LINQ?
#18 OFFLINE
Добавлено 23 April 2015 - 15:56
maxspeed, on 23 April 2015 - 15:38, сказал:
и выбрать из listMarketCatalogue те marketId которые содержаться в ListCurrentOrders?
без разницы в каком порядке.
получаете одним запросом listMarketCatalogue - массив рынков, в нем будут названия матчей, время начала, и marketid для каждого рынка и т.д.
далее получаете запросом список ставок через ListCurrentOrders
будете иметь два массива (списка)
Далее перебираете оба списка циклом for. Где в первом и втором списке совпадают marketid, там и будет соответсвие названия матча и ваших ставок
#19 OFFLINE
Добавлено 23 April 2015 - 16:02
а куда поместить результат лучше? в массив?
насчет LINQ думал можно одной командой все выполнить
#20 OFFLINE
Добавлено 23 April 2015 - 16:08
maxspeed, on 23 April 2015 - 15:38, сказал:
если это не будет наглостью можно пример через LINQ?
линк штука классная, но в данном случае проще сделать два цикла вложенных чтобы решить эту задачу.
синстаксисом не владею, код такой
есть:
список MarketCatalogue
список CurrentOrders
foreach (var currentOrder in CurrentOrders) { foreach (var Market in MarketCatalogue) { ЕСЛИ Market.marketId = currentOrder.marketId ТО вывод в таблицу Market.НАЗВАНИЕ РЫНКА + currentOrder.ВРЕМЯ СТАВКИ (итд) } }
вот этот говнокод переделайте под себя и будет работать
Отредактировано Brain, 23 April 2015 - 16:09.