커뮤니티

문의 (DATA1)

프로필 이미지
TRF
2013-11-21 16:00:21
230
글번호 69681
답변완료
1. 맨 아래내용은 어제 답변주신 내용입니다. 모든 부분을 이해한 것이 아니기에 확인차원에서 재질문 드립니다. 제가 이해한 부분입니다. * DATA1을 기입하지 않으면 디폴트로 DATA1을 가리키는 것은 아니라는 점... * DATA1에서의 데이타(이평선, 봉 등)만을 이용할 경우에는 DATA1을 모두 기입해주는 것이 명확하고 처리하는 속도?에서 이점을 얻을 수 있다는 점 * DATA1에서 DATA2의 참조데이타를 이용할 경우에는 반드시 참조할 데이타를 명시해야함 VARS: A(0); A = DATA2(AA) + DATA3(M1 / M2 * 100); 위와 같이 해줘야함. 여기서 VARS: A(0); 인지 VARS: A(0, DATA1); 인지는 헷갈립니다. 제가 이해한 부분이 정확한지 다시한번 봐주시고 조언주시면 감사드리겠습니다. 2. 3분봉에서 일봉을 표시하기 위해 사용했던것인데 DATA1인 1분봉에서 표시하게끔해주고 싶습니다. 변환부탁드립니다. VARS: M5DP(5), M13DP(13), M20DP(20); VARS: M5D(0, DATA2), M13D(0, DATA2), M20D(0, DATA2); VARS: M5D.SUM(0, DATA2), M13D.SUM(0, DATA2), M20D.SUM(0, DATA2), CNT(0); ARRAY: CC[100](0, DATA2); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA2(Date <> Date[1]) ) Then { for CNT = 0 to 99 { CC[CNT] = CC[CNT - 1][1]; } } CC[0] = DATA2(C); M5D.SUM = 0; M13D.SUM = 0; M20D.SUM = 0; for CNT = 0 to M20DP - 1 { if ( (CNT < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[CNT]; if ( (CNT < M13DP) AND (CC[M13DP - 1] > 0) ) Then M13D.SUM = M13D.SUM + CC[CNT]; if ( (CNT < M20DP) AND (CC[M20DP - 1] > 0) ) Then M20D.SUM = M20D.SUM + CC[CNT]; } M5D = (M5D.SUM / M5DP); M13D = (M13D.SUM / M13DP); M20D = (M20D.SUM / M20DP); Plot21(M5D, "M5D", RGB(0,255,0), DEF, 1); Plot22(M13D, "M13D", RGB(0,255,255), DEF, 1); Plot23(M20D, "M20D", RGB(255,102,204), DEF, 1); 3. 10분후에만 작동하게 끔 해주려고 합니다. 아래식 맞는건지요?? 장시작후 10분후에도 M1과 M2가 역배열되었는데도 Buy 진입이 되는 것을 확인할 수 있었습니다. VARS: PreD.TM(0, DATA1); VARS: PreD.Q1(FALSE, DATA1); if DATA1(Date <> Date[1]) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.Q1 = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) AND (M1 > M2) ) then { PreD.Q1 = TRUE; } ............ if (PreD.Q1 == TRUE) then buy(); 아래 문장에서 DATA1을 삭제시 어떻게 달라지나요? PreD.TM = DATA1(TimeToMinutes(stime)); 금일도 질문이 다소 많은데 부탁드리겠습니다. 늘 감사드립니다. ------------------------------------------------------------------------- 답변주신 내용 ------------------------------------------------------------------------- 수식에서 참조데이터를 사용하는 경우 if DATA1(Date <> Date[1]) then { 실행문 } 은 data1로 지정을 했으므로 if문이 data1봉만 기준으로 계산이 되는데 if Date <> Date[1] then 위와 같이 작성하시면 차트의 있는 봉이 완성이 될때마다 if문이 구동이 되어 조건만족여부를 따져 만족하면 하위의 실행문들이 수행되므로 중복으로 계산이 됩니다. 마찬가지로 DATA1(TMA(gCLOSE, MP1)); 와 같이 작성하시면 해당 함수를 계산하는 봉을 data1의봉수로만 따지게 되는데 TMA(gCLOSE, MP1); 와 같이 있으면 참조데이터를 포함해서 봉수를 산정하게 됩니다. 참조데이터를 이용하는 식을 만드실때는 해당 조건문 혹은 함수가 따라가야 하는 데이터가 어떤데이터인지 명시해 주셔야 합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-11-21 16:34:42

