13
Follow
1
Followers
Относительно вторичного вопроса диаграммы стратегии
Created 2025-02-08 12:16:59 Updated 2025-02-10 09:42:02
4
754
Относительно вторичного вопроса диаграммы стратегии
Заголовок: Вопрос о подграфике стратегического графика Содержание: язык python, можно ли создать несколько подграфик? Хотелось бы, чтобы различные вычислительные показатели отображались на разных подграфиках, чтобы облегчить анализ. В настоящее время стратегический график имеет только один подграфик. Различные вычислительные показатели на подграфике отображаются на одном подграфике, из-за огромной разницы в диапазоне значений показателей, и видимость кривых очень плоха.
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


