Betfair API-NG, тонкости
#161 OFFLINE
Posted 28 August 2015 - 10:46
Бирже вы передали запрос с определенными параметрами, в строковую переменную, получили ответ. Брякните на ней остановку, посмотрите что там пришло.. далее измените параметры в запросе и опять посмотрите. Подсказать вам не могут по той причине, что неизвестно какой у вас обработчик пришедшего ответа. Кто-то использует готовые классы json, чтобы заполнить структуру класса ответа от сервера. Я лично писал с нуля и обрабатывал (парсил) ответы сам. Поэтому и подсказать не могу, хочется глядя на такие муки))
Если "" возвращается в кефах и суммах, найдите место где приходит ответ и посмотрите общую строку ответа, может быть там пусто, а следовательно создан неверный запрос
#162 OFFLINE
#163 OFFLINE
Posted 28 August 2015 - 11:07
А вот как вытащить их оттуда. Для меня проблемма.
Где можно было бы почитать как вытаскивать эти данные.
Attached Files
#164 OFFLINE
Posted 28 August 2015 - 11:20
dblBack = {.AvailableToBack(0).Price}
Attached Files
#165 OFFLINE
#166 OFFLINE
Posted 28 August 2015 - 11:23
А как вытащить кф и сумму?
Attached Files
Edited by Alexs, 28 August 2015 - 11:25.
#167 OFFLINE
Posted 28 August 2015 - 11:25
Alexs, on 28 August 2015 - 11:07, сказал:
А вот как вытащить их оттуда. Для меня проблемма.
Где можно было бы почитать как вытаскивать эти данные.
кэф - .AvailableToBack(0).Price
сумма - .AvailableToBack(0).Size
#168 OFFLINE
Posted 28 August 2015 - 11:27
Alexs, on 28 August 2015 - 11:20, сказал:
dblBack = {.AvailableToBack(0).Price}
Ну, в массив закидали, а дальше где выводится кефы на форму, или куда вы там хотите вывести?
denvb, on 28 August 2015 - 11:25, сказал:
кэф - .AvailableToBack(0).Price
сумма - .AvailableToBack(0).Size
#169 OFFLINE
#170 OFFLINE
Posted 28 August 2015 - 11:35
Jericho, on 28 August 2015 - 11:27, сказал:
Ну, в массив закидали, а дальше где выводится кефы на форму, или куда вы там хотите вывести?
Все правильно, цена это кеф, размер - это сумма заявок под кефом
With objDataGrid
.Rows(i + 1).Cells(4).Value = dblBack
.Rows(i + 1).Cells(3).Value = dblBack1
.Rows(i + 1).Cells(2).Value = dblBack2
End With
Но туда вот что выводится
Edited by Jericho, 28 August 2015 - 11:44.
#171 OFFLINE
Posted 28 August 2015 - 11:42
выводится это все как dblBack(0), я так понимаю в datagriview.
только зачем массивы, если заполняется всего 1 элемент...
можно просто Dim dblBack, dblBack1, dblBack2 as Double
Alexs, on 28 August 2015 - 11:35, сказал:
Но туда вот что выводится
нужно выводить значения элементов массива, если уж берутся массивы
With objDataGrid
.Rows(i + 1).Cells(4).Value = dblBack(0).ToString
.Rows(i + 1).Cells(3).Value = dblBack1(0).ToString
.Rows(i + 1).Cells(2).Value = dblBack2(0).ToString
End With
Alexs, ты умный человек или нет? без обид...
картинку ты сейчас кинул, в ней логин и пароль к аккаунту биржи....
Картинку удалил. Беги пароль меняй
#172 OFFLINE
Posted 28 August 2015 - 12:05
Спасибо всем огромное. Жаль только зелёная кнопка у меня не работает. Пишет ошибка.
#173 OFFLINE
Posted 28 August 2015 - 14:12
Jericho, on 28 August 2015 - 11:42, сказал:
выводится это все как dblBack(0), я так понимаю в datagriview.
только зачем массивы, если заполняется всего 1 элемент...
можно просто Dim dblBack, dblBack1, dblBack2 as Double
нужно выводить значения элементов массива, если уж берутся массивы
With objDataGrid
.Rows(i + 1).Cells(4).Value = dblBack(0).ToString
.Rows(i + 1).Cells(3).Value = dblBack1(0).ToString
.Rows(i + 1).Cells(2).Value = dblBack2(0).ToString
End With
Alexs, ты умный человек или нет? без обид...
картинку ты сейчас кинул, в ней логин и пароль к аккаунту биржи....
Картинку удалил. Беги пароль меняй
#174 OFFLINE
Posted 28 August 2015 - 14:35
#175 OFFLINE
Posted 28 August 2015 - 15:11
Alexs, on 28 August 2015 - 14:35, сказал:
перед выполнением загрузки данных в таблицу:
Dim mFont As New Font("Segoe UI", 9)
For i = 0 To DataGridView1.Columns.Count - 1
DataGridView1.Columns(i).DefaultCellStyle.Font = mFont
Next i
цикл переберет все столбцы и присвоит шрифт Segoe UI размером 9. Дал именно такой код перебора на случай вдруг захочешь потом жирным что-то выделить)
а это выровняет текст в ячейках по середине:
DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
тут конкретно для 3го столбика. (отсчет идет от 0)
вместо того чтобы ждать ответа на форуме по программированию можно зайти на https://code.msdn.microsoft.com/
это МСДН, не путать с БДСМ... здесь есть всё, для всех контролов студии, от переменной до классов... Прогеры даже качают его дистрибутивы на комп чтобы был всегда под рукой.
А вот если там не нашли) можно и сюда. Форум не по программированию азов, уж извините...
По API-NG для биржи поможем всегда, а шкурные вопросы по интерфейсу могут тут висеть днями...
т.е. в мсдн в поиске пишешь что хочешь спросить, например
datagridview font
получаешь ответ с примерами:
https://social.msdn....rmsdatacontrols
#176 OFFLINE
Posted 28 August 2015 - 15:20
Спасибо за помощь и за ссылку.
Правда я не понял как там искать ответы на вопросы? Или надо зарегистрироваться чтобы появился поиск?
#177 OFFLINE
Posted 30 August 2015 - 07:33
Есть такой код
Private Sub GetGraph() Dim MyWebClient As New System.Net.WebClient Dim ImageInBytes() As Byte = MyWebClient.DownloadData(" https://www.betfair.com/exchange/horse-racing/marketactivity?id=1.120336369&selectionId=9529153") Dim ImageStream As New IO.MemoryStream(ImageInBytes) PictureBox1.Image = New System.Drawing.Bitmap(ImageStream) End SubЛюбезно предоставленный всем желающим Jericho здесь
Ссылка Здесь
Под старым API он работал. Сейчвс на строке
PictureBox1.Image = New System.Drawing.Bitmap(ImageStream)
выдаёт такую ошибку
Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll Дополнительные сведения: Недопустимый параметр.Как это дело исправить нигде не нашёл. Как правильно загрузить график в PictureBox?
#178 OFFLINE
Posted 30 August 2015 - 09:27
Dim ImageInBytes() As Byte Dim MyWebClient As New System.Net.WebClient Dim mStr As String = "http://uk.sportsiteexweb.betfair.com/betting/LoadRunnerInfoChartAction.do?marketId=" & mMarketId & "&selectionId=" & mSelectionId ImageInBytes = MyWebClient.DownloadData(mStr) Dim ImageStream As New IO.MemoryStream(ImageInBytes) PictureBox1.Image = New System.Drawing.Bitmap(ImageStream)
нужные mMarketId и mSelectionId подставить...
#179 OFFLINE
Posted 30 August 2015 - 09:46
https://msdn.microso...y/ck8bc5c6.aspx
Все-равно к этому придете когда надо будет делать ставки, уравнивать их и .т.д..
В двух словах:
Ваш бот это единственный поток на данный момент - весь ваш написанный код выполняется построчно, последовательно друг за другом каждая строка кода... Когда появляется строка, требующая на себя время (загрузка графиков, отправка ряда ставок, большие циклы расчетов) естественно дальнейшее выполнение программы не будет исполнено дальше пока не выполнится "долгий" участок кода... А это "залипание" основного потока.
Для этого добавляются новые треды(потоки) в которых и делаются все операции...
Контролы созданные в основном потоке - не могут обрабатываться в дочерних, т.е. создали поток, где загружаете график рынка, нельзя из этого потока сразу нарисовать график в picturebox... (на самом деле можно но это чуть попозже надо изучать)
#180 OFFLINE
Posted 30 August 2015 - 09:51