커뮤니티
질문있습니다.
2018-02-08 22:31:13
174
글번호 116486
질문있습니다.
질문1.
data2의 안의 함수를 for문으로 루프를 돌리면 안됩니다,
아래와 같이 배열변수 이용해 별도로 일간 고저종가 계산후 해당 배열을 루프로 돌리셔야 합니다.
라고 답변해주셨는데요
data2안의 함수를 for문으로 루프돌리면 안되는 이유가 먼지궁금합니다.
질문2.
if data2(HighD(0)*0.985>c||CloseD(1)*0.985>c) then{ 을 아래와 같이 변환해주셨습니다.
if data2((H2[0]*0.98>c|| C2[1]*0.98>c)) Then{
궁금한것이 highD(0) 은 참조 데이터의 당일 고점을 나타내는 표현인것으로 알고있는데요 왜 굳이 당일 고점을 배열에 넣어서 확인하는 작업을 하는지궁금합니다.
꼭 참조데이터의 당일 고점은 highD를 사용하면 안되는 것인지요?
질문3.
if data2(((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))) Then{
표현식은 따로 변환 해주신것이없습니다
data2((Lowest(h,mt_600)[15]) 와 같이 표현하면 원하는 데로 참조데이터 600봉의 고점상 가장 작은 고점의 15봉전값을 읽어올수 있는지궁금합니다.
위에 처럼 data2((Lowest(H[2],mt_600)[15]) 로 표현하지 않고 위에처럼 해도되는것인지 궁금합니다.(언제 배열에 넣어서 사용해야하는지 개념이 헷갈립니다.)
질문4.
변환해주신것에 대해서 궁금한것이있습니다.
제가 작성한 아래식을
if ((mt_ma5*0.987>data2(c)))Then
if data2((mt_ma5*0.987>c))Then이런식으로 변환해서 작성해주셨습니다.
c에 data2를 감싸는것과 식모두에 data2를 감싸는것에 차이가있는것인지궁금합니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2018-02-12 10:57:52
안녕하세요
예스스탁입니다.
1.
분봉이하의 차트에서 기본종목에 대해
내부적으로 차트 첫봉 +99일치의 일간 데이터가 추가로 제공되고
이와 같이 미리 만들어져 제공되는 일간데이터에서
직접 값을 가져오는 함수가 dayopen/dayhigh/daylow/dayclose이기 때문입니다.
해당 함수는 O,H,L,C와 같은 성격으로
for문에서 매개변수 지정해서 이전일의 값을 리턴하는데 문제가 없습니다.
참조데이터는 위와 같이 내부적으로 제공되는 데이터가 없고
참조데이터 자체로 일간 시고저종가를 계산하는데
매봉 for문에 의해
새로운 highD,lowD,Closed등의 함수가 새로운 메모리를 가지고 호출되는데
이전일에 대해 계산해 놓치 못한 상태에서
호출을 받아 정확한 이전일의 값을 리턴하지 못합니다.
이전일의 값이 필요하면 미리 계산해 현재시점에서 값을 가져와 사용해야 하므로
답변드린 부분과 같이 배열변수를 따로 만들어서 계산한 것입니다.
즉 차트 첫봉부터 현재까지 계산을 연속적으로 수행해서 이전일의 값을
변수에 할당되게 작성한 것입니다.
2
단순히 수식에서 data2(HighD(1)), data2(lowD(0))과 같이
매개변수를 고정으로 사용하시는 것은 문제 없습니다.
for문으로 가변으로 지정되는 것때문에 별도로 배열로 처리를 한것입니다
이왕 배열로 처리한 것이 있으므로
수식에서 고정으로 사용한 값도 배열변수로 변경해 드린것 입니다.
3
조건 전체를 data2로 묶으시면
조건내 각 값을 data2로 지정한 것과 같습니다.
4
3번과 같습니다.
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : 질문있습니다.
> 질문있습니다.
질문1.
data2의 안의 함수를 for문으로 루프를 돌리면 안됩니다,
아래와 같이 배열변수 이용해 별도로 일간 고저종가 계산후 해당 배열을 루프로 돌리셔야 합니다.
라고 답변해주셨는데요
data2안의 함수를 for문으로 루프돌리면 안되는 이유가 먼지궁금합니다.
질문2.
if data2(HighD(0)*0.985>c||CloseD(1)*0.985>c) then{ 을 아래와 같이 변환해주셨습니다.
if data2((H2[0]*0.98>c|| C2[1]*0.98>c)) Then{
궁금한것이 highD(0) 은 참조 데이터의 당일 고점을 나타내는 표현인것으로 알고있는데요 왜 굳이 당일 고점을 배열에 넣어서 확인하는 작업을 하는지궁금합니다.
꼭 참조데이터의 당일 고점은 highD를 사용하면 안되는 것인지요?
질문3.
if data2(((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))) Then{
표현식은 따로 변환 해주신것이없습니다
data2((Lowest(h,mt_600)[15]) 와 같이 표현하면 원하는 데로 참조데이터 600봉의 고점상 가장 작은 고점의 15봉전값을 읽어올수 있는지궁금합니다.
위에 처럼 data2((Lowest(H[2],mt_600)[15]) 로 표현하지 않고 위에처럼 해도되는것인지 궁금합니다.(언제 배열에 넣어서 사용해야하는지 개념이 헷갈립니다.)
질문4.
변환해주신것에 대해서 궁금한것이있습니다.
제가 작성한 아래식을
if ((mt_ma5*0.987>data2(c)))Then
if data2((mt_ma5*0.987>c))Then이런식으로 변환해서 작성해주셨습니다.
c에 data2를 감싸는것과 식모두에 data2를 감싸는것에 차이가있는것인지궁금합니다.
감사합니다.
이전글