커뮤니티

프로그램 수정

프로필 이미지
티끌
2015-04-27 14:28:47
187
글번호 85458
답변완료
아래의산식은 시스템중일부입니다 산식중 GAP_ma(C,05)는 작성해주신 사용자 함수입니다 이함수를 이용해서 갭을 제거한 산식을 사용하고 있습니다만 dayhigh,daylow와 같이 어떻게해야 갭을 제거하고사용할지 모르는 것도 있습니다 (틱차트나 분봉차트에서 일이평을 참고하려던 산식도 있습니다) 그래서 갭보정차트를 사용하던중 아래에서 질문한것(41555번: 6개월차트와 12개월차트상의시스템적용 차이)가 발생한것입니다 아래의 산식에서 갭을 제거한 산식으로 수정부탁드립니다 -아 래- ################################################################## #이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) # ################################################################## var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0) MA05 = GAP_ma(C,05); MA07 = GAP_ma(C,7); MA10 = GAP_ma(C,10); MA20 = GAP_ma(C,20); ##################################### # 당일 Range & 30봉간 고저점 # ##################################### var:DayRange(0),DH(0),DL(0),DM(0); DayRange = dayhigh-daylow; If 0<=DayIndex and DayIndex<=30 Then { DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5); DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5); DM=DH-(DH-DL)*0.5; } else If DayIndex>30 Then { DH=(dayhigh-(DayRange*(1/3))); DM=(dayhigh-(DayRange*(1/2))); DL=(dayhigh-(DayRange*(2/3))); } //input :Len(20); /*H30=ma(Highest(GAP_ma(C,1),20),6); L30=ma(lowest (GAP_ma(c,1),20),6); M30=H30-0.5*(H30-L30) ; 가 = GAP_ma(C,2); 나 = H30 ; 다 = Ma05; 라 = Ma10; 마 = M30; //Ma08 DM 바 = L30; // 사 = Dayv; */ var:H30(0),L30(0),M30(0); H30=ma(Highest(GAP_ma(C,1),25),7); L30=ma(lowest (GAP_ma(c,1),25),7); M30=H30-0.5*(H30-L30) ; ##################################### # 5이평 일봉 # ##################################### //input : P1(5); var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0); Array : GC[100](0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; for cnt = 1 to 99{ GC[cnt] = GC[cnt-1][1]; } } GC[0] = C - sumGap; sumV = 0; if GC[5] > 0 Then{ for cnt = 0 to 5-1 { sumV = sumV+GC[cnt]; } maV = sumV / 5; } If DayIndex==0 Then Mav1=Mav; ##################################### # 당일시가와 5이평일봉의 중간 # ##################################### var:DayM(0); If DayV>Mav1 Then DayM=Mav1+(DayV-Mav1)*0.5 ; Else If DayV<Mav1 Then DayM=DayV+(Mav1-DayV)*0.5 ; Else If DayV==Mav1 Then DayM=DayV; ################################################### ### 분봉에서 일간이평 ### ################################################### //input : D1(5),D2(10),D3(20); var : count(0),sumV1(0),sumV2(0),sumV3(0); var : Dav1(0),Dav2(0),Dav3(0); sumV1 = 0; sumV2 = 0; sumV3 = 0; for count = 0 to 20 { if count < 2 Then sumV1 = sumV1+DayClose(count); if count < 04 Then sumV2 = sumV2+DayClose(count); if count < 08 Then sumV3 = sumV3+DayClose(count); } DaV1 = sumV1 / 2; DaV2 = sumV2 / 04; DaV3 = sumV3 / 08;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-04-27 15:12:49

