예스스탁
예스스탁 답변
2009-09-16 09:58:18
안녕하세요
예스스탁입니다.
1. 갭보정
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : MACDv(0), MACDs(0),upC(0),dnC(0),upMACD(0),dnMACD(0);
var : upC1(0),dnC1(0),upMACD1(0),DnMACD1(0),gap(0),sumgap(0),GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GC = C - sumGap; // 갭보정 종가
MACDv = ema(GC,shortPeriod)-ema(GC,longPeriod);
MACDs = ema(MACDv,Period);
if crossup(MACDv,MACDs) Then{
upC = gC;
upMACD = MACDv;
upC1 = upC[1];
upMACD1 = upMACD[1];
}
if CrossDown(MACDv,MACDs) Then{
dnC = gC;
DnMACD = MACDv;
dnC1 = dnC[1];
DnMACD1 = DnMACD[1];
}
if crossup(MACDv,MACDS) and upC < UPC1 and upMACD > upMACD1 Then
buy();
if CrossDown(MACDv,MACDS) and upC > UPC1 and dnMACD < dnMACD1 Then
Sell();
2. 참조종목이용+갭보정
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : MACDv(0,data2), MACDs(0,data2),upC(0,data2),dnC(0,data2),upMACD(0,data2),dnMACD(0,data2);
var : upC1(0,data2),dnC1(0,data2),upMACD1(0,data2),DnMACD1(0,data2),gap(0,data2),sumgap(0,data2),GC(0,data2);
if data2(date)!=data2(date[1]) then {
gap = data2(Open)-data2(Close[1]);
sumGap = sumGap+gap;
}
GC = data2(C) - sumGap; // 갭보정 종가
MACDv = ema(GC,shortPeriod)-ema(GC,longPeriod);
MACDs = ema(MACDv,Period);
if crossup(MACDv,MACDs) Then{
upC = gC;
upMACD = MACDv;
upC1 = upC[1];
upMACD1 = upMACD[1];
}
if CrossDown(MACDv,MACDs) Then{
dnC = gC;
DnMACD = MACDv;
dnC1 = dnC[1];
DnMACD1 = DnMACD[1];
}
if crossup(MACDv,MACDS) and upC < UPC1 and upMACD > upMACD1 Then
buy();
if CrossDown(MACDv,MACDS) and upC > UPC1 and dnMACD < dnMACD1 Then
Sell();
즐거운 하루되세요
> HI_coco 님이 쓴 글입니다.
> 제목 : 갭보정
> 갭보정하여 참조종목으로 사용할 수 있도록 수정부탁합니다.
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : MACDv(0), MACDs(0),upC(0),dnC(0),upMACD(0),dnMACD(0);
var : upC1(0),dnC1(0),upMACD1(0),DnMACD1(0);
MACDv = MACD(shortPeriod, longPeriod);
MACDs = ema(MACDv,Period);
if crossup(MACDv,MACDs) Then{
upC = C;
upMACD = MACDv;
upC1 = upC[1];
upMACD1 = upMACD[1];
}
if CrossDown(MACDv,MACDs) Then{
dnC = C;
DnMACD = MACDv;
dnC1 = dnC[1];
DnMACD1 = DnMACD[1];
}
if crossup(MACDv,MACDS) and upC < UPC1 and upMACD > upMACD1 Then
buy();
if CrossDown(MACDv,MACDS) and upC > UPC1 and dnMACD < dnMACD1 Then
Sell();