커뮤니티

주기가 다른 5이평, 20이평값 구하기

프로필 이미지
tadd
2020-03-31 07:31:21
511
글번호 137363
답변완료
해외선물에서 사용하려고 합니다.(크루드오일, 유로) Var : ma5(0), ma20(0), ma530(0), ma2030(0); //3분주기 데이타 ma5 = MA(C, 5); ma20 = MA(C, 20); //30분주기 데이타 ma530 = MA(Data2(C),5); ma2030 = MA(Data2(C), 20); MessageLog("ma5 :%.2f, ma20 : %.2f, ma530 : %.2f, ma2030 : %.2f", ma5 , ma20 , ma530 , ma2030 ); 위와같이 작성하여 디버깅을 해보면, 3분데이타는 5이평 및 20이평값이 신호오는대로 수치가 정확하게 나옵니다. 그런데 30분데이타는 5이평 및 20이평값이 고정값으로 나옵니다. 어떻게 구현해야 하나요? 항상 도움주심에 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-31 11:47:42

안녕하세요 예스스탁입니다. 이전일에 답변드린부분과 같이 랭귀지는 완성된봉의 값만 사용합니다. 미완성봉의 값은 사용이 가능하지 않습니다. 30분봉의 현재봉값을 이용하기 위해서는 3분차트 자체에서 30분봉의 이동평균을 계산해 사용하셔야 합니다. 아래식 참고하시기 바랍니다. input : ntime(30),P1(5),P2(20); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : ma5(0),ma20(0); var : sum1(0),sum2(0),ma530(0),ma2030(0); Array : C1[50](0); ma5 = MA(C, P1); ma20 = MA(C, P2); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } #10(ntime)봉 이평 계산 if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { for cnt = 1 to 49 { C1[cnt] = C1[cnt-1][1]; } } C1[0] = C; if C1[P2-1] > 0 then { sum1 = 0; sum2 = 0; for cnt = 0 to P2-1 { if cnt < P1 Then { sum1 = sum1+C1[cnt]; } if cnt < P2 Then { sum2 = sum2+C1[cnt]; } } ma530 = sum1/P1; ma2030 = sum2/P2; } } 즐거운 하루되세요 > tadd 님이 쓴 글입니다. > 제목 : 주기가 다른 5이평, 20이평값 구하기 > 해외선물에서 사용하려고 합니다.(크루드오일, 유로) Var : ma5(0), ma20(0), ma530(0), ma2030(0); //3분주기 데이타 ma5 = MA(C, 5); ma20 = MA(C, 20); //30분주기 데이타 ma530 = MA(Data2(C),5); ma2030 = MA(Data2(C), 20); MessageLog("ma5 :%.2f, ma20 : %.2f, ma530 : %.2f, ma2030 : %.2f", ma5 , ma20 , ma530 , ma2030 ); 위와같이 작성하여 디버깅을 해보면, 3분데이타는 5이평 및 20이평값이 신호오는대로 수치가 정확하게 나옵니다. 그런데 30분데이타는 5이평 및 20이평값이 고정값으로 나옵니다. 어떻게 구현해야 하나요? 항상 도움주심에 감사드립니다.