13
Follow
1
Followers
戦略チャートのサブピクチャ問題について
タイトル: 策略図の副図の問題 内容: python言語,複数の副図を作成できますか? 異なる計算指標が異なる副図に表示されるようにしたい. 分析を容易にする. 現在,策略図は1つの副図のみで,副図の異なる計算指標をプロットで描画することで,すべて1つの副図に表示される. 各指標値域の範囲が非常に異なるため,各曲線の可視性は悪い.
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