안녕하세요 예스스탁입니다. 1. * DATA1을 기입하지 않으면 디폴트로 DATA1을 가리키는 것은 아니라는 점... * DATA1에서의 데이타(이평선, 봉 등)만을 이용할 경우에는 DATA1을 모두 기입해주는 것이 명확하고 처리하는 속도?에서 이점을 얻을 수 있다는 점 * DATA1에서 DATA2의 참조데이타를 이용할 경우에는 반드시 참조할 데이타를 명시해야함 예 이해하신 내용이 정확합니다. 2. 수식의 내용은 동일합니다. 수식에 사용된 모든 data2를 data1로만 변경하시면 됩니다. VARS: M5DP(5), M13DP(13), M20DP(20); VARS: M5D(0, data1), M13D(0, data1), M20D(0, data1); VARS: M5D.SUM(0, data1), M13D.SUM(0, data1), M20D.SUM(0, data1), CNT(0); ARRAY: CC[100](0, data1); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( data1(Date <> Date[1]) ) Then { for CNT = 0 to 99 { CC[CNT] = CC[CNT - 1][1]; } } CC[0] = data1(C); M5D.SUM = 0; M13D.SUM = 0; M20D.SUM = 0; for CNT = 0 to M20DP - 1 { if ( (CNT < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[CNT]; if ( (CNT < M13DP) AND (CC[M13DP - 1] > 0) ) Then M13D.SUM = M13D.SUM + CC[CNT]; if ( (CNT < M20DP) AND (CC[M20DP - 1] > 0) ) Then M20D.SUM = M20D.SUM + CC[CNT]; } M5D = (M5D.SUM / M5DP); M13D = (M13D.SUM / M13DP); M20D = (M20D.SUM / M20DP); Plot21(M5D, "M5D", RGB(0,255,0), DEF, 1); Plot22(M13D, "M13D", RGB(0,255,255), DEF, 1); Plot23(M20D, "M20D", RGB(255,102,204), DEF, 1); 3. 작성하신 식은 장시작 10분 후에 정배열이 한번이라도 있으면 장끝까지 계속 true입니다. 장시작후 10분이 경과하면 true로 만들고 true인 상태에서 m1 >m2보다 크면 매수하게 식을 작성하셔야 합니다. VARS: PreD.TM(0, DATA1),m1(0,data1),m2(0,data1); VARS: PreD.Q1(FALSE, DATA1); m1 = data1(ma(c,5)); m2 = data1(ma(c,10)); if DATA1(Date <> Date[1]) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.Q1 = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.Q1 = TRUE; } #............ if (PreD.Q1 == TRUE AND (M1 > M2) ) then buy(); 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 문의 (DATA1) > 1. 맨 아래내용은 어제 답변주신 내용입니다. 모든 부분을 이해한 것이 아니기에 확인차원에서 재질문 드립니다. 제가 이해한 부분입니다. * DATA1을 기입하지 않으면 디폴트로 DATA1을 가리키는 것은 아니라는 점... * DATA1에서의 데이타(이평선, 봉 등)만을 이용할 경우에는 DATA1을 모두 기입해주는 것이 명확하고 처리하는 속도?에서 이점을 얻을 수 있다는 점 * DATA1에서 DATA2의 참조데이타를 이용할 경우에는 반드시 참조할 데이타를 명시해야함 VARS: A(0); A = DATA2(AA) + DATA3(M1 / M2 * 100); 위와 같이 해줘야함. 여기서 VARS: A(0); 인지 VARS: A(0, DATA1); 인지는 헷갈립니다. 제가 이해한 부분이 정확한지 다시한번 봐주시고 조언주시면 감사드리겠습니다. 2. 3분봉에서 일봉을 표시하기 위해 사용했던것인데 DATA1인 1분봉에서 표시하게끔해주고 싶습니다. 변환부탁드립니다. VARS: M5DP(5), M13DP(13), M20DP(20); VARS: M5D(0, DATA2), M13D(0, DATA2), M20D(0, DATA2); VARS: M5D.SUM(0, DATA2), M13D.SUM(0, DATA2), M20D.SUM(0, DATA2), CNT(0); ARRAY: CC[100](0, DATA2); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA2(Date <> Date[1]) ) Then { for CNT = 0 to 99 { CC[CNT] = CC[CNT - 1][1]; } } CC[0] = DATA2(C); M5D.SUM = 0; M13D.SUM = 0; M20D.SUM = 0; for CNT = 0 to M20DP - 1 { if ( (CNT < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[CNT]; if ( (CNT < M13DP) AND (CC[M13DP - 1] > 0) ) Then M13D.SUM = M13D.SUM + CC[CNT]; if ( (CNT < M20DP) AND (CC[M20DP - 1] > 0) ) Then M20D.SUM = M20D.SUM + CC[CNT]; } M5D = (M5D.SUM / M5DP); M13D = (M13D.SUM / M13DP); M20D = (M20D.SUM / M20DP); Plot21(M5D, "M5D", RGB(0,255,0), DEF, 1); Plot22(M13D, "M13D", RGB(0,255,255), DEF, 1); Plot23(M20D, "M20D", RGB(255,102,204), DEF, 1); 3. 10분후에만 작동하게 끔 해주려고 합니다. 아래식 맞는건지요?? 장시작후 10분후에도 M1과 M2가 역배열되었는데도 Buy 진입이 되는 것을 확인할 수 있었습니다. VARS: PreD.TM(0, DATA1); VARS: PreD.Q1(FALSE, DATA1); if DATA1(Date <> Date[1]) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.Q1 = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) AND (M1 > M2) ) then { PreD.Q1 = TRUE; } ............ if (PreD.Q1 == TRUE) then buy(); 아래 문장에서 DATA1을 삭제시 어떻게 달라지나요? PreD.TM = DATA1(TimeToMinutes(stime)); 금일도 질문이 다소 많은데 부탁드리겠습니다. 늘 감사드립니다. ------------------------------------------------------------------------- 답변주신 내용 ------------------------------------------------------------------------- 수식에서 참조데이터를 사용하는 경우 if DATA1(Date <> Date[1]) then { 실행문 } 은 data1로 지정을 했으므로 if문이 data1봉만 기준으로 계산이 되는데 if Date <> Date[1] then 위와 같이 작성하시면 차트의 있는 봉이 완성이 될때마다 if문이 구동이 되어 조건만족여부를 따져 만족하면 하위의 실행문들이 수행되므로 중복으로 계산이 됩니다. 마찬가지로 DATA1(TMA(gCLOSE, MP1)); 와 같이 작성하시면 해당 함수를 계산하는 봉을 data1의봉수로만 따지게 되는데 TMA(gCLOSE, MP1); 와 같이 있으면 참조데이터를 포함해서 봉수를 산정하게 됩니다. 참조데이터를 이용하는 식을 만드실때는 해당 조건문 혹은 함수가 따라가야 하는 데이터가 어떤데이터인지 명시해 주셔야 합니다.