안녕하세요 예스스탁입니다. 올리신 식은 수식안에서 갭보정을 하는 내용입니다. 차트는 갭보정을 하지 않으셔야 합니다. 즉 갭보정하지 않은 차트에서 수식에서 보정해서 보정한 값으로 조건을 지정해 신호를 발생하기 위함입니다. 또한 수식이나 차트자체 갭보정이나 14555번과 같은 상황이 발생할수 있습니다. 수식으로 보정하는 것은 과거에서 현재로 계산해 오면서 일간 &#44078;을 누적해서 현재봉의 시고저종에 반영하는 것이므로 차트의 시작일이 다르면 신호가 달라질수 있습니다. 이용에 참고하시기 바랍니다. #갭보정일간 시고저종 var : gapx(0),sumgapx(0),GxO(0),GxH(0),GxL(0),GxC(0),xcnt(0); Array : GapxDO[50](0),GapxDH[50](0),GapxDL[50](0),GapxDC[50](0); if date!=date[1] THen { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) gapx = Open-Close[1]; // 일간갭 sumGapx = sumGapx+gapx; // 일간갭 누적 GapxDO[0] = O - sumGapx; GapxDH[0] = H - sumGapx; GapxDL[0] = L - sumGapx; for xcnt = 1 to 49{ GapxDO[xcnt] = GapxDO[xcnt-1][1]; GapxDH[xcnt] = GapxDH[xcnt-1][1]; GapxDL[xcnt] = GapxDL[xcnt-1][1]; } } GxO = O - sumGapx;// 갭보정 시가 GxH = H - sumGapx;// 갭보정 고가 GxL = L - sumGapx;// 갭보정 저가 GxC = C - sumGapx; // 갭보정 종가 GapxDC[0] = GxC; ################################################################## #이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) # ################################################################## var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0) MA05 = GAP_ma(C,05); MA07 = GAP_ma(C,7); MA10 = GAP_ma(C,10); MA20 = GAP_ma(C,20); ##################################### # 당일 Range & 30봉간 고저점 # ##################################### var:DayRange(0),DH(0),DL(0),DM(0); DayRange = GapxDH[0]-GapxDL[0]; If 0<=DayIndex and DayIndex<=30 Then { DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5); DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5); DM=DH-(DH-DL)*0.5; } else If DayIndex>30 Then { DH=(GapxDH[0]-(DayRange*(1/3))); DM=(GapxDH[0]-(DayRange*(1/2))); DL=(GapxDH[0]-(DayRange*(2/3))); } //input :Len(20); /*H30=ma(Highest(GAP_ma(C,1),20),6); L30=ma(lowest (GAP_ma(c,1),20),6); M30=H30-0.5*(H30-L30) ; 가 = GAP_ma(C,2); 나 = H30 ; 다 = Ma05; 라 = Ma10; 마 = M30; //Ma08 DM 바 = L30; // 사 = Dayv; */ var:H30(0),L30(0),M30(0); H30=ma(Highest(GAP_ma(C,1),25),7); L30=ma(lowest (GAP_ma(c,1),25),7); M30=H30-0.5*(H30-L30) ; ##################################### # 5이평 일봉 # ##################################### //input : P1(5); var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0); Array : GC[100](0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; for cnt = 1 to 99{ GC[cnt] = GC[cnt-1][1]; } } GC[0] = C - sumGap; sumV = 0; if GC[5] > 0 Then{ for cnt = 0 to 5-1 { sumV = sumV+GC[cnt]; } maV = sumV / 5; } If DayIndex==0 Then Mav1=Mav; ##################################### # 당일시가와 5이평일봉의 중간 # ##################################### var:DayM(0); If DayV>Mav1 Then DayM=Mav1+(DayV-Mav1)*0.5 ; Else If DayV<Mav1 Then DayM=DayV+(Mav1-DayV)*0.5 ; Else If DayV==Mav1 Then DayM=DayV; ################################################### ### 분봉에서 일간이평 ### ################################################### //input : D1(5),D2(10),D3(20); var : count(0),sumV1(0),sumV2(0),sumV3(0); var : Dav1(0),Dav2(0),Dav3(0); sumV1 = 0; sumV2 = 0; sumV3 = 0; for count = 0 to 20 { if count < 2 Then sumV1 = sumV1+GapxDC[count]; if count < 04 Then sumV2 = sumV2+GapxDC[count]; if count < 08 Then sumV3 = sumV3+GapxDC[count]; } DaV1 = sumV1 / 2; DaV2 = sumV2 / 04; DaV3 = sumV3 / 08; 즐거운 하루되세요 > 티끌 님이 쓴 글입니다. > 제목 : 프로그램 수정 > 아래의산식은 시스템중일부입니다 산식중 GAP_ma(C,05)는 작성해주신 사용자 함수입니다 이함수를 이용해서 갭을 제거한 산식을 사용하고 있습니다만 dayhigh,daylow와 같이 어떻게해야 갭을 제거하고사용할지 모르는 것도 있습니다 (틱차트나 분봉차트에서 일이평을 참고하려던 산식도 있습니다) 그래서 갭보정차트를 사용하던중 아래에서 질문한것(41555번: 6개월차트와 12개월차트상의시스템적용 차이)가 발생한것입니다 아래의 산식에서 갭을 제거한 산식으로 수정부탁드립니다 -아 래- ################################################################## #이평선 ma(c,05),ma(c,10),ma(c,20),ma(c,30)ma(c,60),ma(c,120) # ################################################################## var : MA05(0),MA07(0),MA10(0),MA20(0);//,MA07(0),MA10(0),MA30(0),MA60(0) MA05 = GAP_ma(C,05); MA07 = GAP_ma(C,7); MA10 = GAP_ma(C,10); MA20 = GAP_ma(C,20); ##################################### # 당일 Range & 30봉간 고저점 # ##################################### var:DayRange(0),DH(0),DL(0),DM(0); DayRange = dayhigh-daylow; If 0<=DayIndex and DayIndex<=30 Then { DH=ma(Highest(GAP_ma(h,1),30)-(DH-DL)*(6/9),5); DL=ma(lowest (GAP_ma(L,1),30)+(DH-DL)*(6/9),5); DM=DH-(DH-DL)*0.5; } else If DayIndex>30 Then { DH=(dayhigh-(DayRange*(1/3))); DM=(dayhigh-(DayRange*(1/2))); DL=(dayhigh-(DayRange*(2/3))); } //input :Len(20); /*H30=ma(Highest(GAP_ma(C,1),20),6); L30=ma(lowest (GAP_ma(c,1),20),6); M30=H30-0.5*(H30-L30) ; 가 = GAP_ma(C,2); 나 = H30 ; 다 = Ma05; 라 = Ma10; 마 = M30; //Ma08 DM 바 = L30; // 사 = Dayv; */ var:H30(0),L30(0),M30(0); H30=ma(Highest(GAP_ma(C,1),25),7); L30=ma(lowest (GAP_ma(c,1),25),7); M30=H30-0.5*(H30-L30) ; ##################################### # 5이평 일봉 # ##################################### //input : P1(5); var : sumGap(0), gap(0),cnt(0),sumV(0),mav(0),mav1(0); Array : GC[100](0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; for cnt = 1 to 99{ GC[cnt] = GC[cnt-1][1]; } } GC[0] = C - sumGap; sumV = 0; if GC[5] > 0 Then{ for cnt = 0 to 5-1 { sumV = sumV+GC[cnt]; } maV = sumV / 5; } If DayIndex==0 Then Mav1=Mav; ##################################### # 당일시가와 5이평일봉의 중간 # ##################################### var:DayM(0); If DayV>Mav1 Then DayM=Mav1+(DayV-Mav1)*0.5 ; Else If DayV<Mav1 Then DayM=DayV+(Mav1-DayV)*0.5 ; Else If DayV==Mav1 Then DayM=DayV; ################################################### ### 분봉에서 일간이평 ### ################################################### //input : D1(5),D2(10),D3(20); var : count(0),sumV1(0),sumV2(0),sumV3(0); var : Dav1(0),Dav2(0),Dav3(0); sumV1 = 0; sumV2 = 0; sumV3 = 0; for count = 0 to 20 { if count < 2 Then sumV1 = sumV1+DayClose(count); if count < 04 Then sumV2 = sumV2+DayClose(count); if count < 08 Then sumV3 = sumV3+DayClose(count); } DaV1 = sumV1 / 2; DaV2 = sumV2 / 04; DaV3 = sumV3 / 08;