Вверх ↑
Этот топик читают: Гость
Ответов: 194
Рейтинг: 27
#31: 2021-07-29 18:27:58 ЛС | профиль | цитата
Pavel писал(а):
Шустрый однако websocat_win32.exe

Поэтому я и сделал пример с ним. Powershell выдавал много ошибок и я для него делал задержку 100 миллисекунд. Иначе было много битых данных.
По поводу:
Pavel писал(а):
Но вот стоило подключить компонент Plotter, как все менялось в худшую сторону.

думаю что надо сохранять куда-либо данные и отрисовывать каждые 0.5 секунд на PaintBox, например.
Pavel писал(а):
Обратите внимание на время в схемах и на время пк.

Я посчитал время для своего часового пояса (+3 часа). Если у тебя другой то, просто прибавь к Unix time разницу времени с Гринвичем в секундах (у меня 3*60*60=10800)

Редактировалось 2 раз(а), последний 2021-07-29 18:36:32
карма: 5

0
Ответов: 39
Рейтинг: 1
#32: 2021-07-29 18:51:58 ЛС | профиль | цитата
Леонид,
Леонид писал(а):
И не забываем о скорости реакции принимающего решение 0.07 -- 0.1 сек. Более 20--32 кадров/сек излишни

Это уже индивидуально, но даже и тут не должно быть задержки со стороны программы, а вот если высчитывает алгоритм то каждая мс на счету ( пинг можно снизить арендой сервера в близи от биржи )

Gunta писал(а):
думаю что надо сохранять куда-либо данные и отрисовывать каждые 0.5 секунд на PaintBox, например.

Не думаю что это верный выход, любая искусственная задержка данных, что для отрисовки графика, что для вычисления равняется отставанием от рынка ! ( это не допустимо )

--- Добавлено в 2021-07-29 19:05:30

Леонид, Между покупкой и продажей разница 2сек. При очень волатильном рынку скорость получения и отрисовки данных крайне важна !
Снимок.PNG

Иначе можно не успеть:
Снимок.1PNG.PNG

Gunta писал(а):
Я посчитал время для своего часового пояса (+3 часа). Если у тебя другой то, просто прибавь к Unix time разницу времени с Гринвичем в секундах (у меня 3*60*60=10800)

Это не имеет значения, на скриншоте (запущено 2-е программы в одно время)
Снимок.PNG
[img][/img]
показано отставание во времени от начального значения. ( схемы стартуют при равных значениях времени и скриншот лиж показывает разницу в задержке программы )Я имею веду минуты и секунды.

Редактировалось 6 раз(а), последний 2021-07-29 21:06:45
карма: 0

