커뮤니티
시스템식 수정 부탁....
2008-03-21 13:13:43
1256
글번호 15063
제가 두 종류 수식을, <수식1>은 선물1분봉차트에 바로 적용하였고, <수식2>는 선물1분봉차트를 참조종목으로 하고 선물1분봉차트를 주종목으로 하여 적용해 보았습니다.
그런데, 위 두 수식 모두 동일기간, 동일조건하에 시뮬레이션을 하면 결과가 동일해야 될 것 같은데 결과가 조금 차이가 나는데 왜 그럴까요?(참고로 BW_SEVEN는 사용자함수로 만들어져 있습니다.)
잘못된 부분이 있으면 지적해서 수정보완된 식 부탁드립니다.
메일 : aceace77@hanmail.net
<수식1>
--------------------------------------------------------------------
input: Period1(5), Period2(20), Period3(60), shortPeriod(12), longPeriod(26), Period(9), maPeriod(20),
ROCPeriod(10), stoPeriod1(10), stoPeriod2(6), CCIPeriod(10) ;
var: value(0);
value1 = ma(C, Period1);
value2 = ma(C, Period2);
value3 = ma(C, Period3);
value = BW_SEVEN(shortPeriod, longPeriod, Period, maPeriod, ROCPeriod, stoPeriod1, stoPeriod2, CCIPeriod ); //문장1
# 매수
If CrossUp(value,6) and value2 > value3 and CrossUP(value1, value2) and dayindex() > 0 Then
Buy("매수");
# 매수청산
If CrossDown(value1, value3) Then
exitlong("매수청산");
SetStopEndofday(1500);
--------------------------------------------------------------------
<수식2>
--------------------------------------------------------------------
input : S(6),S1(5),P1(5),P2(10),P3(20),P4(60),P5(120);
Input: shortPeriod(12), longPeriod(26), Period(9), maPeriod(20), ROCPeriod(12), stoPeriod1(5),
stoPeriod2(3), CCIPeriod(9);
var : Mav1(0,data2),Mav2(0,data2),Mav3(0,data2),Mav4(0,data2),Mav5(0,data2);
var: value(0,data2),BWSEVEN(0,data2);
if data2(macd(shortPeriod,longPeriod)) >= data2(ema(macd(shortPeriod,longPeriod),Period)) then
value = 1;
else
value = -1;
if data2(C) >= data2(ma(C, maPeriod)) then
value = value + 1;
else
value = value - 1;
if (data2(C) - data2(C[ROCPeriod])) / data2(C[ROCPeriod]) * 100 >= 0 then
value = value + 1;
else
value = value - 1;
if data2(StochasticsK(stoperiod1,stoPeriod2))>=50 then
value = value + 1;
else
value = value - 1;
if data2(CCI(CCIPeriod)) > 0 then
value = value + 1;
else
value = value - 1;
if data2(CO()) >=0 then
value = value + 1;
else
value = value - 1;
if data2(SAR(0.02,0.2)) < data2(C) then
value = value + 1;
else
value = value - 1;
BWSEVEN = value;
Mav1 = data2(ma(c,P1));
Mav2 = data2(ma(c,P2));
Mav3 = data2(ma(c,P3));
Mav4 = data2(ma(c,P4));
Mav5 = data2(ma(c,P5));
if Mav3 > mav4 and
crossup(mav1,mav3) and
crossup(BWSEVEN,S) and
dayindex() > 0 Then
buy("매수");
if CrossDown(mav1,mav4) Then
exitlong("매수청산");
SetStopEndofday(1500);
--------------------------------------------------------------------
답변 1
예스스탁 예스스탁 답변
2008-03-21 19:29:13
안녕하세요
예스스탁입니다.
사용자함수로 사용한 식과 지표에서 풀어쓴 식은 처음 계산하는 시점으로 인해
결과가 다른 경우가 있습니다.
아래 두 식을 차트에 적용하시고 차트의 제일 앞부분을 보시면 2개의 지표가 각각 지표가 그려지는 봉이 다른것을 보실 수 있습니다.
사용자 함수는 사용자함수내 식이 모두 계산되어 값을 리턴하는 시점부터 값을 반환하게 되고 풀어서 작성한 식은 계산되는 값들만 모아서 합산하여 반환하므로 값이 다르게 나타납니다.
풀어서 사용작성한 식을 사용하시기 바랍니다.
즐거운 하루되세요
##1번 함수
input: Period1(5), Period2(20), Period3(60), shortPeriod(12), longPeriod(26), Period(9), maPeriod(20),
ROCPeriod(10), stoPeriod1(10), stoPeriod2(6), CCIPeriod(10) ;
var: value(0);
value = BW_SEVEN(shortPeriod, longPeriod, Period, maPeriod, ROCPeriod, stoPeriod1, stoPeriod2, CCIPeriod ); //문장1
plot1(value);
###2번 풀어서 작성
input: Period1(5), Period2(20), Period3(60), shortPeriod(12), longPeriod(26), Period(9), maPeriod(20),
ROCPeriod(10), stoPeriod1(10), stoPeriod2(6), CCIPeriod(10) ;
var: value(0);
if ema(C,shortPeriod)-ema(C,longPeriod) >= ema(ema(C,shortPeriod)-ema(C,longPeriod),Period) then
value = 1;
else
value = -1;
if C >= ma(C, maPeriod) then
value = value + 1;
else
value = value - 1;
if (C - C[ROCPeriod]) / C[ROCPeriod] * 100 >= 0 then
value = value + 1;
else
value = value - 1;
if ema((C-lowest(L, stoPeriod1)) / (highest(H, stoPeriod1) - lowest(L, stoPeriod1)) * 100, stoPeriod2)>=50 then
value = value + 1;
else
value = value - 1;
if CCI(CCIPeriod) > 0 then
value = value + 1;
else
value = value - 1;
if ema(accum(((C -L)-(H- C))/ (H-L)*V), 3) - ema(accum(((C -L)-(H- C))/(H-L)*V), 10) >=0 then
value = value + 1;
else
value = value - 1;
if SAR(0.02,0.2) < C then
value = value + 1;
else
value = value - 1;
plot1(value);
> 송사범 님이 쓴 글입니다.
> 제목 : 시스템식 수정 부탁....
> 제가 두 종류 수식을, <수식1>은 선물1분봉차트에 바로 적용하였고, <수식2>는 선물1분봉차트를 참조종목으로 하고 선물1분봉차트를 주종목으로 하여 적용해 보았습니다.
그런데, 위 두 수식 모두 동일기간, 동일조건하에 시뮬레이션을 하면 결과가 동일해야 될 것 같은데 결과가 조금 차이가 나는데 왜 그럴까요?(참고로 BW_SEVEN는 사용자함수로 만들어져 있습니다.)
잘못된 부분이 있으면 지적해서 수정보완된 식 부탁드립니다.
메일 : aceace77@hanmail.net
<수식1>
--------------------------------------------------------------------
input: Period1(5), Period2(20), Period3(60), shortPeriod(12), longPeriod(26), Period(9), maPeriod(20),
ROCPeriod(10), stoPeriod1(10), stoPeriod2(6), CCIPeriod(10) ;
var: value(0);
value1 = ma(C, Period1);
value2 = ma(C, Period2);
value3 = ma(C, Period3);
value = BW_SEVEN(shortPeriod, longPeriod, Period, maPeriod, ROCPeriod, stoPeriod1, stoPeriod2, CCIPeriod ); //문장1
# 매수
If CrossUp(value,6) and value2 > value3 and CrossUP(value1, value2) and dayindex() > 0 Then
Buy("매수");
# 매수청산
If CrossDown(value1, value3) Then
exitlong("매수청산");
SetStopEndofday(1500);
--------------------------------------------------------------------
<수식2>
--------------------------------------------------------------------
input : S(6),S1(5),P1(5),P2(10),P3(20),P4(60),P5(120);
Input: shortPeriod(12), longPeriod(26), Period(9), maPeriod(20), ROCPeriod(12), stoPeriod1(5),
stoPeriod2(3), CCIPeriod(9);
var : Mav1(0,data2),Mav2(0,data2),Mav3(0,data2),Mav4(0,data2),Mav5(0,data2);
var: value(0,data2),BWSEVEN(0,data2);
if data2(macd(shortPeriod,longPeriod)) >= data2(ema(macd(shortPeriod,longPeriod),Period)) then
value = 1;
else
value = -1;
if data2(C) >= data2(ma(C, maPeriod)) then
value = value + 1;
else
value = value - 1;
if (data2(C) - data2(C[ROCPeriod])) / data2(C[ROCPeriod]) * 100 >= 0 then
value = value + 1;
else
value = value - 1;
if data2(StochasticsK(stoperiod1,stoPeriod2))>=50 then
value = value + 1;
else
value = value - 1;
if data2(CCI(CCIPeriod)) > 0 then
value = value + 1;
else
value = value - 1;
if data2(CO()) >=0 then
value = value + 1;
else
value = value - 1;
if data2(SAR(0.02,0.2)) < data2(C) then
value = value + 1;
else
value = value - 1;
BWSEVEN = value;
Mav1 = data2(ma(c,P1));
Mav2 = data2(ma(c,P2));
Mav3 = data2(ma(c,P3));
Mav4 = data2(ma(c,P4));
Mav5 = data2(ma(c,P5));
if Mav3 > mav4 and
crossup(mav1,mav3) and
crossup(BWSEVEN,S) and
dayindex() > 0 Then
buy("매수");
if CrossDown(mav1,mav4) Then
exitlong("매수청산");
SetStopEndofday(1500);
--------------------------------------------------------------------
다음글
이전글