13
Follow
1
Followers
Về vấn đề biểu đồ thứ cấp của biểu đồ chiến lược
Created 2025-02-08 12:16:59 Updated 2025-02-10 09:42:02
4
754
Về vấn đề biểu đồ thứ cấp của biểu đồ chiến lược
Nội dung: Ngôn ngữ python, có thể tạo nhiều biểu đồ phụ không? Mong muốn các chỉ số tính toán khác nhau được hiển thị trên các biểu đồ phụ khác nhau, để dễ dàng phân tích. Hiện tại, biểu đồ chiến lược chỉ có một biểu đồ phụ, các chỉ số tính toán khác nhau trên biểu đồ phụ được vẽ trên một biểu đồ phụ, vì phạm vi giá trị của các chỉ số khác nhau rất lớn, nên khả năng nhìn thấy các đường cong rất kém.
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


