حکمت عملی گراف لائنوں کی منطق کو آسان بنا دیا گیا ہے، اور آپ کو براہ راست پیکڈ افعال کو کال کر سکتے ہیں
JS ورژن کے برابر
جے ایس ورژن میں نقل کیا گیا
# Python 2/3 兼容版本 import time chart = None series = [] labelIdx = {} preBarTime = 0 preFlagTime = 0 preDotTime = {} cfg = { "tooltip" : { "xDateFormat" : "%Y-%m-%d %H:%M:%S, %A" }, "legend" : { "enabled" : True }, "plotOptions" : { "candlestick" : { "color" : "#d75442", "upColor" : "#6ba583" } }, "rangeSelector" : { "buttons" : [{ "type" : "hour", "count" : 1, "text" : "1h", }, { "type" : 'hour', "count" : 3, "text" : "3h" }, { "type" : "hour", "count" : 8, "text" : "8h" }, { "type" : "all", "text" : "All" }], "selected" : 2, "inputEnabled" : True }, "series" : series, } def GetCfg(): global cfg return cfg # 画水平线 def PlotHLine(value = None, label = None, color = None, style = None): global cfg, chart if ("yAxis" in cfg) == False : cfg.setdefault("yAxis", {"plotLines" : []}) elif ("plotLines" in cfg["yAxis"]) == False : cfg["yAxis"].setdefault("plotLines", []) obj = { "value" : value, "color" : color or "red", "width" : 2, "dashStyle" : style or "Solid", "label" : { "text" : label or "", "align" : "center" } } found = False for i in range(len(cfg["yAxis"]["plotLines"])) : if cfg["yAxis"]["plotLines"][i]["label"]["text"] == label : cfg["yAxis"]["plotLines"][i] = obj found = True if not found : cfg["yAxis"]["plotLines"].append(obj) if not chart : chart = Chart(cfg) chart.update(cfg) # 更新图表 else : chart.update(cfg) # 画K线 def PlotRecords(records, title = None): global labelIdx, series, preBarTime, chart if not chart : chart = Chart(cfg) chart.reset() if ("candlestick" in labelIdx) == False : cfg["__isStock"] = True seriesIdx = len(series) series.append({ "type" : "candlestick", "name" : "" if title == None else title, "id" : "primary", "data" : [] }) chart.update(cfg) labelIdx.setdefault("candlestick", seriesIdx) else : seriesIdx = labelIdx["candlestick"] if isinstance(records, dict) and ("Time" in records) == True : Bar = records if Bar["Time"] == preBarTime : chart.add(seriesIdx, [Bar["Time"], Bar["Open"], Bar["High"], Bar["Low"], Bar["Close"]], -1) elif Bar["Time"] > preBarTime : preBarTime = Bar.Time chart.add(seriesIdx, [Bar["Time"], Bar["Open"], Bar["High"], Bar["Low"], Bar["Close"]]) else : for i in range(len(records)) : if records[i]["Time"] == preBarTime : chart.add(seriesIdx, [records[i]["Time"], records[i]["Open"], records[i]["High"], records[i]["Low"], records[i]["Close"]], -1) elif records[i]["Time"] > preBarTime : preBarTime = records[i]["Time"] chart.add(seriesIdx, [records[i]["Time"], records[i]["Open"], records[i]["High"], records[i]["Low"], records[i]["Close"]]) return chart # 画指标线 def PlotLine(label, dot, Ntime = None): global labelIdx, chart, series, preDotTime if not chart : cfg.setdefault("xAxis", { "type" : "datetime" }) chart = Chart(cfg) chart.reset() if (label in labelIdx) == False : seriesIdx = len(series) preDotTime.setdefault(str(seriesIdx), 0) labelIdx[label] = seriesIdx series.append({ "type" : "line", "yAxis" : 0, "showInLegend" : True, "name" : label, "data" : [], "tooltip" : {"valueDecimals" : 5} }) chart.update(cfg) else : seriesIdx = labelIdx[label] if Ntime == None : Ntime = _N(time.time() * 1000, 0) if preDotTime[str(seriesIdx)] != Ntime : preDotTime[str(seriesIdx)] = Ntime chart.add(seriesIdx, [Ntime, dot]) else : chart.add(seriesIdx, [Ntime, dot], -1) return chart # 画标记 def PlotFlag(time, text, title, shape = "", color = ""): global chart, cfg, labelIdx, preFlagTime if not chart : chart = Chart(cfg) chart.reset() label = "flag" if (label in labelIdx) == False : seriesIdx = len(series) labelIdx[label] = seriesIdx series.append({ "type" : "flags", "onSeries" : "primary", "data" : [] }) chart.update(cfg) else : seriesIdx = labelIdx[label] obj = { "x" : time, "color" : color, "shape" : shape, "title" : title, "text" : text } if preFlagTime != time : preFlagTime = time chart.add(seriesIdx, obj) else : chart.add(seriesIdx, obj, -1) return chart # 设置图表标题 def PlotTitle(title, chartTitle = None): global cfg if ("subtitle" in cfg) == True : cfg["subtitle"] = {"text" : title} else : cfg.setdefault("subtitle", {"text" : title}) if chartTitle != None : if (title in cfg) == True : cfg["title"] = {"text" : chartTitle} else : cfg.setdefault("title", {"text" : chartTitle}) if chart : chart.update(cfg) # 导出函数 ext.GetCfg = GetCfg ext.PlotHLine = PlotHLine ext.PlotRecords = PlotRecords ext.PlotLine = PlotLine ext.PlotFlag = PlotFlag ext.PlotTitle = PlotTitle # 测试代码 def main(): isFirst = True while True: records = exchange.GetRecords() if records and len(records) > 0 : ext.PlotRecords(records, "BTC") if isFirst : ext.PlotFlag(records[-1]["Time"], "Start", "S") isFirst = False ext.PlotHLine(records[-1]["Close"], "Close") ticker = exchange.GetTicker() if ticker : ext.PlotLine("Last", ticker.Last) ext.PlotLine("buy", ticker.Buy + 10) ext.PlotTitle("Last" + str(ticker.Last)) Sleep(60000)
چرچلسیہیلو، میں پلاٹ فلیگ کو کال کر رہا ہوں، اور صفحہ کو تازہ کرنے کے بعد، میں اکثر ایک پینٹ فلیگ کھو دیتا ہوں، کیا اس کا کوئی حل ہے؟
چرچلسیبراہ کرم، کیا آپ ایک گراف میں کئی کٹر لائنیں جمع کر سکتے ہیں؟ مثال کے طور پر: بی ٹی سی کی کٹر لائن + ای ٹی ایچ کی کٹر لائن
m0606یہ ایک دو تہائی پیتھون کے ساتھ ہم آہنگ ڈرائنگ لائن کلاس لائبریری کی طرح لگتا ہے۔
lwc87استاد، کیا آپ کے پاس اس ٹیمپلیٹ فنکشن کا استعمال کرنے کا کوئی طریقہ ہے؟
ہورینکیا آپ کو اپنی مرضی کے مطابق ٹریڈنگ گراف مل سکتا ہے؟ کئی لائنوں کو ایک آئکن میں جمع کریں۔ مثال کے طور پر: بی ٹی سی قیمت لائن + ایل ٹی سی قیمت لائن + ایتھ قیمت لائن + کثیر کرنسیوں کی جامع قیمت لائن وغیرہ ، صرف کچھ لائنیں ایک ہی گراف پر دکھائی دیتی ہیں ، جیسے کہ کئی قیمت لائنیں ایک ہی گراف پر دکھائی دیتی ہیں۔
لوگاجی ہاں!
ایجاد کاروں کی مقدار - خواباوہ ، کچھ پیرامیٹرز غلط نہیں ہوسکتے ہیں۔
چرچلسیمسئلہ حل ہو گیا ہے، عنوانات کی تعداد محدود ہے، متن بھرپور ہو سکتا ہے، اور اس کے برعکس نہیں ہو سکتا، شکریہ
ایجاد کاروں کی مقدار - خوابایک نشان لگایا گیا ہے، جس کے بارے میں کہا جاتا ہے کہ اسے کبھی نہیں کھونا چاہئے۔ ایک نشان لگایا گیا ہے، اگر آپ اسے تبدیل نہیں کرتے ہیں تو ، یہ تبدیل نہیں ہوگا ، یہ طے شدہ ہے۔
ایجاد کاروں کی مقدار - خوابآپ نے اوپر دیئے گئے گراف میں صرف ایف ایم زیڈ کے صفحے پر اعداد و شمار کی تعداد کو نشان زد کیا ہے۔ اگر آپ کے پاس 100،000 اعداد و شمار ہیں تو ، آپ یہاں ہر صفحے پر 10،000 اعداد و شمار دکھانے کے لئے مقرر کرتے ہیں ، اور یہ 100،000 اعداد و شمار 10 صفحات دکھائے جائیں گے۔ یہ ترتیب آپ کے کوڈ ڈیزائن سے کوئی تعلق نہیں رکھتی ہے۔ یہ صرف ایف ایم زیڈ کے صفحے کی نمائش کا کنٹرول ہے۔
چرچلسیبراہ کرم یہاں فی صفحہ ڈیٹا کی حد کیا ہے؟ اگر میرا ڈیٹا اس حد سے زیادہ ہے تو میں اسے کیسے دکھاؤں؟ /upload/asset/245f7442dfa3212019b47.png
ایجاد کاروں کی مقدار - خوابتازہ ترین کثیر چارٹ لائنوں کی کلاسوں کو ڈرائنگ کر سکتے ہیں۔ یہ کلاسیں صرف ایک ہی ڈرائنگ کر سکتی ہیں۔
ایجاد کاروں کی مقدار - خوابٹیمپلیٹ میں اہم فنکشن مثال کے طور پر استعمال کیا جاتا ہے، آپ دیکھ سکتے ہیں.
ایجاد کاروں کی مقدار - خوابشکریہ آپ کی حمایت کے لئے۔ اگر آپ کے پاس کوئی سوال ہے تو تبصرہ کریں