Сейчас только проверил Сбер...Мда.не жилец.
Он опускался до 72, значит пробил.
Так что -->ВНИЗ.
Никакого пробоя и в помине не было в роботе.
Это я увидел когда сного закочал данные.
Надоело мне конвертировать данные и решил я качать , настоящие торги.
У алора как я уже говорил есть 2-е версии демо торгов.
Это сутками напролёт, и в режиме реальных торгов.
Если зарегиться , на "УЧЕБНЫЕ ДЕМО ТОРГИ", то вы попадаете в реальну биржу, с реальными всеми бумагами.
СОМ сервер в этом режиме начинает пахать, только когжа открыватся и работает биржа.
Цены правда там будут отличаться на толику, но динамика направления точно такая же.
Подцепился я значит к бирже, м в 18.30 скачал данные в базу за целый день,в процедуре
slot0alltrades_addrow написал запись в базу к себе сбера.
И так я делал 2-а дня.Но когда я стал фильтровать у себя данные по минутам, обнаружил не соответствие.
Включая до 10.40 минут база путает время.
Зделки проходят и в 10.50 и в 10.34, как угодно в перемешку, за временем сделки соверщонной в 10.42, может идти сделка совершёонная в 10,33.
Звоню им. мол так мол и так, как говорю вы выставляете мол СОМ для роботов, а такой важный момент как время,
путаете.
Они отвечают..Мол..Да-а-а есть такое. Раньше мол и с ММВБ такие данные приходили но мы научились их отсеивать.
rem. (Я так думаю, что биржа могёт вот такой вот мизерной ошибкой накрыть медным тазом любого робота).
и прдолжают - В демо мы не стали это делать, а вот в реале всё ОК там со временем будет.
Вот и сижу я сейчас и ломаю голову, как мне получить тайм фреймы, и чтобы не привязываться к данным от брокера.
У кого какие мысли на счёт этого?
Как это мне забацать можно будет?
Уже всю башку исчесал.
Пишите.
rem.
Код процедуры звписи.
' добавление строки в таблицу всех сделок
Private Sub slot1alltrades_addrow(ByVal openid As Long, ByVal rowid As Long, ByVal fields As Variant)
Dim fl As Integer
Dim share As String
Dim mpos As Integer
' выход из функции в случае ошибки
On Error Resume Next
' получение имени инструмента
share = fields(3)
mpos = InStr(share, "SBER03")
' проверка вхождения строки с названием инструмента в строку с именем инструмента в сделке
If mpos = 0 Then
' если сделка совершена по другому инструменту, то выход из функции
Exit Sub
End If
'~~~~~~~~~~~~Запись данных в базу~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'запись в таблицу данных
'~~~~~~~~~~~~~~~~~~~~~~~~~
Dim Value() As String
Value = Split(slot1alltrades.FieldNames, ",")
rst.AddNew
For I = 0 To UBound(Value)
On Error Resume Next
' вывод инфы в таблицу KRNL (её конечно нужно добавить вам самим) Эксел с именем и внизу по ряду 254, и 255 для отслеживания времени
Worksheets("KRNL").Cells(254, I + 1) = Value(I)
rst.fields(I + 1).Value = CStr(fields(I)) ' База сама соображает какие данные писать в какомФОРМАТЕ
On Error GoTo 0
Worksheets("KRNL").Cells(255, I + 1) = fields(I)
Next
On Error GoTo 0
rst.Update
'~~~~~~~~~~~~~~~~~~~~~~~~~
End Sub
И конечно вам нужно самим задекларировать базу.
Databases и Recordsets
Я написал свою процедуру под именем slot1alltrades_addrow.
Она не зарегинина.
для этого мне пришлось
1-в глобале её зарегинить рядом с slot0alltrades_addrow
' таблицы для хранения сделок
Dim WithEvents slot0deals As TEClientLib.SlotTable
Dim WithEvents slot1deals As TEClientLib.SlotTable
2-дописать её для кнопки 2 вместо FOREX.
в процедуре alortradeslot1_Synchronized
В самом низу этой процедуры добавил.
'~~~~~~~~~~~~~~
'подготовка работы с таблицей всех сделок
Set slot1alltrades = GetTable(slotid, "all_trades")
slot1alltrades.FieldNames = "TradeNo,Time,SecBoard,SecCode,Quantity,Price"
slot1alltrades.UseSfx = False
slot1alltradesid = slot1alltrades.Open(slot1id, UCase("all_trades"))
И в резёльтате у меня рабочие две кнопки для демо торгов.
Одна для записи в сутках, другая кнопка к подключению к реальной бирже в режиме демо.
Сообщение отредактировал abracadabra: 11 декабря 2009 - 03:59