Czy można utworzyć wykres OHLC lub świeczkę z d3js lub wtyczkami zbudowanymi z jednego z nich lub z jego widelców? d3.js jest bardzo potężną biblioteką do tworzenia wykresów zbudowaną w javascript. Byłoby miło spersonalizować wykresy utworzone przy użyciu jej niesamowitych umiejętności.Używanie d3js do tworzenia wykresu świecowego lub ohlc
Odpowiedz
Spójrz na this example. Robi dokładnie to, co chcesz.
Aktualizacja: Powyższy link jest obecnie uszkodzony, ale @lakenen był tak miły, że zapewnia stałą wersję here.
Znalazłem ten i wygląda bardzo ładnie.
czy to nadal najlepszy sposób na zrobienie hloc? – SuperUberDuper
to nie działa obecnie – SuperUberDuper
Wiem, że to pytanie jest stare pytanie, ale spędziłem dużo czasu patrząc na przykład pracy w 2017 roku i okazało się bardzo niewiele.
Poniżej znajduje się działający format wykresu świecowego przy użyciu d3.js v4. Dane w poniższym kodzie to tablica, która w moim przypadku została przeniesiona z C# z tyłu.
var twoHundredDayCandleStickChart = [];
var width = 900;
var height = 500;
var margin = 50;
function min(a, b) { return a < b ? a : b; }
function max(a, b) { return a > b ? a : b; }
var y = d3.scaleLinear().range([height - margin, margin]);
var x = d3.scaleTime().range([margin, width - margin]);
//line for the sma
var line1 = d3.line()
.x(function (d) { return x(d["date"]); })
.y(function (d) { return y(d["sma"]); });
function buildChart(data) {
data.forEach(function (d) {
d.date = new Date(d.date);
d.high = +d.high;
d.low = +d.low;
d.open = +d.open;
d.close = +d.close;
d.sma = +d.sma;
});
var chart = d3.select("#divId")
.append("svg")
.attr("class", "chart")
.attr("width", width)
.attr("height", height);
y.domain([d3.min(data.map(function (x) { return x["low"]; })), d3.max(data.map(function (x) { return x["high"]; }))])
x.domain(d3.extent(data, function (d) { return d["date"]; }))
chart.selectAll("line.x")
.data(x.ticks(10))
.enter().append("line")
.attr("class", "x")
//.text(String)
.attr("x1", x)
.attr("x2", x)
.attr("y1", margin)
.attr("y2", height - margin)
.attr("stroke", "#ccc");
chart.selectAll("line.y")
.data(y.ticks(10))
.enter().append("line")
.attr("class", "y")
.attr("x1", margin)
.attr("x2", width - margin)
.attr("y1", y)
.attr("y2", y)
.attr("stroke", "#ccc");
chart.append("g")
.attr("transform", "translate(0," + 450 + ")") //need to change this 450 to a variable- it is how far down the axis will go
.attr("class", "xrule")
.call(d3.axisBottom(x))
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", function (d) {
return "rotate(-65)"
});
chart.selectAll("text.yrule")
.data(y.ticks(10))
.enter()
.append("text")
.attr("class", "yrule")
.attr("x", 0)
.attr("y", y)
.attr("dy", 0)
.attr("dx", 20)
.attr("text-anchor", "middle")
.text(String);
chart.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("x", function (d) { return x(d["date"]); })
.attr("y", function (d) { return y(max(d["open"], d["close"])); })
.attr("height", function (d) { return y(min(d["open"], d["close"])) - y(max(d["open"], d["close"])); })
.attr("width", function (d) { return 0.5 * (width - 2 * margin)/data.length; })
.attr("fill", function (d) { return d["open"] > d["close"] ? "red" : "green"; });
chart.selectAll("line.stem")
.data(data)
.enter().append("line")
.attr("class", "stem")
.attr("x1", function (d) { return x(d["date"]) + 0.25 * (width - 2 * margin)/data.length; })
.attr("x2", function (d) { return x(d["date"]) + 0.25 * (width - 2 * margin)/data.length; })
.attr("y1", function (d) { return y(d["high"]); })
.attr("y2", function (d) { return y(d["low"]); })
.attr("stroke", function (d) { return d.open > d.close ? "red" : "green"; });
chart.append("path")
.data([data])
.attr("d", line1)
.attr("class", "line")
.style("stroke", "white")
.attr("fill", "none")
.attr("stroke-width", 2);
}
techan.js robi to, czego potrzebujesz. Jak pokazano na ich stronie głównej:
Wizualny, wykres giełdowy (świecznik, OHLC, wskaźniki) i biblioteka analizy technicznej zbudowana na D3. Twórz interaktywne wykresy finansowe dla nowoczesnych i mobilnych przeglądarek.
Jest to kolejny przykład praca przez Andre Dumas pokazano here z przykładowym kodem. To było ostatnio aktualizowane 2017-07-07.
Tak naprawdę próbowałem się bawić z techanem i dowiedziałem się, że jeśli chcesz go dostosować, to może być prawie niemożliwe np. ich wskaźnik MACD ma 12,9, 26 zakodowane na stałe, nie mogę znaleźć sposobu na ustawienie koloru świecy, ponieważ nie są one prostymi "prostymi" itd. – kroe
- 1. d3js Redystrybucja etykiet wokół wykresu kołowego
- 2. Używanie Gstreamer lub ffmpeg do tworzenia klienta rtsp na Androidzie
- 3. D3js - zmiana pionowego wykresu słupkowego na poziomy Wykres słupkowy
- 4. Używanie Qt do rysowania wykresu sin (x)
- 5. Używanie PySide/PyQt do tworzenia aplikacji mobilnych
- 6. Używanie "by" do tworzenia wielu tytułów wykresów
- 7. Używanie Generics do tworzenia obiektu z interfejsem
- 8. Szyny: Używanie funkcji grupowania i tworzenia wykresów do utworzenia wykresu zbiorczego użytkownika
- 9. Używanie rsync do tworzenia kopii zapasowych MySQL
- 10. Używanie programu dub do tworzenia dokumentacji
- 11. Używanie MacRuby do tworzenia aplikacji na iPhone'a
- 12. Używanie JavaScript do "tworzenia" dokumentu Microsoft Word
- 13. Używanie iso do tworzenia VMware vmdk
- 14. Używanie ulotki do tworzenia mapy z obrazu
- 15. Narzędzie do tworzenia wykresu ASCII z zestawu wierzchołków i krawędzi?
- 16. Drzewo kwadratowe d3js
- 17. d3js dodaj div
- 18. schematy blokowe w d3js przy użyciu dagre-d3 lub colajs
- 19. Zmienić OHLC kod resample według nieaktualnych ostrzeżenia
- 20. d3js utworzyć układ sił ze stałymi węzłów
- 21. Używanie klauzul "where" do tworzenia typów opcjonalnych w arytmetykach Swift
- 22. Używanie fork w Ruby on Rails do tworzenia równoległego procesu
- 23. Używanie javascript substring() do tworzenia linku czytaj więcej
- 24. Używanie Xcode i Interface Builder do tworzenia widoków prototypowych
- 25. Używanie opencv do tworzenia obrazu panoramicznego z punktów 3d
- 26. Używanie mixpanelu do tworzenia niestandardowego pulpitu analitycznego dla użytkowników
- 27. d3js - Tworzenie wykresów typu Asterplot (przykład dołączony)
- 28. D3js w ramach aplikacji Java
- 29. Używanie Castle Windsor WcfFacility do tworzenia punktów końcowych klienta
- 30. Używanie JSON do tworzenia obiektu w Groovy/Grails
FYI, ten przykład wygląda teraz na uszkodzony. Próbuje uzyskać 'http: //mbostock.github.io/d3/d3.time.js? 1.25.0', który wydaje się już nie istnieć. – lakenen
Oto zaktualizowana wersja, która działa http://bl.ocks.org/8529857 – lakenen
Wow, dzięki za zauważenie i naprawę! Zaktualizuję odpowiedź. –