์ต์๋์ธ์ด ๋ญ๋๋ฉด, ๋ฉ๋ชจ์ฅ ์งํ๋ฒ์ ์. ์ฌ์ง๋ฃ๊ณ ํ๋ ๊ฐ์กฐํ์๊ฐ์๊ฑฐ ๋ฃ์ ์ ์๋๊ฑฐ๊ณ ํ๋ฌ๊ทธ์ธ ์ฌ์ฉํด์ ํ์ฅ๊ฐ๋ฅํจ.
ํ์ผ ํํ๋ก ์ ์ฅํ๋๊ฑฐ๊ณ , ๋ค๋ฅธ ๊ธฐ๊ธฐ์์๋ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋๊ธฐํ๋ ์๋์ผ๋ก ํด์ค์ผํจ.
์ต์๋์ธ์ ์ด ์์ฌ๊ฐ ์ ์ค๋ช ํด๋จ์ผ๋ ์ฐธ๊ณ ํ๊ณ
https://gall.dcinside.com/mgallery/board/view?id=chartanalysis&no=4532257
1. ๋ค์ด๋ก๋
Download - ObsidianObsidian is available on all major platforms. Download Obsidian for iOS, Android, macOS, Windows and Linux.obsidian.md๊ธฐ๋ณธ์ ์ผ๋ก ํผ์์์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ฑํจ. ๋ชจ๋ฐ์ผ์ ๋ถํธํจ....
2. ํ๋ฌ๊ทธ์ธ ์ค์น
์ค๋ ๊ณต์ ํ ํ ํ๋ฆฟ์ ํ์ํ ํ๋ฌ๊ทธ์ธ๋ค์ด๊ณ ์ํ๋ ํ๋ฌ๊ทธ์ธ ์์ผ๋ฉด ์ค์นํด๋ ๋
์ค์นํ๊ณ ํ์ฑํ๊น์ง ํด์ฃผ์
3. ์ผ์ง ํ ํ๋ฆฟ
ํ ํ๋ฆฟ ํด๋(์๋ฌด์ด๋ฆ์ด๋ ์๊ด์์)๋ฅผ ๋ง๋ค๊ณ ์๋ก์ด ๋ฉ๋ชจ ์์ฑํด์ ๋ค์ ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ (์ปจํธ๋กค+์ฌํํธ+V๋ก ๋ถ์ฌ๋ฃ์ด์ผ์ง ์ ๋๋ก ๋ค์ด๊ฐ)
---
date: <% tp.date.now("YYYY-MM-DD") %>
tickers:
start_balance: <% tp.system.prompt("์์ ์๊ณ ") %>
end_balance:
transfer:
position_count:
---
# PNL
`= default(number(this.end_balance), 0) - default(number(this.start_balance), 0) - default(number(this.transfer), 0)`
4. ์ค์ ๋ณ๊ฒฝ
์ด๋ฏธ์ง ์ ์ฅํด๋ ๋ณ๊ฒฝ - ์ผ์ง ์ฐ๋ฉด์ (์๋ํค+์ฌํํธ+S)๋ก ์บก์ณํ๊ณ ๋ถ์ฌ๋ฃ๊ธฐ๋ก ์ด๋ฏธ์ง ๋ฐ๋ก ๋ฃ์ด๋ฒ๋ฆด ์ ์๋๋ฐ, ์ด ์ด๋ฏธ์ง ํ์ผ์ด ์ ์ฅ๋ ํด๋ ์ค์
ํ ํ๋ฆฟ ์ ์ฅ๋ ํด๋ ์ค์ .
5. ์ผ์ผ ๋ ธํธ ์์ฑ
์ฑ๋ฆฐ์ง ํด๋์ ์ ๋ ธํธ -> ์ ๋ชฉ์ ์ค๋๋ ์ง yyyy-mm-dd ํ์์ผ๋ก ์ ๋ ฅ
6. ๋์๋ณด๋ ์ธํ
! ๋์๋ณด๋ (๋๋ ์๋ฌด์ด๋ฆ์ด๋) ๋ฉ๋ชจ ์์ฑ ํ ๋ค์ ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ, ์ด๊ฒ๋ ์ปจํธ๋กค+์ฌํํธ+V๋ก ๋ถ์ฌ๋ฃ์ด์ผ์ง ์ ๋๋ก ๋ค์ด๊ฐ.ย
ํ๋ ์์ ํด์ค์ผํ ๊ฒ ๋ฐ๋ก๋ฐ์ "๋ฐฑ๋ถ์ฑ" ๋ถ๋ถ์ธ๋ฐ, ์ด๊ฒ๋ง ์ฑ๋ฆฐ์ง์ฉ ํด๋๋ช ์ผ๋ก ๊ต์ฒด
```dataviewjs
// 1. ๋ ์ง ํ์ ํํฐ๋ง ๋ฐ ๋ฐ์ดํฐ ์ ๋ ฌ
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
const pages = dv.pages('"๋ฐฑ๋ถ์ฑ"')
ย ย .where(p => dateRegex.test(p.file.name))
ย ย .sort(p => p.file.name);
const dates = [];
const endBalances = [];
const pnls = [];
// 2. ๋ฐ์ดํฐ ์ถ์ถ ๋ฐ PnL ์ค์๊ฐ ๊ณ์ฐ
for (let page of pages) {
ย ย dates.push(page.file.name);ย
ย ย const start = Number(page.start_balance) || 0;
ย ย const end = Number(page.end_balance) || 0;
ย ย const transfer = Number(page.transfer) || 0;
ย ย ย
ย ย // ์ฐจํธ ๋ ๋๋ง ์์ ์ PnL ์ง์ ๊ณ์ฐ
ย ย const dailyPnl = end - start - transfer;
ย ย ย
ย ย endBalances.push(end);
ย ย pnls.push(dailyPnl);
}
// 3. ๋ณตํฉ ์ฐจํธ(Line + Bar) ์ค์
const chartData = {
ย ย type: 'bar', // ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์ ๋ง๋ํ
ย ย data: {
ย ย ย ย labels: dates,
ย ย ย ย datasets: [
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย type: 'line',
ย ย ย ย ย ย ย ย label: '์ด ์์ฐ (๊ธฐ๋ง์๊ณ )',
ย ย ย ย ย ย ย ย data: endBalances,
ย ย ย ย ย ย ย ย backgroundColor: 'rgba(54, 162, 235, 0.2)',
ย ย ย ย ย ย ย ย borderColor: 'rgba(54, 162, 235, 1)',
ย ย ย ย ย ย ย ย borderWidth: 2,
ย ย ย ย ย ย ย ย tension: 0.2,
ย ย ย ย ย ย ย ย yAxisID: 'y' // ์ผ์ชฝ Y์ถ ์ฌ์ฉ
ย ย ย ย ย ย },
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย type: 'bar',
ย ย ย ย ย ย ย ย label: '๋น์ผ ์์ต (PnL)',
ย ย ย ย ย ย ย ย data: pnls,
ย ย ย ย ย ย ย ย // ์์ต(>0)์ด๋ฉด ๋ฏผํธ์, ์์ค(<=0)์ด๋ฉด ๋ถ์์
ย ย ย ย ย ย ย ย backgroundColor: pnls.map(p => p > 0 ? 'rgba(75, 192, 192, 0.6)' : 'rgba(255, 99, 132, 0.6)'),
ย ย ย ย ย ย ย ย borderColor: pnls.map(p => p > 0 ? 'rgba(75, 192, 192, 1)' : 'rgba(255, 99, 132, 1)'),
ย ย ย ย ย ย ย ย borderWidth: 1,
ย ย ย ย ย ย ย ย yAxisID: 'y1' // ์ค๋ฅธ์ชฝ Y์ถ ์ฌ์ฉ
ย ย ย ย ย ย }
ย ย ย ย ]
ย ย },
ย ย options: {
ย ย ย ย scales: {
ย ย ย ย ย ย y: {
ย ย ย ย ย ย ย ย type: 'linear',
ย ย ย ย ย ย ย ย display: true,
ย ย ย ย ย ย ย ย 'left',
ย ย ย ย ย ย ย ย title: { display: true, text: '์ด ์์ฐ' }
ย ย ย ย ย ย },
ย ย ย ย ย ย y1: {
ย ย ย ย ย ย ย ย type: 'linear',
ย ย ย ย ย ย ย ย display: true,
ย ย ย ย ย ย ย ย 'right',
ย ย ย ย ย ย ย ย title: { display: true, text: '๋น์ผ ์์ต' },
ย ย ย ย ย ย ย ย grid: { drawOnChartArea: false } // ๋๊ธ์ ๊ฒน์นจ ๋ฐฉ์ง
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
};
// ์ฐจํธ ๋ ๋๋ง
window.renderChart(chartData, this.container);
```
7. ์ฌ์ฉ
์์ ์๊ณ ๋ฅผ ์ ๋ ฅํ๋ฉด ํ ํ๋ฆฟ์ด ๋ถ๋ฌ์์ง
์ฌ๊ธฐ ์์์ ๋งค๋งคํ๊ฑฐ ๊ธฐ๋กํ๊ณ
end_balance์๋ ๋งค๋งค์ข ๋ฃ์ ์๊ณ , transfer์๋ ์ ์ถ๊ธ(์ ์ถ๊ธ์ ์์ผ๋ฉด ๋น์นธ ๋๋ 0) ๊ฐ ์ฑ์์ฃผ๋ฉด ๋.
์ฌ๊ธฐ๊น์ง ์ ๋ฐ๋ผ์๋ค๋ฉด ๋์๋ณด๋์์ ์ฝ๊ธฐ๋ชจ๋ (์ค๋ฅธ์ชฝ ์ ์ฑ ๋ชจ์)์ ๋๋ฅด๋ฉด ์ฐจํธ๊ฐ ๋์ด
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๋ญฃ
์ต์๋์ธ์ด ์๋ง ์ฌ์ฉํ๋ฉด ์ต๊ณ ์ ๋ฉ๋ชจ์ฅ ๋ง๋ค
์๋ฐ ์ด๊ฑฐ ๋ญ๋ผ๊ณ ํ๋๋ผ ๋ด ๋งค๋งค๋ฐ์ดํฐ ์ ๋ถ ๊ธฐ๋กํด์ ์ ๋ฆฌํด์ ์์น ๋ณด์ฌ์ฃผ๋๊ฑฐ ์๋๋ฐ ์ ๋์๋ ์ด๊ฑฐ ๋ฌด๋ฃ๋ก ์์
์ ๋๋ ๋น์ทํ ํ๋ก๊ทธ๋จ์? ๊ฒ์ํด๋ ์๋์ค๋ค
@์ฝ์์ ํธ๋ ์ด๋ฉ์ ๋