예스스탁
예스스탁 답변
2025-06-17 10:22:14
안녕하세요
예스스탁입니다.
input : lengthMA_MACD(34), lengthSignal(9);
var: src(0), hi(0), lo(0), mi(0);
var: ema1(0), ema2(0), ema_zlema(0);
var: md(0), sb(0), HISTO(0);
// 1) 기준값
src = (High + Low + Close) / 3;
// 2) ZLEMA 계산
ema1 = ema(src, lengthMA_MACD);
ema2 = ema(ema1, lengthMA_MACD);
ema_zlema = ema1 + (ema1 - ema2);
// 3) 고가/저가 평균 (Wilder SMMA)
hi = IFF(IsNaN(hi[1]),
ma(High, lengthMA_MACD),
(hi[1] * (lengthMA_MACD - 1) + High) / lengthMA_MACD);
lo = IFF(IsNaN(lo[1]),
ma(Low, lengthMA_MACD),
(lo[1] * (lengthMA_MACD - 1) + Low) / lengthMA_MACD);
mi = (hi + lo) / 2;
// 4) Kiwoom 스타일 MD 계산
md = IFF(ema_zlema > hi,
ema_zlema - hi,
IFF(ema_zlema < lo,
ema_zlema - lo,
0));
// 5) Signal & Histogram
sb = ma(md, lengthSignal);
HISTO = md - sb;
if CrossDown(HISTO,0) Then
Sell("s");
if MarketPosition == -1 and CrossUp(HISTO,0) Then
ExitShort("sx");
즐거운 하루되세요
> 최태수 님이 쓴 글입니다.
> 제목 : 안녕하세요! 답변은 잘받았습니다. 한가지만 더 부탁드리겠습니다!
> 안녕하세요. 시스템트레이딩 코딩 부탁드립니다.
> 안녕하세요 담당자님 고생많으십니다.
input : lengthMA_MACD(34), lengthSignal(9);
var: src(0), hi(0), lo(0), mi(0);
var: ema1(0), ema2(0), ema_zlema(0);
var: md(0), sb(0), HISTO(0);
// 1) 기준값
src = (High + Low + Close) / 3;
// 2) ZLEMA 계산
ema1 = ema(src, lengthMA_MACD);
ema2 = ema(ema1, lengthMA_MACD);
ema_zlema = ema1 + (ema1 - ema2);
// 3) 고가/저가 평균 (Wilder SMMA)
hi = IFF(IsNaN(hi[1]),
Average(High, lengthMA_MACD),
(hi[1] * (lengthMA_MACD - 1) + High) / lengthMA_MACD);
lo = IFF(IsNaN(lo[1]),
Average(Low, lengthMA_MACD),
(lo[1] * (lengthMA_MACD - 1) + Low) / lengthMA_MACD);
mi = (hi + lo) / 2;
// 4) Kiwoom 스타일 MD 계산
md = IFF(ema_zlema > hi,
ema_zlema - hi,
IFF(ema_zlema < lo,
ema_zlema - lo,
0));
// 5) Signal & Histogram
sb = Average(md, lengthSignal);
HISTO = md - sb;
// 6) 시각화
Plot1(0, "ZeroLine", Gray);
Plot2(md, "PaulMACD", Red);
Plot3(sb, "Signal", Blue);
Plot4(HISTO, "Histogram", IFF(md > sb, Red, Blue));
이렇게 지표는 만드는데 성공을 해서 시각화 까지 잘 되었는데요
그 다음 시스템트레이딩으로 만드는데 어려움이 있어서요 ㅠ
-----------------------------------------------------------------------------------
소중한 답변 정말 감사합니다.한가지만 더 부탁드리겠습니다. 진입사이 임계치를 넣으니 진입횟수가 거의 없어서요 ㅠㅠ
1. 입력 변수
MA MACD Length: 34
Signal Length: 9
2. 지표 계산 방식
src = (High + Low + Close) / 3
ZLEMA = EMA(src, 34) + (EMA(src, 34) - EMA(EMA(src, 34), 34))
고가·저가에 대해 SMMA(34) 적용
hi = SMMA(High, 34)
lo = SMMA(Low, 34)
mid = (hi + lo) / 2
Paul MACD(md) 계산
pascal
복사
편집
md = IFF(ema_zlema > hi,
ema_zlema - hi,
IFF(ema_zlema < lo,
ema_zlema - lo,
0));
Signal(sb) 및 Histogram(HISTO)
pascal
복사
편집
sb = SMA(md, 9);
HISTO = md - sb;
3. 매매 로직
진입(Short)
md[1] > sb[1]인 상태에서 md < sb로 하향 교차할 때
주문: SellShort
청산(Cover)
md[1] < sb[1]인 상태에서 md > sb로 상향 교차할 때
주문: BuyToCover
진입은 paulmacd선이 시그널선을 하향교차할때
청산은 paulmacd선이 시그널선을 상향교차할때
진입사이 임계치를 제외하고 이렇게 부탁드리겠습니다. 감사합니다!