13
Follow
1
Followers
Em relação à questão do gráfico secundário do gráfico de estratégia
Created 2025-02-08 12:16:59 Updated 2025-02-10 09:42:02
4
754
Em relação à questão do gráfico secundário do gráfico de estratégia
O gráfico de estratégia atualmente tem apenas um subgráfico, e os diferentes indicadores de cálculo são mostrados em um subgráfico através de um plot. A visibilidade das curvas é fraca devido à grande diferença entre os valores dos indicadores.
Related Recommendations
Inventor Quant Workflow FAQ (Continuously Updated)Financial Magic Zone Global KOL RecruitmentFAQ Summary (Updating...)PINE Language Introductory Tutorial of FMZ QuantPrimary Tutorial of Strategy Writing with FMZ Quant Trading Platform (Must Read)Getting Started with FMZ Quant Trading Platform (Must Read)
Comment
All comments (4)
您可以参考这样设计。
javascript
var chartCfg = {
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: [{
type: 'candlestick',
name: 'BTC/USD',
id: 'primary',
data: [],
}, {
type: 'line',
name: 'RSI',
data: [],
yAxis: 1, // 绑定副图1
color: '#1a1a1c',
}, {
type: 'line',
name: 'RSI2',
data: [],
yAxis: 2, // 绑定副图2
color: '#ff5733',
}],
yAxis: [{
height: '50%', // 主图
resize: {
enabled: true
},
}, {
top: '55%', // 副图1(RSI)
height: '20%',
offset: 0,
opposite: true,
}, {
top: '80%', // 副图2(RSI2),避免与副图1重叠
height: '20%',
offset: 0,
opposite: true,
}],
};
function main() {
let c = Chart(chartCfg);
let preBarTime = 0;
while (true) {
var records = exchange.GetRecords();
if (records.length <= 0) {
continue;
}
var rsi = TA.RSI(records, 14);
for (let i = 0; i < records.length; i++) {
if (records[i].Time > preBarTime) {
if (i != 0) {
c.add(0, [records[i - 1].Time, records[i - 1].Open, records[i - 1].High, records[i - 1].Low, records[i - 1].Close], -1); // OHLC
c.add(1, [records[i - 1].Time, rsi[i - 1]], -1); // RSI
c.add(2, [records[i - 1].Time, rsi[i - 1]], -1); // RSI
}
c.add(0, [records[i].Time, records[i].Open, records[i].High, records[i].Low, records[i].Close]); // OHLC
c.add(1, [records[i].Time, rsi[i]]); // RSI
c.add(2, [records[i].Time, rsi[i]]); // RSI
preBarTime = records[i].Time;
} else if (records[i].Time == preBarTime) {
c.add(0, [records[i].Time, records[i].Open, records[i].High, records[i].Low, records[i].Close], -1); // OHLC
c.add(1, [records[i].Time, rsi[i]], -1); // RSI
c.add(2, [records[i].Time, rsi[i]], -1); // RSI
}
}
c.update(chartCfg)
Sleep(1000)
}
}
2 years ago
- 1


