機能
フィボナッチツール
フィボナッチツール
フィボナッチツールは、株価チャートのトレンド分析に使用されます。
機能
チャートタイプ
ユーザー操作機能
分析機能
設定
説明
フィボナッチツールは、株価チャートのトレンド分析に使用されます。範囲セレクタを使用すると、計算対象のデータ範囲を選択できます。
using System.Collections.Generic; using FinancialChartExplorer.Models; using Microsoft.AspNetCore.Mvc; namespace FinancialChartExplorer.Controllers { public partial class HomeController : Controller { public ActionResult FibonacciTool() { var model = BoxData.GetDataFromJson(); ViewBag.DemoSettingsModel = new ClientSettingsModel() { Settings = CreateFibonacciToolSettings() }; return View(model); } private static IDictionary<string, object[]> CreateFibonacciToolSettings() { var settings = new Dictionary<string, object[]> { {"Type", new object[]{"Arcs", "Fans", "Retracements", "Time Zones"}}, {"Uptrend", new object[]{"True","False"}}, {"Label Position", new object[]{"Bottom", "Center", "Left", "None", "Right", "Top"}}, {"Range Selector", new object[]{"False","True"}}, {"Start.X", new object[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "20", "25", "30", "35", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "55", "60"}}, {"Start.Y", new object[]{"15.12", "15.75", "16.12", "16.75", "17.12", "17.75", "18.12", "18.75", "19.12", "19.75", "20.12", "20.75", "21.12", "21.75", "22.12", "22.75", "23.12", "23.75", "24.12", "24.75", "25.12", "25.75"}}, {"End.X", new object[]{"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "45", "50", "51", "52", "53", "54", "55", "56", "57", "58", "60"}}, {"End.Y", new object[]{"15.10", "15.53", "16.10", "16.53", "17.10", "17.53", "18.10", "18.53", "19.10", "19.53", "20.10", "20.53", "21.10", "21.53", "22.10", "22.53", "23.10", "23.53", "24.10", "24.53", "25.10", "25.53"}}, {"StartX", new object[]{"-10", "-5", "-4", "-3", "-2", "-1", "0", "1", "2", "3", "4", "5", "10"}}, {"EndX", new object[]{"-10", "-5", "-4", "-3", "-2", "-1", "0", "1", "2", "3", "4", "5", "10"}} }; return settings; } } }
@model List<FinanceData> @{ ViewBag.DemoSettings = true; ClientSettingsModel demoSettingsModel = ViewBag.DemoSettingsModel; } <script type="text/javascript"> var seriesIndex; function hideOption(optionName) { var eleMenu = wijmo.getElement('#' + optionName.replace('.', '_').replace(/ /g, '')); if (eleMenu) { eleMenu.style.display = 'none'; } } function showOption(optionName, value, allowedValues) { var id = optionName.replace('.', '_').replace(/ /g, ''), labelText = optionName.replace('.', ' '), eleMenu = wijmo.getElement('#' + id), menu; if (eleMenu) { eleMenu.style.display = ''; } if (typeof (value) !== 'undefined') { menu = wijmo.Control.getControl('#' + id); if (menu) { menu.header = ' ' + labelText + ': ' + '<b>' + value + '</b>'; if (allowedValues && allowedValues.length > 0) { var items = []; allowedValues.forEach(function (item) { items.push({ Header: item, CommandParameter: item }); }); menu.itemsSource = items; } } } } function showSeries(chart, index) { for (var i = 1; i < chart.series.length; i++) { chart.series[i].visibility = (i == index) ? wijmo.chart.SeriesVisibility.Visible : wijmo.chart.SeriesVisibility.Hidden; } } function updateType(chart, value) { if (value !== 'Retracements') customChangeRangeSelector(chart, 'False'); var series; switch (value) { case 'Arcs': seriesIndex = 2; series = chart.series[seriesIndex]; showOption('Label Position', wijmo.chart.LabelPosition[series.labelPosition], ['Top', 'Center', 'Bottom', 'None']); showOption('Start.X', series.start.x); showOption('Start.Y', series.start.y); showOption('End.X', series.end.x); showOption('End.Y', series.end.y); hideOption('StartX'); hideOption('EndX'); hideOption('Range Selector'); hideOption('Uptrend'); showSeries(chart, seriesIndex); break; case 'Fans': seriesIndex = 3; series = chart.series[seriesIndex]; showOption('Label Position', wijmo.chart.LabelPosition[series.labelPosition], ['Top', 'Center', 'Bottom', 'None']); showOption('Start.X', series.start.x); showOption('Start.Y', series.start.y); showOption('End.X', series.end.x); showOption('End.Y', series.end.y); hideOption('StartX'); hideOption('EndX'); hideOption('Range Selector'); hideOption('Uptrend'); showSeries(chart, seriesIndex); break; case 'Retracements': seriesIndex = 1; series = chart.series[seriesIndex]; rs = c1.getExtender(chart, 'RangeSelector'), showOption('Label Position', wijmo.chart.LabelPosition[series.labelPosition], ['Left', 'Center', 'Right', 'None']); showOption('Uptrend', series.uptrend ? 'True' : 'False'); showOption('Range Selector', rs.isVisible ? 'True' : 'False'); hideOption('Start.X'); hideOption('Start.Y'); hideOption('End.X'); hideOption('End.Y'); hideOption('StartX'); hideOption('EndX'); showSeries(chart, seriesIndex); break; case 'Time Zones': seriesIndex = 4; series = chart.series[seriesIndex]; showOption('Label Position', wijmo.chart.LabelPosition[series.labelPosition], ['Left', 'Center', 'Right', 'None']); showOption('StartX', series.startX); showOption('EndX', series.endX); hideOption('Start.X'); hideOption('Start.Y'); hideOption('End.X'); hideOption('End.Y'); hideOption('Range Selector'); hideOption('Uptrend'); showSeries(chart, seriesIndex); break; } } function rangeChanged(sender, args) { var chart = wijmo.Control.getControl('#' + '@(demoSettingsModel.ControlId)'), rs = c1.getExtender(chart, 'RangeSelector'); if (!chart || !rs) { return; } chart.beginUpdate(); chart.series[1].minX = rs.min; chart.series[1].maxX = rs.max; chart.endUpdate(); } function customChangeUptrend(control, value) { var series = control.series[seriesIndex]; if (series) { series.uptrend = (value === 'True'); } } function customChangeLabelPosition(control, value) { var series = control.series[seriesIndex]; if (series) { series.labelPosition = wijmo.chart.LabelPosition[value]; } } function customChangeRangeSelector(control, value) { var rs = c1.getExtender(control, 'RangeSelector'); if (rs) { rs.isVisible = (value === 'True'); } } function customChangeStart_X(control, value) { var series = control.series[seriesIndex]; if (series) { series.start = new wijmo.chart.DataPoint(parseFloat(value), series.start.y); } } function customChangeStart_Y(control, value) { var series = control.series[seriesIndex]; if (series) { series.start = new wijmo.chart.DataPoint(series.start.x, parseFloat(value)); } } function customChangeEnd_X(control, value) { var series = control.series[seriesIndex]; if (series) { series.end = new wijmo.chart.DataPoint(parseFloat(value), series.end.y); } } function customChangeEnd_Y(control, value) { var series = control.series[seriesIndex]; if (series) { series.end = new wijmo.chart.DataPoint(series.end.x, parseFloat(value)); } } function customChangeStartX(control, value) { var series = control.series[seriesIndex]; if (series) { series.startX = parseFloat(value); } } function customChangeEndX(control, value) { var series = control.series[seriesIndex]; if (series) { series.endX = parseFloat(value); } } c1.documentReady(function () { var chart = wijmo.Control.getControl('#' + '@(demoSettingsModel.ControlId)'); if (chart) { updateType(chart, 'Arcs'); } }); </script> <c1-financial-chart id="@demoSettingsModel.ControlId" symbol-size="6" binding-x="X" chart-type="Candlestick"> <c1-items-source source-collection="@Model"></c1-items-source> <c1-financial-chart-series binding="High,Low,Open,Close" name="BOX"></c1-financial-chart-series> <c1-flex-chart-fibonacci binding="Close" uptrend="true" label-position="Left"></c1-flex-chart-fibonacci> <c1-flex-chart-fibonacci-arcs binding="Close" start="new DataPoint(46, 19.75)" end="new DataPoint(54, 17.10)" label-position="Top"></c1-flex-chart-fibonacci-arcs> <c1-flex-chart-fibonacci-fans binding="Close" start="new DataPoint(10, 18.12)" end="new DataPoint(32, 20.53)" label-position="Top"></c1-flex-chart-fibonacci-fans> <c1-flex-chart-fibonacci-time-zones binding="Close" start-x="0" end-x="3"></c1-flex-chart-fibonacci-time-zones> <c1-range-selector id="RangeSelector" seamless="true" is-visible="false" range-changed="rangeChanged"></c1-range-selector> </c1-financial-chart> @section Description{ <p>@Html.Raw(Home.FibonacciTool_Text0)</p> } @section Summary{ <p>@Html.Raw(Home.FibonacciTool_Text1)</p> }