커뮤니티
문법 문의
2012-11-26 13:16:07
307
글번호 56819
안녕하세요?
var : cnt(0,data1),count(0,data1),sum(0,data1);
Array : D2C[50](0,data1);
처럼 변수선언할 때, 그냥 sum(0) 또는 D2C[50](0)
라고 안하고 (0, data1) 이라고 하는 이유는 뭔가요?
여기에 관한 문법은 어디를 보면 알 수 있나요?
특히나 D2C라는 array는 data2의 값을 할당받게 되는데,
기왕이면 D2C50[50](0, data2)라고 할 것 같은데, data1으로 쓰는 이유가 궁금합니다.
나아가서, data3 나 data4의 값을 할당받게 될 변수 및 array 들에 대해서도
지금처럼 변수(0, data1) 이라고 하는 건가요?
또, 수식중에 if data1(조건) then ... 하고 나가는 이유도 모르겠습니다.
그냥 if (조건) then ... 과의 차이 및 이런 문법들을 어디서 읽을 수 있는지가 궁금합니다.
감사합니다.
/////////////////////
var : cnt(0,data1),count(0,data1),sum(0,data1);
Array : D2C[50](0,data1);
if data1(dayindex == 0) Then{
for cnt = 1 to 49{
D2C[cnt] = 0;
}
count = 1;
D2C[count] = data2(c);
}
if data1(조건) Then{
count = count+1;
D2C[count] = data2(c);
}
sum = 0;
for cnt = 1 to 49{
if D2C[cnt] > 0 Then
sum = sum+(D2C[cnt]-data2(c));
}
plot1(sum);
답변 1
예스스탁 예스스탁 답변
2012-11-26 17:18:23
안녕하세요
예스스탁입니다.
변수를 선언할때 데이터번호를 같이 선언해 주는것은
해당 데이터번호의 주기로 값을 저장해서
이전 봉의 값을 해당 데이터 기준으로 가져와 사용하기 위함입니다.
간혹 값은 data2의 값을 저장하는데 data1로 선언하는 경우도 있는데
주종목 봉을 기준으로 data2의 값을 저장하고
주종목 봉을 기준으로 이전값을 참조하기 위함입니다.
예를 들어
data2의 종가가 진입이후의 data2의 최고가대비 1포인트 하락하면
청산한다는 식을 작성할 때
주종목은 진입이후에 봉이 10개가 만들어져 있고
data2는 거래가 별로 없어 5개가 만들어 졌다면
data2(highest(H,barssinceentry))와 같이 작성하면
data2(highest(H,10))으로 적은것과 같게 됩니다.
즉 data2는 봉이 5개 생겼는데 최근 10개봉의 최고가를 기준으로
값을 산정하므로 진입이전의 봉도 포함이 되므로 의도와 맞지 않습니다.
그러므로 data2의 값을 data1의 주기로 저장하면
data1의 최근 10개 봉에는 각봉이 완성될때 최종 완성한 data2의 값이 저장이 되므로
진입이후의 data2의 5개봉의 값만 이용해 최고가를 구할수 있게 됩니다.
var : d2H(0,data1);
d2H = data2(c);
if data2(c) <= Highest(d2H,barssinceentry) -1 then
exitlong();
위와 같이 변수를 선언하면 d2H변수에는 주종목 기준으로
최근 완성된 data2의 고가값이 저장되므로
주종목으로 일전 봉수동안의 data2의 최고값등을
오류없이 계산해 사용할 수 있게 됩니다.
참조종목을 이용하시는 경우에는
변수를 선언하실 때 저장하는 값을 주기로 선언을 할것인지
혹은 주종목이나 다른 데이터를 기준으로 선언할 것인지는
해당 수식의 내용에 따라 작성자가 임의로 판단하고 작성하셔야 합니다.
일반적으로는 해당 참조데이터의 이전값이 필요하면
해당 참조데이터의 번호로 선언하고
해당 참조데이터가 아닌 주종목의 시전을 기준으로
참조데이터의 값이 필요하면 data1로 선언해 사용합니다.
즐거운 하루되세요
> 에구머니 님이 쓴 글입니다.
> 제목 : 문법 문의
> 안녕하세요?
var : cnt(0,data1),count(0,data1),sum(0,data1);
Array : D2C[50](0,data1);
처럼 변수선언할 때, 그냥 sum(0) 또는 D2C[50](0)
라고 안하고 (0, data1) 이라고 하는 이유는 뭔가요?
여기에 관한 문법은 어디를 보면 알 수 있나요?
특히나 D2C라는 array는 data2의 값을 할당받게 되는데,
기왕이면 D2C50[50](0, data2)라고 할 것 같은데, data1으로 쓰는 이유가 궁금합니다.
나아가서, data3 나 data4의 값을 할당받게 될 변수 및 array 들에 대해서도
지금처럼 변수(0, data1) 이라고 하는 건가요?
또, 수식중에 if data1(조건) then ... 하고 나가는 이유도 모르겠습니다.
그냥 if (조건) then ... 과의 차이 및 이런 문법들을 어디서 읽을 수 있는지가 궁금합니다.
감사합니다.
/////////////////////
var : cnt(0,data1),count(0,data1),sum(0,data1);
Array : D2C[50](0,data1);
if data1(dayindex == 0) Then{
for cnt = 1 to 49{
D2C[cnt] = 0;
}
count = 1;
D2C[count] = data2(c);
}
if data1(조건) Then{
count = count+1;
D2C[count] = data2(c);
}
sum = 0;
for cnt = 1 to 49{
if D2C[cnt] > 0 Then
sum = sum+(D2C[cnt]-data2(c));
}
plot1(sum);
다음글