커뮤니티
문의드립니다.
2011-05-28 13:16:03
656
글번호 39188
안녕하세요? 매번 큰 도움 주셔서 항상 감사하고 있습니다.
저번질문에서, KODEX200을 대상으로 한 현물포지션 로직의 반대방향으로
KODEX인버스 주문이 나가게 수식을 작성해달라고 부탁드렸고,
답변을 잘 받았습니다.
작성해주신 로직을 보고 정말 감탄했습니다. 이렇게 하면 되는구나..
그런데 실제 로직을 적용해보니, 결과가 다음과 같이 차이가 나더군요.
====================================================================
시스템 성능 보고서
거래내역
====================================================================
종목명(시스템명) : KODEX 200(Impuls System(일봉)-종합주가지수참조(13,12,26,9,5,5,8,25,65,60,130,45,0.0045,0.1))
주기(기간) : 일 (2010/02/22 ~ 2011/05/27)
진입일시 진입종류 진입명 진입가격(원)
청산일시 청산종류 청산명 청산가격(원)
2010/02/22 매수 _BuyNo1 21,760.00
2010/04/28 매수청산 EL_파라볼릭청산 22,925.00
2010/06/11 매수 _BuyNo1 22,060.00
2010/08/12 매수청산 EL_파라볼릭청산 22,655.00
2010/08/19 매수 _BuyNo1 23,290.00
2010/10/20 매수청산 EL_파라볼릭청산 23,925.00
2010/10/25 매수 _BuyNo1 24,895.00
2011/01/21 매수청산 EL_파라볼릭청산 27,715.00
2011/03/21 매수 _BuyNo1 26,955.00
2011/05/06 매수청산 EL_파라볼릭청산 28,810.00
====================================================================
시스템 성능 보고서
거래내역
====================================================================
종목명(시스템명) : KODEX 인버스(Impuls System(일봉)-종합주가지수참조(13,12,26,9,5,5,8,25,65,60,130,45,0.0045,0.1))
주기(기간) : 일 (2010/02/22 ~ 2011/05/27)
진입일시 진입종류 진입명 진입가격(원)
청산일시 청산종류 청산명 청산가격(원)
2010/02/22 매수 _BuyNo1 9,820.00
2010/09/06 매수청산 EL_파라볼릭청산 8,890.00
2010/09/06 매수 _BuyNo1 8,910.00
2010/09/29 매수청산 ExitLong 8,535.00
2010/09/29 매수 _BuyNo1 8,535.00
2010/10/25 매수청산 EL_파라볼릭청산 8,350.00
2010/10/25 매수 _BuyNo1 8,350.00
2010/12/07 매수청산 ExitLong 8,010.00
2010/12/07 매수 _BuyNo1 8,010.00
2010/12/29 매수청산 ExitLong 7,650.00
2010/12/29 매수 _BuyNo1 7,595.00
2011/01/27 매수청산 EL_파라볼릭청산 7,385.00
2011/03/21 매수 _BuyNo1 7,780.00
2011/04/21 매수청산 ExitLong 7,120.00
2011/04/21 매수 _BuyNo1 7,045.00
2011/05/27 평가 7,430.00
이렇게 차이나 나는 이유를 분석해주실시 있나요?
참고로 로직 원문 올립니다.
// KODEX200 참조 KODEX200 적용
Input : EmaLen(13), macd1(12), macd2(26), macd3(9), stoploss(5), len(5), mult(8), DiV(25);
input: LongEmaLen(65), Longmacd1(60), Longmacd2(130), Longmacd3(45);
var : emaV(0), MacdV(0), MacdS(0), MacdOsc(0);
var : mp(0), stopprice(0), LemaV(0), LmacdV(0), LmacdS(0), LmacdOsc(0);
emaV = data2(ema(C,EmaLen));
MacdV = data2(macd(macd1,macd2));
MacdS = data2(ema(MacdV,macd3));
MacdOsc = MacdV-MacdS;
LemaV = data2(ema(C,LongEmaLen));
LmacdV = data2(macd(Longmacd1,Longmacd2));
LmacdS = data2(ema(LmacdV,Longmacd3));
LmacdOsc = LmacdV-LmacdS;
If LemaV > LemaV[1] and LmacdOsc > LmacdOsc[1] then {
if emaV > emaV[1] and macdOsc > MacdOsc[1] Then
buy();
}
mp = marketposition;
#mp에 marketposition
if MP == 1 and MP[1] <> 1 then Begin
StopPrice = low - ma(range,4)*mult;
end;
If MP == 1 then begin
exitlong ("ExitLong", atstop,stopprice );
stopprice = stopprice +( low-stopprice )/Div;
end;
input : af(0.0045), maxaf(0.1);
var : parabolic(0);
parabolic = sar(af, maxaf);
if MarketPosition <> 0 then {
if c > parabolic Then
exitlong("EL_파라볼릭청산", ATSTOP, PARABOLIC);
}
그리고, 아래는 저번에 작성해주신 로직입니다.
Input : EmaLen(13), macd1(12), macd2(26), macd3(9), stoploss(5), len(5), mult(8), DiV(25);
input: LongEmaLen(65), Longmacd1(60), Longmacd2(130), Longmacd3(45);
input : af(0.0045), maxaf(0.1);
var : emaV(0,data2), MacdV(0,data2), MacdS(0,data2), MacdOsc(0,data2);
var : stopprice(0,data2), LemaV(0,data2), LmacdV(0,data2), LmacdS(0,data2), LmacdOsc(0,data2);
var : parabolic(0,data2),cond1(false,data2),va1(0,data2),va2(0,data2);
parabolic = data2(sar(af, maxaf));
emaV = data2(ema(C,EmaLen));
MacdV = data2(macd(macd1,macd2));
MacdS = data2(ema(MacdV,macd3));
MacdOsc = data2(MacdV-MacdS);
LemaV = data2(ema(C,LongEmaLen));
LmacdV = data2(macd(Longmacd1,Longmacd2));
LmacdS = data2(ema(LmacdV,Longmacd3));
LmacdOsc = data2(LmacdV-LmacdS);
cond1 = LemaV > LemaV[1] and LmacdOsc > LmacdOsc[1] and emaV > emaV[1] and macdOsc > MacdOsc[1];
if va1 == 0 and cond1[1] == true Then{
va1 = 1;
}
if va1 == 0 and cond1 == true Then
ExitLong();
if va1 == 1 and va1[1] == 0 then {
StopPrice = data2(low - ma(range,4)*mult);
}
If va1 == 1 then {
if data2(L) <= stopprice Then{
va1 = 0;
buy();
}
stopprice = stopprice+(data2(l)-stopprice)/Div;
}
if va1 == 1 then {
if data2(c[1]) > parabolic[1] and data2(L) <= parabolic[1] Then{
va1 = 0;
buy();
}
}
부탁 좀 드리겠습니다.
답변 1
예스스탁 예스스탁 답변
2011-05-30 11:52:04
안녕하세요
예스스탁입니다.
해당식 원문로직이 다릅니다.
이전글을 보시면 이전글에 올리신 원로직은 참조종목을 사용하지 않았습니다.
아래식을 변경해서 올려드린것입니다.
현재 원문으로 올리신식은 원문이 이전값을 참조하는 식입니다.
Input : EmaLen(13), macd1(12), macd2(26), macd3(9), stoploss(5), len(5), mult(8), DiV(25);
input: LongEmaLen(65), Longmacd1(60), Longmacd2(130), Longmacd3(45);
var : emaV(0), MacdV(0), MacdS(0), MacdOsc(0);
var : mp(0), stopprice(0), LemaV(0), LmacdV(0), LmacdS(0), LmacdOsc(0);
emaV = ema(C,EmaLen);
MacdV = macd(macd1,macd2);
MacdS = ema(MacdV,macd3);
MacdOsc = MacdV-MacdS;
LemaV = ema(C,LongEmaLen);
LmacdV = macd(Longmacd1,Longmacd2);
LmacdS = ema(LmacdV,Longmacd3);
LmacdOsc = LmacdV-LmacdS;
If LemaV > LemaV[1] and LmacdOsc > LmacdOsc[1] then {
if emaV > emaV[1] and macdOsc > MacdOsc[1] Then
buy();
}
mp = marketposition;
if MP == 1 and MP[1] <> 1 then Begin
StopPrice = low - ma(range,4)*mult;
end;
If MP == 1 then begin
exitlong ("ExitLong", atstop,stopprice );
stopprice = stopprice +( low-stopprice )/Div;
end;
input : af(0.002), maxaf(0.2);
var : parabolic(0);
parabolic = sar(af, maxaf);
if MarketPosition <> 0 then {
if c > parabolic Then
exitlong("EL_파라볼릭청산", ATSTOP, PARABOLIC);
}
즐거운 하루되세요
> 도시군인 님이 쓴 글입니다.
> 제목 : 문의드립니다.
>
안녕하세요? 매번 큰 도움 주셔서 항상 감사하고 있습니다.
저번질문에서, KODEX200을 대상으로 한 현물포지션 로직의 반대방향으로
KODEX인버스 주문이 나가게 수식을 작성해달라고 부탁드렸고,
답변을 잘 받았습니다.
작성해주신 로직을 보고 정말 감탄했습니다. 이렇게 하면 되는구나..
그런데 실제 로직을 적용해보니, 결과가 다음과 같이 차이가 나더군요.
====================================================================
시스템 성능 보고서
거래내역
====================================================================
종목명(시스템명) : KODEX 200(Impuls System(일봉)-종합주가지수참조(13,12,26,9,5,5,8,25,65,60,130,45,0.0045,0.1))
주기(기간) : 일 (2010/02/22 ~ 2011/05/27)
진입일시 진입종류 진입명 진입가격(원)
청산일시 청산종류 청산명 청산가격(원)
2010/02/22 매수 _BuyNo1 21,760.00
2010/04/28 매수청산 EL_파라볼릭청산 22,925.00
2010/06/11 매수 _BuyNo1 22,060.00
2010/08/12 매수청산 EL_파라볼릭청산 22,655.00
2010/08/19 매수 _BuyNo1 23,290.00
2010/10/20 매수청산 EL_파라볼릭청산 23,925.00
2010/10/25 매수 _BuyNo1 24,895.00
2011/01/21 매수청산 EL_파라볼릭청산 27,715.00
2011/03/21 매수 _BuyNo1 26,955.00
2011/05/06 매수청산 EL_파라볼릭청산 28,810.00
====================================================================
시스템 성능 보고서
거래내역
====================================================================
종목명(시스템명) : KODEX 인버스(Impuls System(일봉)-종합주가지수참조(13,12,26,9,5,5,8,25,65,60,130,45,0.0045,0.1))
주기(기간) : 일 (2010/02/22 ~ 2011/05/27)
진입일시 진입종류 진입명 진입가격(원)
청산일시 청산종류 청산명 청산가격(원)
2010/02/22 매수 _BuyNo1 9,820.00
2010/09/06 매수청산 EL_파라볼릭청산 8,890.00
2010/09/06 매수 _BuyNo1 8,910.00
2010/09/29 매수청산 ExitLong 8,535.00
2010/09/29 매수 _BuyNo1 8,535.00
2010/10/25 매수청산 EL_파라볼릭청산 8,350.00
2010/10/25 매수 _BuyNo1 8,350.00
2010/12/07 매수청산 ExitLong 8,010.00
2010/12/07 매수 _BuyNo1 8,010.00
2010/12/29 매수청산 ExitLong 7,650.00
2010/12/29 매수 _BuyNo1 7,595.00
2011/01/27 매수청산 EL_파라볼릭청산 7,385.00
2011/03/21 매수 _BuyNo1 7,780.00
2011/04/21 매수청산 ExitLong 7,120.00
2011/04/21 매수 _BuyNo1 7,045.00
2011/05/27 평가 7,430.00
이렇게 차이나 나는 이유를 분석해주실시 있나요?
참고로 로직 원문 올립니다.
// KODEX200 참조 KODEX200 적용
Input : EmaLen(13), macd1(12), macd2(26), macd3(9), stoploss(5), len(5), mult(8), DiV(25);
input: LongEmaLen(65), Longmacd1(60), Longmacd2(130), Longmacd3(45);
var : emaV(0), MacdV(0), MacdS(0), MacdOsc(0);
var : mp(0), stopprice(0), LemaV(0), LmacdV(0), LmacdS(0), LmacdOsc(0);
emaV = data2(ema(C,EmaLen));
MacdV = data2(macd(macd1,macd2));
MacdS = data2(ema(MacdV,macd3));
MacdOsc = MacdV-MacdS;
LemaV = data2(ema(C,LongEmaLen));
LmacdV = data2(macd(Longmacd1,Longmacd2));
LmacdS = data2(ema(LmacdV,Longmacd3));
LmacdOsc = LmacdV-LmacdS;
If LemaV > LemaV[1] and LmacdOsc > LmacdOsc[1] then {
if emaV > emaV[1] and macdOsc > MacdOsc[1] Then
buy();
}
mp = marketposition;
#mp에 marketposition
if MP == 1 and MP[1] <> 1 then Begin
StopPrice = low - ma(range,4)*mult;
end;
If MP == 1 then begin
exitlong ("ExitLong", atstop,stopprice );
stopprice = stopprice +( low-stopprice )/Div;
end;
input : af(0.0045), maxaf(0.1);
var : parabolic(0);
parabolic = sar(af, maxaf);
if MarketPosition <> 0 then {
if c > parabolic Then
exitlong("EL_파라볼릭청산", ATSTOP, PARABOLIC);
}
그리고, 아래는 저번에 작성해주신 로직입니다.
Input : EmaLen(13), macd1(12), macd2(26), macd3(9), stoploss(5), len(5), mult(8), DiV(25);
input: LongEmaLen(65), Longmacd1(60), Longmacd2(130), Longmacd3(45);
input : af(0.0045), maxaf(0.1);
var : emaV(0,data2), MacdV(0,data2), MacdS(0,data2), MacdOsc(0,data2);
var : stopprice(0,data2), LemaV(0,data2), LmacdV(0,data2), LmacdS(0,data2), LmacdOsc(0,data2);
var : parabolic(0,data2),cond1(false,data2),va1(0,data2),va2(0,data2);
parabolic = data2(sar(af, maxaf));
emaV = data2(ema(C,EmaLen));
MacdV = data2(macd(macd1,macd2));
MacdS = data2(ema(MacdV,macd3));
MacdOsc = data2(MacdV-MacdS);
LemaV = data2(ema(C,LongEmaLen));
LmacdV = data2(macd(Longmacd1,Longmacd2));
LmacdS = data2(ema(LmacdV,Longmacd3));
LmacdOsc = data2(LmacdV-LmacdS);
cond1 = LemaV > LemaV[1] and LmacdOsc > LmacdOsc[1] and emaV > emaV[1] and macdOsc > MacdOsc[1];
if va1 == 0 and cond1[1] == true Then{
va1 = 1;
}
if va1 == 0 and cond1 == true Then
ExitLong();
if va1 == 1 and va1[1] == 0 then {
StopPrice = data2(low - ma(range,4)*mult);
}
If va1 == 1 then {
if data2(L) <= stopprice Then{
va1 = 0;
buy();
}
stopprice = stopprice+(data2(l)-stopprice)/Div;
}
if va1 == 1 then {
if data2(c[1]) > parabolic[1] and data2(L) <= parabolic[1] Then{
va1 = 0;
buy();
}
}
부탁 좀 드리겠습니다.