0
Ответов: 194
Рейтинг: 27
#33: 2021-07-30 06:25:07 ЛС | профиль | цитата
Pavel, Некоторые пояснения и вопросы.
1. Мой последний парсер только для одной пары валют. Ты туда загружаешь 14 пар!
2. У разных валют разный порядок цен. Их просто невозможно изобразить на одном графике.
3. Все визуальные компоненты самые медленные. И тормоза происходят из-за того, что они не успевают обработать очередь накопившихся сообщения. Проблемы со «временем» отсюда.
4. Время парсится из входящих сообщений. В ответе биржи 2 времени: время сделки и время сообщения, и они различаются. Какое «правильное»?
5. Если сделки совершаются в течении 2-5 секунд (высокочастотный трейдинг) то зачем постоянно перерисовывать данные за 24 часа? Разве недостаточно хранить и рисовать последние 10-30 минут?
6. Воспользуйся советом Леонида и присмотрись к компонентам из вкладки «Графика» в Hiasm. Сможешь рисовать любые графики каким хочешь цветом и быстродействие, я думаю, будет выше, чем у Plotter.
7. Извини, но ты очень странно используешь некоторые элементы. Старайся делать схемы без пересечения линий. Очень сложно понять твои примеры без предварительного «распутывания».
Add(MainForm,7714850,133,77)
{
Width=275
Height=112
Point(onClose)
link(onCreate,133730:doConsoleExec,[])
link(onClose,133730:doConsoleTerminate,[])
}
Add(BlockFind,2689203,343,91)
{
IncludeBlock=1
StartBlock="{"
EndBlock="}"
link(onSearch,6956214:doNext,[])
}
Add(WinExec,133730,189,77)
{
FileName="websocat_win32.exe"
Param="wss://stream.binance.com:9443/stream?streams=btcusdt@trade/xrpusdt@trade/ethusdt@trade/busdusdt@trade/axsusdt@trade/aliceusdt@trade/bnbusdt@trade/dotusdt@trade/dogeusdt@trade/adausdt@trade/tlmusdt@trade/runeusdt@trade/lunausdt@trade/usdcusdt@trade/maticusdt@trade"
Mode=0
Point(doConsoleExec)
Point(doConsoleTerminate)
Point(onConsoleResult)
Point(doConsoleInput)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleResult,5437590:doReplace,[])
}
Add(Replace,5437590,245,91)
{
SubStr="""
link(onReplace,13454937:doSearch,[])
}
Add(BlockFind,13454937,294,91)
{
StartBlock="{e:trade"
EndBlock="true}"
link(onSearch,2689203:doSearch,[])
}
Add(Timer,13915431,350,140)
{
link(onTimer,5451177:doEvent1,[])
}
Add(Edit,1781743,441,140)
{
Left=180
Top=10
Text="0"
link(onChange,11247982:doCalc,[])
link(Str,6956214:Count,[])
}
Add(Edit,1640941,601,140)
{
Left=180
Top=35
Text="0"
link(Str,1781743:Text,[(607,124)(490,124)(490,183)(447,183)])
}
Add(Label,2961824,447,35)
{
Left=5
Top=35
Width=150
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="MAX trades per sec"
AutoSize=1
Alignment=1
}
Add(Label,8719720,392,35)
{
Left=5
Top=10
Width=150
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="trades per sec"
AutoSize=1
Alignment=1
}
Add(CounterEx,6956214,441,91)
{
Max=10000000
Point(doReset)
}
Add(Hub,5451177,392,140)
{
link(onEvent1,1781743:doText,[])
link(onEvent2,6956214:doReset,[(417,153)(417,104)])
}
Add(MathParse,11247982,497,140)
{
MathStr="max(%1, %2) * (%1 > %2)"
link(onResult,8490575:doCase,[])
link(X2,1640941:Text,[(510,131)(538,131)(538,180)(607,180)])
}
Add(Case,8490575,553,140)
{
Value=Integer(0)
link(onNextCase,1640941:doText,[])
}

(websocat_win32.exe должна лежать рядом со схемой)

Редактировалось 1 раз(а), последний 2021-07-30 06:54:23
карма: 5

0
Ответов: 39
Рейтинг: 1
#34: 2021-07-30 10:37:40 ЛС | профиль | цитата
Gunta,

1. Сделал это ради эксперимента примерной производительности компонента Plotter и websocat_win32.exe
2. Я это понимаю, ответ тот же что в пункте 1.
3. Проблема ясна мне стала после "эксперимента".
4. Нужно время сделки, ибо по нему должна рисоваться точка на графике ( время сделки это координата X а цена это Y )
а вот время сообщения я так понимаю нужно для синхронизации с локальным времени.
5. Минимальное время сделки может быть настолько мало на сколько позволяет пинг до биржи. Иметь график хотя-бы 24ч нужно для того чтобы сориентироваться на рынке (Тренд, характер движения, объёмы, в какое время и как отработали индикаторы....)
6. Хорошо спасибо за совет если нет альтернативы буду пробовать, хотелось получить специальный компонент ( инструмент ) для этих целей.
7. Спасибо за критику, буду старятся и исправляться.
карма: 0

0
Ответов: 194
Рейтинг: 27
#35: 2021-07-30 11:14:03 ЛС | профиль | цитата
Pavel, вспомнил. Была такая тема на форуме лет 10 назад - "Пакеты MQL4 и MQL5" https://forum.hiasm.com/topic/57817
Возможно, это то что тебе нужно. Я это у себя не ставил и как с этим работать не знаю.
карма: 5

0
Ответов: 8695
Рейтинг: 806
#36: 2021-07-30 17:23:02 ЛС | профиль | цитата
Pavel, кстати, а что означает цвет (красный, зелёный) и толщина линии в желаемых графиках и почему зелёный "сверху"
карма: 19

0
Ответов: 4743
Рейтинг: 529
#37: 2021-07-30 17:50:53 ЛС | профиль | цитата
Леонид, это означает "кто первый встал того и тапки" отметки рисуются в Real-Time, т.е график рисуется не последовательно как в плотаре а параллельно по всем массивам кривых. Увы, тут компоненты HiAsm бессильны.
карма: 6
0
Ответов: 39
Рейтинг: 1
#38: 2021-07-31 09:44:59 ЛС | профиль | цитата
Gunta, К сожалению это не то + функционал реализован у него на начальном этапе.
Насколько я понял, MQL4 и MQL5 это язык программирования для оболочки "MetaTrader"

Леонид,
Леонид писал(а):
кстати, а что означает цвет (красный, зелёный) и толщина линии в желаемых графиках и почему зелёный "сверху"

На этом скрине каждая точка = равна сделке ( покупке или продаже ), а вот цвет: покупка = зеленый, продажа = красный.
Снимок.PNG

Леонид писал(а):
..толщина линии в желаемых графиках...

У линии цвет означает смену тренда а толщина зависит от объёма, это индикатор EMA (скользящая средняя)
Снимок.PNG

Редактировалось 2 раз(а), последний 2021-07-31 10:11:26
карма: 0

0
Ответов: 194
Рейтинг: 27
#39: 2021-07-31 10:12:46 ЛС | профиль | цитата
Pavel писал(а):
На этом скрине каждая точка = равна сделке ( покупке или продаже ), а вот цвет: покупка = зеленый, продажа = красный.

Странно. Я почему-то думал, что любая сделка — это когда один продаёт, а другой покупает.
Тогда возникает вопрос, как определить какая сделка продажа, а какая покупка?
И что делать с объёмом сделки?
Ответ биржи:
"e": "trade", // Event type
"E": 123456795, // Event time
"s": "BNB_BTC", // Symbol
"t": "12348", // Trade ID
"p": "0.001", // Price
"q": "100", // Quantity
"b": "88", // Buyer order ID
"a": "52", // Seller order ID
"T": 123456795, // Trade time

Редактировалось 1 раз(а), последний 2021-08-01 13:56:35
карма: 5

0
Ответов: 39
Рейтинг: 1
#40: 2021-07-31 11:06:13 ЛС | профиль | цитата
Gunta, Допустим у тебя на счёту было 0 монет, ты купил одну, у тебя стала одна монета, это будет считаться покупкой.
Продажа это когда у тебя была на счёту одна монета ты ее продал и у тебя осталось ноль монет. (грубо говоря по цвету сделки можно определить кто инициатор сделки продавец или покупатель )

По их ID можно определить какая сделка произошла, если ID "b": "88", // Buyer order ID изменилось относительно предыдущей сделки то
произошла покупка, если "a": "52", // Seller order ID изменилось относительно предыдущей сделки то
произошла продажа, если обе то произошла равноценная покупка и продажа.

Покупка:

"b": "88", // Buyer order ID____"b": "89", // Buyer order ID
"a": "52", // Seller order ID____"a": "52", // Seller order ID

Продажа:

"b": "88", // Buyer order ID____"b": "88", // Buyer order ID
"a": "52", // Seller order ID____"a": "53", // Seller order ID


Покупка=продажа:

"b": "88", // Buyer order ID____"b": "89", // Buyer order ID
"a": "52", // Seller order ID____"a": "53", // Seller order ID

--- Добавлено в 2021-07-31 11:21:19

А вот здесь стрелки указывают на объём "стакана" заявки покупки или продажи, смысл цвета тот-же.
Снимок.PNG

Редактировалось 7 раз(а), последний 2021-07-31 13:05:22
карма: 0

0
Ответов: 8695
Рейтинг: 806
#41: 2021-08-01 00:07:19 ЛС | профиль | цитата
Pavel, вот с использованием OpenGL на 600 точек (масштаб колёсиком, перемещение ползунками, до 64 строк/сек).
И не забываем, что есть ось "Z", по которой можно положить несколько графиков.
GL


Add(MainForm,15261923,196,112)
{
Left=20
Top=20
Width=600
Height=454
Caption="КартинкаGL"
Point(onMouseWheel)
link(onCreate,16313935:doWork1,[])
link(onMouseWheel,8435041:doScale,[(235,139)(235,384)])
}
Add(StrList,1458062,357,126)
{
}
Add(Image,8168712,385,252)
{
Left=20
Top=61
Width=562
Height=355
ViewStyle=4
Point(Handle)
Point(MouseX)
Point(MouseY)
Point(onMouseUp)
Point(onMouseDown)
Point(onMouseMove)
link(Bitmap,5213144:Bitmap,[])
link(onMouseUp,14362898:doWork1,[])
link(onMouseDown,14362898:doWork2,[])
link(onMouseMove,5339163:doCompare,[(431,279)(431,307)])
}
Add(ChanelToIndex,14362898,441,259)
{
link(onIndex,9790564:doValue,[])
}
Add(Memory,9790564,490,259)
{
Default=Integer(0)
}
Add(If_else,5339163,490,301)
{
Op2=Integer(1)
link(onTrue,8435041:doMouse,[(529,307)(529,342)(375,342)(375,370)])
link(Op1,9790564:Value,[])
}
Add(MultiElementEx,8435041,385,364)
{
link(Array,1458062:Array,[(391,313)(377,313)])
link(Handle,8168712:Handle,[])
link(CoordX,8168712:MouseX,[])
link(CoordY,8168712:MouseY,[])
link(TranslateX,14456561:Result,[(419,348)(487,348)])
link(TranslateY,6533203:Result,[(426,355)(566,355)])
link(onEnd,3471472:doEvent1,[])
}
BEGIN_SDK
Add(EditMultiEx,11996247,14,7)
{
WorkCount=#7:doMouse|5:doJMG|7:doScale|
EventCount=#5:onEnd|
DataCount=#5:Array|6:Handle|6:CoordX|6:CoordY|10:TranslateX|10:TranslateY|
Width=832
Height=284
VOffset=35
HOffset=155
link(doMouse,4735359:doValue,[(179,48)(179,55)(214,55)(214,62)])
link(doJMG,14325692:doEvent1,[(39,55)(39,153)])
link(doScale,14855729:doCalc,[(207,62)(207,76)(305,76)(305,55)])
}
Add(GL_Main,5754056,182,147)
{
Color=0
link(onInit,13520164:doInit,[])
link(onViewPort,1353664:doPerspective,[(237,160)(237,202)])
link(Handle,11996247:Handle,[(188,138)(174,138)(174,40)(182,40)])
}
Add(Timer,10100784,91,196)
{
Interval=10
Enable=1
link(onTimer,14974901:doEvent1,[])
}
Add(GL_GTools,5073611,182,196)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(Hub,14974901,133,196)
{
OutCount=6
link(onEvent1,5073611:doClear,[])
link(onEvent2,5073611:doPushMatrix,[])
link(onEvent3,6551869:doTranslate,[(158,216)(158,188)(284,188)(284,111)])
link(onEvent4,5073611:doPopMatrix,[(170,223)(170,216)])
link(onEvent5,5754056:doFlip,[(165,230)(165,167)])
link(onEvent6,11996247:onEnd,[(823,237)(823,48)])
}
Add(Hub,14325692,49,147)
{
OutCount=3
link(onEvent1,5754056:doInit,[])
link(onEvent2,5754056:doViewPort,[])
link(onEvent3,10100784:doTimer,[(81,167)(81,202)])
}
Add(GL_GluTools,13520164,245,147)
{
Texture=0
link(onInit,964847:doEnabled,[])
}
Add(GL_Light,137856,336,147)
{
Diffuse=65280
}
Add(GL_Options,964847,294,147)
{
Flag=2
link(onEvent,137856:doEnabled,[])
}
Add(MultiElement,14576462,245,105)
{
link(Data1,4735359:Value,[(251,96)(230,96)])
link(Data2,13577233:Value,[(258,96)(272,96)])
}
BEGIN_SDK
Add(EditMulti,11760529,10,10)
{
EventCount=1
WorkCount=1
DataCount=2
Width=223
Height=109
link(doWork1,5590513:doRotate,[(26,16)(26,62)])
}
Add(GL_Rotate,5590513,42,56)
{
Y=1
link(onRotate,346824:doRotate,[])
link(Angle,11760529:Data1,[(48,33)(16,33)])
}
Add(GL_Rotate,346824,119,56)
{
X=1
link(onRotate,11760529:onEvent1,[(196,62)(196,16)])
link(Angle,11760529:Data2,[(125,33)(23,33)])
}
END_SDK
Add(GL_Perspective,1353664,245,196)
{
Fovy=25
}
Add(Gl_Begin,11774056,504,105)
{
BlockType=2
link(onBegin,13350121:doEnum,[])
}
Add(GL_Vertex3D,11725528,700,189)
{
link(X,16709307:Result,[])
link(Y,6790657:Result,[(713,173)(748,173)])
link(Z,13083751:Result,[(720,180)(790,180)])
}
Add(Gl_End,13828792,609,147)
{
}
Add(ArrayEnum,13350121,560,105)
{
Type=1
link(onItem,7629252:doEvent1,[])
link(onEndEnum,13828792:doEnd,[(599,118)(599,153)])
link(Array,11996247:Array,[(566,34)(175,34)])
}
Add(Hub,7629252,609,105)
{
link(onEvent1,4749971:doSplit,[(634,111)(634,55)])
link(onEvent2,3118699:doColor,[(648,118)(648,195)])
}
Add(Math,6790657,742,126)
{
OpType=3
Op2=200
link(onResult,13083751:doOperation,[])
link(Op1,4749971:Part2,[(748,110)(713,110)])
link(Op2,7147964:Var2,[])
}
Add(Math,13083751,784,126)
{
OpType=3
Op2=15
link(Op1,4749971:Part3,[(790,103)(720,103)])
link(Op2,7147964:Var3,[(797,117)])
}
Add(GL_Color,3118699,658,189)
{
Color=16777215
link(onColor,11725528:doVertex,[])
link(Color,4749971:Part4,[(664,89)(727,89)])
}
Add(MultiStrPart,4749971,700,49)
{
Count=4
link(onSplit,16709307:doCalc,[(739,55)(739,97)(683,97)(683,132)])
}
Add(GetDataEx,7147964,749,112)
{
link(Data,10337216:Value,[])
}
Add(Memory,4735359,224,56)
{
Point(Data)
link(onData,13577233:doValue,[])
link(Data,11996247:CoordX,[(230,47)(189,47)])
}
Add(Memory,13577233,266,56)
{
Point(Data)
link(Data,11996247:CoordY,[(272,40)(196,40)])
}
Add(Memory,10337216,749,49)
{
Default=Integer(100)
}
Add(Gl_Scale,6749172,399,105)
{
X=1
Y=1
Z=1
link(onScale,15429184:doLineSize,[])
link(X,8649621:Var1,[(405,89)])
link(Y,8649621:Var2,[])
link(Z,8649621:Var3,[(419,89)])
}
Add(MathParse,14855729,406,49)
{
DataCount=1
MathStr="%0*exp(%1*0.00079425)"
Default=1
}
Add(GetDataEx,8649621,406,84)
{
link(Data,14855729:Result,[])
}
Add(GL_PrimSizes,15429184,455,105)
{
Size=2
link(onSize,11774056:doBegin,[])
}
Add(Gl_Translate,6551869,350,105)
{
X=1
Y=1
link(onTranslate,6749172:doScale,[])
link(X,11996247:TranslateX,[(356,26)(203,26)])
link(Y,11996247:TranslateY,[(363,19)(210,19)])
}
Add(MathParse,16709307,700,126)
{
MathStr="(%1-300)/%2"
link(onResult,6790657:doOperation,[])
link(X1,13350121:Index,[(706,117)(699,117)(699,145)(573,145)])
link(X2,7147964:Var1,[(713,117)])
}
END_SDK
Add(Button,14316988,266,196)
{
Left=5
Top=5
Width=75
Caption="Отобразить"
link(onClick,7488654:doEvent1,[])
}
Add(Bitmap,5213144,385,203)
{
HWidth=600
HHeight=400
Point(Width)
Point(Height)
Point(doCreate)
}
Add(Hub,7488654,322,196)
{
OutCount=4
link(onEvent1,1458062:doClear,[(347,202)(347,139)])
link(onEvent2,5213144:doCreate,[(368,209)(368,223)])
link(onEvent3,8168712:doLoad,[(361,216)(361,258)])
link(onEvent4,16313935:doWork2,[(347,223)(347,237)(256,237)(256,139)])
}
Add(ScrollBar,1983831,434,210)
{
Left=10
Top=45
Width=570
Min=-200
Page=10
link(onPosition,14456561:doOperation,[])
}
Add(ScrollBar,6625439,518,210)
{
Top=45
Width=20
Height=365
Min=-200
Page=10
Kind=1
link(onPosition,6533203:doOperation,[])
}
Add(Math,14456561,476,210)
{
OpType=3
Op2=50
}
Add(Math,6533203,560,210)
{
OpType=3
Op2=-50
}
Add(MultiElement,16313935,266,126)
{
@Hint=#31:Заполнение 600 случайнымх точек|32:Иммитация считывания поступающих|26:данных по команде блока GL|
link(onEvent1,1458062:doAdd,[])
link(onEvent2,8435041:doJMG,[(305,139)(305,377)])
link(onEvent3,1458062:doDelete,[])
}
BEGIN_SDK
Add(EditMulti,1486386,21,21)
{
EventCount=3
WorkCount=3
Width=405
Height=256
link(doWork1,3519740:doRandomize,[(185,27)(185,125)])
link(doWork2,14844364:doFor,[(53,34)(53,118)])
link(doWork3,6407052:doEvent1,[])
}
Add(FormatStr,111795,357,119)
{
DataCount=3
Mask="%1;%2;0;%3"
link(onFString,1486386:onEvent1,[(410,125)(410,27)])
link(Str1,14166143:Result,[(363,103)(279,103)(279,152)(132,152)])
link(Str2,10904136:Result,[(370,110)(349,110)(349,159)(293,159)])
link(Str3,12746096:Value,[])
}
Add(For,14844364,63,112)
{
End=599
link(onEvent,14092551:doWork2,[])
link(onStop,1486386:onEvent2,[(102,125)(102,34)])
}
Add(Random,3519740,196,112)
{
Min=-10
Max=10
Mode=1
link(onRandom,15210140:doEvent1,[])
}
Add(Memory,12746096,371,56)
{
}
Add(MathParse,10904136,287,119)
{
DataCount=1
MathStr="%1 + %0"
link(onResult,111795:doString,[])
}
Add(If_else,10620772,273,56)
{
Type=1
Op2=Integer(0)
link(onTrue,10160487:doData,[])
link(onFalse,16561591:doData,[])
}
Add(DoData,10160487,315,56)
{
Data=Integer(255)
link(onEventData,15162297:doWork2,[])
}
Add(DoData,16561591,322,63)
{
Data=Integer(65280)
link(onEventData,15162297:doWork3,[(361,69)])
}
Add(Hub,15210140,238,112)
{
link(onEvent1,10620772:doCompare,[(263,118)(263,62)])
link(onEvent2,10904136:doCalc,[])
}
Add(HubEx,15162297,357,56)
{
link(onEvent,12746096:doValue,[])
}
Add(Math,14166143,126,112)
{
OpType=1
Op2=300
link(onResult,3519740:doRandom,[])
}
Add(HubEx,14092551,105,112)
{
link(onEvent,14166143:doOperation,[])
}
Add(Hub,6407052,70,35)
{
link(onEvent1,14092551:doWork1,[(109,41)])
link(onEvent2,12024395:doData,[])
}
Add(DoData,12024395,126,42)
{
Data=Integer(0)
link(onEventData,1486386:onEvent3,[(417,48)(417,41)])
}
END_SDK
Add(Label,1034859,616,420)
{
Left=145
Top=10
}
Add(Hub,3471472,441,364)
{
link(onEvent1,16313935:doWork3,[(466,370)(466,405)(249,405)(249,146)])
link(onEvent2,10250351:doNext,[])
}
Add(Counter,10250351,525,371)
{
Max=999
}
Add(StrCat,4119005,574,420)
{
Str2=" строк/сек"
link(onStrCat,1034859:doText,[])
}
Add(Timer,14493765,448,420)
{
link(onTimer,1988639:doEvent1,[])
}
Add(DoData,5125283,525,420)
{
link(onEventData,4119005:doStrCat,[])
link(Data,10250351:Count,[])
}
Add(Hub,1988639,490,420)
{
link(onEvent1,5125283:doData,[])
link(onEvent2,10250351:doReset,[(515,433)(515,391)])
}

карма: 19

1
Голосовали:Pavel
Ответов: 194
Рейтинг: 27
#42: 2021-08-01 08:35:05 ЛС | профиль | цитата
Pavel, Вот мой вариант https://forum.hiasm.com/getfile/39274. Подцепил NTGraph.ocx. Сохрани всё в один каталог. Для регистрации библиотеки запусти батник. Цвет точек по тому принципу что ты описал выше. Время между сделками тоже реальное.
Есть большое НО! За 10 минут более миллиона точек! И как с этим бороться, не знаю.

Редактировалось 1 раз(а), последний 2021-08-01 08:36:45
карма: 5

0
файлы: 1Graph.zip [862.8KB] [59]
Ответов: 39
Рейтинг: 1
#43: 2021-08-01 12:27:35 ЛС | профиль | цитата
Леонид, С OpenGL не сталкивался, даже не смотрел эти компоненты... чтоб хотябы осмыслить схему, придется попытается вникнуть.
Но по ощущениям этот вариант вполне возможен, быстродействие хорошее, будем посмотреть.

Gunta, Ошибка

Снимок.PNG
1.PNG
карма: 0

0
Ответов: 194
Рейтинг: 27
#44: 2021-08-01 13:32:29 ЛС | профиль | цитата
Pavel писал(а):
Ошибка

У тебя нет связи между компонентами Time и DateConvertor.
Нет связи.PNG
Проверил свою схему в архиве, всё нормально. А у тебя даже точки нет.

--- Добавлено в 2021-08-01 13:53:39

Pavel, судя по тому как выглядит у тебя компонент StrList, ты давно не обновлял компоненты. Последняя версия репозитария 2346.

Редактировалось 1 раз(а), последний 2021-08-01 13:53:39
карма: 5

0
Ответов: 39
Рейтинг: 1
#45: 2021-08-01 14:34:53 ЛС | профиль | цитата
Gunta, обновил, ошибка осталась. ( Хиасм перезапускал, схему по новой добавил.)

Снимок.PNG

Редактировалось 1 раз(а), последний 2021-08-01 14:40:33
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)