CRTIndicator๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋งค ๋ฐ ์ด์ต ์คํ ์์ค์ ์ค์ ํ๋ cBot์ ๋ง๋ค์์ต๋๋ค.
์์ด๋์ด๋ ์ด์ ์บ๋ค(CandleIndex๋ก ์ง์ ๋)์ CRT ๋ ๋ฒจ(๊ณ ๊ฐ, ์ค๊ฐ, ์ ๊ฐ)์ ์ฌ์ฉํ์ฌ ์๋ก์ด ๊ฑฐ๋์ ์์ ๋งค ๋ฐ ์ด์ต ์คํ์ ์ค์ ํ๋ ๊ฒ์
๋๋ค.
๋จ๊ณ:
- ์ผ๋ถ ์กฐ๊ฑด(ํ ์คํธ๋ฅผ ์ํด ๋งค๊ฐ๋ณ์๋ก ์ ์ํ ๊ฒ)์ ๋ฐ๋ผ ๊ฑฐ๋(๋งค์ ๋๋ ๋งค๋)๋ฅผ ์ฌ๋ cBot์ ๋ง๋ญ๋๋ค.
- CRTIndicator๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์บ๋ค(์ฌ์ฉ์๊ฐ ์ค์ ํ ์บ๋ค ์ธ๋ฑ์ค)์ ๋ ๋ฒจ์ ๊ฐ์ ธ์ต๋๋ค.
- ๋งค์ ๊ฑฐ๋์ ๊ฒฝ์ฐ, ์ฐธ์กฐ ์บ๋ค์ CRT ์ ๊ฐ์ ์์ ๋งค๋ฅผ, CRT ๊ณ ๊ฐ์ ์ด์ต ์คํ์ ์ค์ ํฉ๋๋ค.
- ๋งค๋ ๊ฑฐ๋์ ๊ฒฝ์ฐ, ์ฐธ์กฐ ์บ๋ค์ CRT ๊ณ ๊ฐ์ ์์ ๋งค๋ฅผ, CRT ์ ๊ฐ์ ์ด์ต ์คํ์ ์ค์ ํฉ๋๋ค.
ํ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง CRTIndicator๋ ๊ฐ ์บ๋ค์ ๋ํด ๋ ๋ฒจ์ ๊ณ์ฐํ๊ณ ํ์๋ง ํฉ๋๋ค.
cBot์์ ์ธ๋์ผ์ดํฐ์ ์ ๊ทผํ์ฌ ๊ด์ฌ ์๋ ํน์ ์บ๋ค์ ๊ฐ์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
cBot์ ์ค๊ณํด ๋ด ์๋ค:
๋งค๊ฐ๋ณ์:
- CandleIndex: ์ฌ์ฉํ ์ด์ ์บ๋ค (0 = ํ์ฌ, 1 = ์ด์ ๋ฑ)
- TradeType: ํ
์คํธ๋ฅผ ์ํด ๋งค์์ ๋งค๋ ์ค ์ ํํ ์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๊ฑฐ๋, ์ด๋ํ๊ท ๊ต์ฐจ์ ๊ฐ์ ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๊ฐ๋จํ ํ๊ธฐ ์ํด ๊ฑฐ๋ ์ ํ์ ์ ํํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ง๋ญ์๋ค.
ํ์ง๋ง ์ฃผ์: ์ค๊ฑฐ๋์์๋ ์ง์ ์กฐ๊ฑด์ ์ฌ์ฉํฉ๋๋ค. ํ์ฌ ํฌ์ง์ ์ด ์์ผ๋ฉด ํ์ฌ ์บ๋ค์์ ๊ฑฐ๋๋ฅผ ์ฌ๋ ๊ฐ๋จํ cBot์ ๋ง๋ค๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฐจํธ์ ์๊ฐ ํ๋ ์์์ ๊ฑฐ๋ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
cBot์ ๋จ๊ณ:
- ํฌ์ง์ ์ด ์ด๋ ค ์๋์ง ํ์ธํฉ๋๋ค. ์์ผ๋ฉด ์ด๊ธฐ๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
- ์ง์ ๋ CandleIndex(ํ์ฌ์ ์๋์ ์ธ ๊ณผ๊ฑฐ ์บ๋ค)์ ๋ํ CRTIndicator ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
- ๋งค์ ๊ฑฐ๋์ ๊ฒฝ์ฐ:
์์ ๋งค = ์ฐธ์กฐ ์บ๋ค์ CRT ์ ๊ฐ
์ด์ต ์คํ = ์ฐธ์กฐ ์บ๋ค์ CRT ๊ณ ๊ฐ - ๋งค๋ ๊ฑฐ๋์ ๊ฒฝ์ฐ:
์์ ๋งค = ์ฐธ์กฐ ์บ๋ค์ CRT ๊ณ ๊ฐ
์ด์ต ์คํ = ์ฐธ์กฐ ์บ๋ค์ CRT ์ ๊ฐ
ํ์ง๋ง ์ธ๋์ผ์ดํฐ๋ ๊ฐ ์ธ๋ฑ์ค๋ง๋ค ๊ณ์ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ์ ๋ CandleIndex ์คํ์
์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ธ๋ฑ์ค์ ๋ํด ๋์ผํ ๊ฐ์ ํ์ํ๊ณ ์์ต๋๋ค.
ํ์ง๋ง cBot์์๋ ์ง์ ๋ CandleIndex์ ๋ํด ํ์ฌ ์์ (๊ฐ์ฅ ์ต๊ทผ ์๋ฃ๋ ์บ๋ค)์์ ์ธ๋์ผ์ดํฐ์ ๋ ๋ฒจ์ ๊ฐ์ ธ์ค๊ณ ์ ํฉ๋๋ค.
์ค์: ์ธ๋์ผ์ดํฐ์ Calculate ๋ฉ์๋๋ ๊ฐ ์ธ๋ฑ์ค๋ง๋ค ํธ์ถ๋๋ฉฐ, ํ์ฌ ์ธ๋ฑ์ค์์ ์ฐธ์กฐ ์บ๋ค(์ธ๋ฑ์ค - CandleIndex)์ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
๋ฐ๋ผ์ ํน์ ๊ณผ๊ฑฐ ์บ๋ค์ CRT ๋ ๋ฒจ์ ์ป๊ณ ์ถ๋ค๋ฉด, ๊ทธ ์บ๋ค์ ์ธ๋ฑ์ค์์ ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ ์๋ฆฌ์ฆ๋ฅผ ์ฝ์ผ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ์ฃผ์: ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ์ ํ์ฌ ์ธ๋ฑ์ค์ ์ ๋ ฌ๋์ด ์์ต๋๋ค. ์ค์ ๋ก ์ธ๋์ผ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ฐ์ ๋ํด ๋์ผํ ๊ฐ์ ํ์ํฉ๋๋ค:
CRTHigh[index] = crtHigh; // crtHigh๋ (index - CandleIndex) ์บ๋ค์ ๊ณ ๊ฐ
๋ฐ๋ผ์ ์ธ๋ฑ์ค๊ฐ 100์ด๊ณ CandleIndex=1์ด๋ฉด, ์ธ๋ฑ์ค 99์ ๊ณ ๊ฐ๋ฅผ ๊ฐ์ ธ์ ์ธ๋ฑ์ค 100์ ํ์ํ๋ ๊ฒ์ ๋๋ค.
์ฆ, CandleIndex ๋ฐ ์ ์ ์บ๋ค์ ๋ํ CRT ๋ ๋ฒจ์ ์ํ๋ค๋ฉด ํ์ฌ ๋ฐ(์ธ๋ฑ์ค)์์ ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ์ ๊ฐ์ ธ์ค๋ฉด CandleIndex ๋ฐ ์ ์ ๋ ๋ฒจ์ ์ป์ ์ ์์ต๋๋ค.
ํ์ง๋ง cBot์์๋ OnBar ๋๋ OnTick์ ์คํํฉ๋๋ค. ๊ฐ์ฅ ์ต๊ทผ ์๋ฃ๋ ๋ฐ(์ธ๋ฑ์ค = MarketSeries.Close.Count - 2)์ ๊ด์ฌ์ด ์๊ณ , ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์บ๋ค์ (ํ์ฌ ์ธ๋ฑ์ค - CandleIndex)์ ๋๋ค.
๋๋ ์ธ๋์ผ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ฐธ์กฐ ์บ๋ค๊ณผ ๋์ผํ ์ธ๋ฑ์ค์์ ๋ ๋ฒจ์ ์ถ๋ ฅํ๋๋ก ํ ์ ์์ง๋ง, ๊ทธ๋ฌ๋ฉด ํ๋กฏ์ CandleIndex๋งํผ ์ด๋ํด์ผ ํฉ๋๋ค.
ํ์ง๋ง ํ์ฌ ์ธ๋์ผ์ดํฐ๋ ์ด์ ๋ฐ์ ๋ ๋ฒจ์ ํ์ฌ ๋ฐ์ ํ์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ฐ๋ผ์ CandleIndex=1์ด๋ฉด ๊ฐ ๋ฐ์์ ์ด์ ๋ฐ์ ๋ ๋ฒจ์ ํ์ํฉ๋๋ค.
cBot์์ ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ:
์ธ๋์ผ์ดํฐ๋ฅผ cBot์ ์ถ๊ฐํ ํ ๊ฐ์ฅ ์ต๊ทผ ๋ฐ(์ธ๋ฑ์ค = MarketSeries.Close.Count - 1)์ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด CandleIndex ๋ฐ ์ ์ ๋ ๋ฒจ์ ์ป์ ์ ์์ต๋๋ค.
์:
ํ์ฌ ๋ฐ ์ธ๋ฑ์ค = ๋ง์ง๋ง ๋ฐ (์ธ๋ฑ์ค = MarketSeries.Close.Count - 1)
์ด ์ธ๋ฑ์ค์์ ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ(CRTHigh[MarketSeries.Close.Count-1])์ (ํ์ฌ ์ธ๋ฑ์ค - CandleIndex) ๋ฐ์ ๊ณ ๊ฐ์
๋๋ค.
ํ์ง๋ง ์ธ๋์ผ์ดํฐ์ Calculate ๋ฉ์๋๋ ๊ฐ ๊ณผ๊ฑฐ ๋ฐ์ ์ ๋ฐ๋ง๋ค ํธ์ถ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ง์ง๋ง ๋ฐ์ ์ถ๋ ฅ ์๋ฆฌ์ฆ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ ๊ฐ์ต๋๋ค.
cBot ์ฝ๋๋ฅผ ์์ฑํด ๋ด ์๋ค:
๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋๋ค:
[Parameter("Candle Index", DefaultValue = 1, MinValue = 0)]
public int CandleIndex { get; set; }
[Parameter("Trade Type", DefaultValue = TradeType.Buy)]
public TradeType SelectedTradeType { get; set; }
[Parameter("Volume (Lots)", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
public double Volume { get; set; }
CRTIndicator ์ธ์คํด์ค๋ ์์ฑํฉ๋๋ค.
OnBar์ ๋จ๊ณ:
ํฌ์ง์
์ด ์์ผ๋ฉด, ํ์ฌ ๋ฐ์ ๋ํ ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ(์ด๋ CandleIndex ๋ฐ ์ ์ ๋ ๋ฒจ์ ํด๋น)์์ ์์ ๋งค์ ์ด์ต ์คํ์ ์ค์ ํ์ฌ ์ ํฌ์ง์
์ ์ฝ๋๋ค.
ํ์ง๋ง ์ฃผ์: ํ์ฌ ๋ฐ(๋ง์ง๋ง ๋ฐ)์ ๋ํ ์ธ๋์ผ์ดํฐ ์ถ๋ ฅ์ (ํ์ฌ ๋ฐ ์ธ๋ฑ์ค - CandleIndex)์ ๋ ๋ฒจ๋ก ์ค์ ๋ฉ๋๋ค. ํ์ง๋ง ์์ ์์ ์๋ ์ถฉ๋ถํ ๋ฐ๊ฐ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.