커뮤니티

시스템식 수정 부탁....

프로필 이미지
송사범
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); --------------------------------------------------------------------