如何在quantstrat中实施“以开盘价在下一栏买入”?
这是我对maCross.R示例的实验。
添加prefer='Open'
RuleSignal
stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal',
arguments = list(sigcol="ma50.gt.ma200", sigval=TRUE, orderqty=100000, ordertype='market', orderside='long', prefer='Open'), type='enter')
stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal',
arguments = list(sigcol="ma50.lt.ma200", sigval=TRUE, orderqty=-100000, ordertype='market', orderside='long', prefer='Open'), type='exit')
Run Code Online (Sandbox Code Playgroud)订单以当前Open
价格生成,但在下一个栏执行Close
。
> orders <- getOrderBook(portfolio.st)
> head(orders)
Order.Qty Order.Price Order.Type Order.Side Order.Threshold Order.Status Order.StatusTime
2011-05-22 00:00:00 "0" NA "init" "long" "0" "closed" "2011-05-22"
2011-05-24 04:30:00 "1e+05" "1.61297" "market" "long" NA "closed" "2011-05-24 05:00:00"
2011-05-25 03:00:00 "-1e+05" "1.61523" "market" "long" NA "closed" …
Run Code Online (Sandbox Code Playgroud)我有一组季度数据。这是数组:
var dataGDP = [
{date: "Q1-2008", GDPreal: "2.8"},
{date: "Q2-2008", GDPreal: "0.6"},
{date: "Q3-2008", GDPreal: "-2.1"},
{date: "Q4-2008", GDPreal: "-4.3"},
{date: "Q1-2009", GDPreal: "-6.8"},
{date: "Q2-2009", GDPreal: "-6.3"},
{date: "Q3-2009", GDPreal: "-5"}
];
Run Code Online (Sandbox Code Playgroud)
我如何让这些日期像 2008 年第一季度、2008 年第二季度、2008 年第三季度一样显示在我的 X 轴上?我的 X 轴使用基于时间的刻度我不确定是否有办法解析这些日期,因为它们现在使用 d3.time.format。但是,如果我使用月份,例如 01/2008、04/2008...,我可以解析它们: parseDate = d3.time.format("%m/%Y").parse;
我应该将数组中的日期写为月份,然后编写一个函数将月份转换为季度吗?或者有没有办法将 Q1..ect 保留在数组中,因为它现在并解析日期?
我在R中绘制了一个带ggplot2的图,我希望y轴的标题出现在图的左上角.请考虑以下代码以获取默认行为:
require(ggplot2)
xy = data.frame(x=1:10, y=10:1)
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ylab("very long label")
Run Code Online (Sandbox Code Playgroud)
这将生成以下图表:
我想移动并旋转文本"非常长的标签".我可以使用theme()
函数做一些事情:
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ylab("very long label") +
theme(axis.title.y = element_text(angle = 0, vjust = 1.1, hjust = 10))
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
您可以看到我的目的地,但边距不正确 - 左边距太大,因为空间是为旋转标签保留的,而上边距对于文本而言太小.
我怎么能告诉ggplot我想在那个位置没有旋转的y轴标题,并为它保留适当的空间?
我正在使用dc.js来构建一个系列图表.我无法根据需要设置Y轴的开始和结束.有人可以建议如何实现从90而不是0开始的Y轴?理想情况下,我想将Y轴开始设置为数据值的最小值,并以数据值的最大值结束.
码:
d3.csv("data/compareData.txt", function(data) {
ndx = crossfilter(data);
runDimension = ndx.dimension(function(d) {return [+d3.time.format.iso.parse(d.timestamp), +d.meterid]; });
runGroup = runDimension.group().reduceSum(function(d) { return +d.voltagemagnitude*100; });
testChart
.width(768)
.height(480)
.chart(function(c) { return dc.lineChart(c).interpolate('basis'); })
.x(d3.time.scale().domain([1366621166000, 1366621179983]))
.y(d3.scale.linear().domain([90, 100]))
.brushOn(false)
.yAxisLabel("Measured Speed km/s")
.xAxisLabel("Run")
.elasticY(true)
.dimension(runDimension)
.group(runGroup)
.mouseZoomable(false)
.seriesAccessor(function(d) {return "PMU: " + d.key[1];})
.keyAccessor(function(d) {return +d.key[0];})
.valueAccessor(function(d) {return +d.value;})
.legend(dc.legend().x(350).y(350).itemHeight(13).gap(5).horizontal(1).legendWidth(140).itemWidth(70));
testChart.yAxis().tickFormat(function(d) {return d3.format(',d')(d);});
testChart.margins().left += 40;
dc.renderAll();
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用C3.js创建一个图表,但是有一个显示json数据的问题.
这是我的数据:
{StatsID: "1", label: "unique-visits", month: "2014-10", value: "17230"},
{StatsID: "2", label: "unique-visits", month: "2014-11", value: "17658"},
{StatsID: "3", label: "unique-visits", month: "2014-12", value: "15624"},
{StatsID: "4", label: "completes", month: "2014-10", value: "5323"},
{StatsID: "5", label: "completes", month: "2014-11", value: "6359"},
{StatsID: "6", label: "completes", month: "2014-12", value: "8216"},
{StatsID: "7", label: "quals", month: "2014-10", value: "552"},
{StatsID: "8", label: "quals", month: "2014-11", value: "318"},
{StatsID: "9", label: "quals", month: "2014-12", value: "332"}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一个折线图,其中每一行代表一个标签,图上的每个点都是一个值.这可能吗?在我将这些数据输入图表时,它只显示所有这些值中的一行.
谁能给我一个如何在 SVG 中垂直居中多行文本的示例?我用谷歌搜索,看到很多对对齐基线和主导基线e 的引用,但没有具体的例子供我查看。
例如,在下面的 SVG 中,TEXT 元素被其左上角锁定。文本在该 y 位置之后开始出现。如果我希望文本均匀分布在 y 位置的上方和下方,我需要做什么?
<text x="110" y="50" dy="0">
<tspan dy="0em" x="110" style="font-weight: bold; fill: rgb(74, 76, 77);">
<tspan x="110" dy="0em">This is my long quotation that will now wrap</tspan>
<tspan x="110" dy="1.1em">over multiple lines, maybe even two lines!</tspan>
<tspan x="110" dy="1.1em">Isn't that amazing?</tspan>
</tspan>
<tspan dy="1.5em" x="110" style="font-style: italic;">
Speaker, Speaker Description
</tspan>
</text>
Run Code Online (Sandbox Code Playgroud)
(我通过 D3 生成这个,如果有帮助的话)
我想在angular/javascript中创建一个词云.我已经看了一些现有的实现,比如https://www.jasondavies.com/wordcloud/#%2F%2Fwww.jasondavies.com%2Fwordcloud%2Fabout%2F和其他简单的单词云.
我对这些实现有一些问题:
有时候我希望能够在文本框周围绘制文字云,即在文字云的中心留下一些空间(矩形或圆形),如下图所示,在文本框周围绘制wordcloud而不重叠它.
有人可以建议任何链接或算法来研究.
(对于第二个要求,我尝试更改Jason davies提供的代码,将内部边界应用于单词云,但我无法)
我正在使用c3.js进行绘图,一切都按预期工作.
但是,我想从其他脚本访问API,即调用resize
等...
如果我使用:
var chart = c3.generate({ ... });
Run Code Online (Sandbox Code Playgroud)
然后我可以访问图表对象,它的API就像:
chart.resize();
Run Code Online (Sandbox Code Playgroud)
但是,如果我无法访问图表对象,因为它是另一个脚本,我可以获取HTML DOM元素(使用jQuery):
$(".c3").each(function(i, chart) {
// Here I want to do something like chart.resize();
// But chart is just the DOM reference, not the chart variable
// I need something like c3.get(chart)????
});
Run Code Online (Sandbox Code Playgroud)
但是chart
在循环中是一个DOM对象,而不是var chart
由c3.generate
.
我有什么想法可以得到这个对象?文档还没有完成;)
在DC.js github上,Lon Riesberg的股票市场选择策略被列为使用dc.js库的示例.
他能够对行进行颜色编码,如下图所示,我试图模仿它.
在这里查看我的代码:http://codepen.io/chriscruz/pen/myaWvR?edit = 101
特别是,我如何更改行的颜色,以便名称为"红色"的所有行都是红色,名称"蓝色"为蓝色,名称"白色"为白色.
使用Javascript:
items = [
{Id: "01", Name: "Red", Price: "1.00", Quantity: "1",TimeStamp:111},
{Id: "02", Name: "White", Price: "10.00", Quantity: "1",TimeStamp:222},
{Id: "04", Name: "Blue", Price: "9.50", Quantity: "10",TimeStamp:434},
{Id: "03", Name: "Red", Price: "9.00", Quantity: "2",TimeStamp:545},
{Id: "06", Name: "White", Price: "100.00", Quantity: "2",TimeStamp:676},
{Id: "05",Name: "Blue", Price: "1.20", Quantity: "2",TimeStamp:777}
];
var ndx = crossfilter(items);
var Dim = ndx.dimension(function (d) {return d.Name;})
dc.dataTable("#Table")
.width(250).height(800) …
Run Code Online (Sandbox Code Playgroud) javascript ×5
d3.js ×3
css ×2
dc.js ×2
r ×2
axis ×1
c3 ×1
c3.js ×1
date ×1
dom ×1
ggplot2 ×1
html ×1
jquery ×1
json ×1
mysql ×1
quantstrat ×1
svg ×1
word-cloud ×1
wordle-game ×1