커뮤니티
수식 작성방법에 대한 문의입니다.
2013-05-09 16:47:27
284
글번호 62999
잘 답변해 주셔서 감사합니다.
한가지 더 물어볼것이 있습니다.
var : n(0),period26(26);
var1 = ema(C,Period26);
n=2;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
위와같이 작성하여 문제없이 되는데
예를 들어 다음과 같이 n=3 인 경우에 대한 진입식도 계속 써주게 되면
n=3;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
이렇게 써줬을때 진입을 안하거나 엉뚱한 진입을 하더군요.
매뉴얼도 보고 방법을 바꿔보면서 시도해봤는데 잘 안되서 그럽니다.
내장변수인 var1 을 써도 괜찮지만 알아보기 편한 새로 변수 선언을 해주고 써보려고 하는데 초기화를 한다던지 다른 방법 없을까 해서요.
배열변수라는것도 있던데 이걸 써서 변수 여러개를 만들어서 진입식 하나마다 다른 변수명으로 할당해줘야 하나요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식이 이상한건지 아니면 이상한 부분이 있는지 확인 부탁드립니다.
> 안녕하세요
예스스탁입니다.
var : n(0),period26(26);
n=2;
if H[n+4] < ema(C[n+4],period26) and #1번 지수이평
H[n+3] >= ema(C[n+3],period26) and #2번 지수이평
H[n+2] >= ema(C[n+2],period26) and #3번 지수이평
H[n+1] >= ema(C[n+1],period26) and #4번 지수이평
............ then
sell("");
와 같이 작성하시면 수식이 처음에 메모리가 셋팅이 될때
n이 0이므로
1번 지수이평은 과거값이 4개봉,
2번 지수이평은 과거값이 3개봉,
3번 지수이평은 과거값이 2개봉,
4번 지수이평은 과거값이 1개봉
이 필요한 것으로 인식하여 메모리가 셋팅이 됩니다.
이후 수식에서 n에 2값이 할당되므로 만들지 않은
6,5,4,3전봉의 값을 요구하므로 잘못된 값을 리턴하게 됩니다.
ema를 변수처리하시고 해당 변수에 이전값을 가져오게 작성하시면 됩니다.
또한 수식에서 함수는 작성한 수만큼 계산이 됩니다.
동일 계산식이면 해당 계산식을 변수에 할당하고 해당 변수를
사용하시면 중복계산을 피하게 되므로 수식의 가독성이 올라가게 됩니다.
var : n(0),period26(26);
var1 = ema(C,Period26);
n=2;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
즐거운 하루되세요
> 개냥이 님이 쓴 글입니다.
> 제목 : 수식이 이상한건지 아니면 이상한 부분이 있는지 확인 부탁드립니다.
> 제 시스템 식 중에 일부인데 다음과 같이 상수를 넣어야 할 것을
반복되는 부분도 있고 편의를 위해서 n을 변수로 할당해서 다음과 같이 만들어줬습니다.
var : n(0),period26(26);
n=2;
if H[n+4] < ema(C[n+4],period26) and
H[n+3] >= ema(C[n+3],period26) and
H[n+2] >= ema(C[n+2],period26) and
H[n+1] >= ema(C[n+1],period26) and
............ then
sell("");
그런데 분명히 진입해야 되는 부분에서 진입 안되서
점검을 하다보니 n=2로 넣는 부분을 없애고 그냥 숫자를 집어넣어서 H[n+4] 대신에 H[6] 이런식으로 만들어주니 원하는 진입신호가 제대로 나옵니다.
var : period26(26);
if H[6] < ema(C[6],period26) and
H[5] >= ema(C[5],period26) and
H[4] >= ema(C[4],period26) and
H[3] >= ema(C[3],period26) and
............ then
sell("");
그런데 그전에도 비슷한 경우가 있더군요.
비슷한 경우에 문제가 되면 모르는데 동일하게 작성해줘도 어느 부분은 그냥 신호가 잘 나옵니다.
시스템을 전부 올리기는 조금 뭐하긴 한데 혹시 제가 작성한 내용이 문제될만한 부분이 있는지 아니면 다른 문제인지 모르겠네요.
messagelog로 필요한 부분 데이타까지 출력해봐도 문제점을 못 찾겠습니다.
확인 부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2013-05-09 17:13:37
안녕하세요
예스스탁입니다.
해당 부분 테스트 해보았지만
n값을 변경해도 정상적으로 신호가 발생합니다.
변수는 내장변수를 사용하셔도 되고
따로 선언해서 사용하셔도 됩니다.
아래식으로 n값을 변경하며 테스트 했습니다.
var : n(0),period26(26);
var : mav(0);
mav = ema(C,Period26);
n=2;
if H[n+4] < mav[n+4] and #1번 지수이평
H[n+3] >= mav[n+3] and #2번 지수이평
H[n+2] >= mav[n+2] and #3번 지수이평
H[n+1] >= mav[n+1] #4번 지수이평
then
sell("");
if BarsSinceEntry == 10 Then
ExitShort();
즐거운 하루되세요
> 개냥이 님이 쓴 글입니다.
> 제목 : 수식 작성방법에 대한 문의입니다.
> 잘 답변해 주셔서 감사합니다.
한가지 더 물어볼것이 있습니다.
var : n(0),period26(26);
var1 = ema(C,Period26);
n=2;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
위와같이 작성하여 문제없이 되는데
예를 들어 다음과 같이 n=3 인 경우에 대한 진입식도 계속 써주게 되면
n=3;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
이렇게 써줬을때 진입을 안하거나 엉뚱한 진입을 하더군요.
매뉴얼도 보고 방법을 바꿔보면서 시도해봤는데 잘 안되서 그럽니다.
내장변수인 var1 을 써도 괜찮지만 알아보기 편한 새로 변수 선언을 해주고 써보려고 하는데 초기화를 한다던지 다른 방법 없을까 해서요.
배열변수라는것도 있던데 이걸 써서 변수 여러개를 만들어서 진입식 하나마다 다른 변수명으로 할당해줘야 하나요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식이 이상한건지 아니면 이상한 부분이 있는지 확인 부탁드립니다.
> 안녕하세요
예스스탁입니다.
var : n(0),period26(26);
n=2;
if H[n+4] < ema(C[n+4],period26) and #1번 지수이평
H[n+3] >= ema(C[n+3],period26) and #2번 지수이평
H[n+2] >= ema(C[n+2],period26) and #3번 지수이평
H[n+1] >= ema(C[n+1],period26) and #4번 지수이평
............ then
sell("");
와 같이 작성하시면 수식이 처음에 메모리가 셋팅이 될때
n이 0이므로
1번 지수이평은 과거값이 4개봉,
2번 지수이평은 과거값이 3개봉,
3번 지수이평은 과거값이 2개봉,
4번 지수이평은 과거값이 1개봉
이 필요한 것으로 인식하여 메모리가 셋팅이 됩니다.
이후 수식에서 n에 2값이 할당되므로 만들지 않은
6,5,4,3전봉의 값을 요구하므로 잘못된 값을 리턴하게 됩니다.
ema를 변수처리하시고 해당 변수에 이전값을 가져오게 작성하시면 됩니다.
또한 수식에서 함수는 작성한 수만큼 계산이 됩니다.
동일 계산식이면 해당 계산식을 변수에 할당하고 해당 변수를
사용하시면 중복계산을 피하게 되므로 수식의 가독성이 올라가게 됩니다.
var : n(0),period26(26);
var1 = ema(C,Period26);
n=2;
if H[n+4] < var1[n+4] and #1번 지수이평
H[n+3] >= var1[n+3] and #2번 지수이평
H[n+2] >= var1[n+2] and #3번 지수이평
H[n+1] >= var1[n+1] and #4번 지수이평
............ then
sell("");
즐거운 하루되세요
> 개냥이 님이 쓴 글입니다.
> 제목 : 수식이 이상한건지 아니면 이상한 부분이 있는지 확인 부탁드립니다.
> 제 시스템 식 중에 일부인데 다음과 같이 상수를 넣어야 할 것을
반복되는 부분도 있고 편의를 위해서 n을 변수로 할당해서 다음과 같이 만들어줬습니다.
var : n(0),period26(26);
n=2;
if H[n+4] < ema(C[n+4],period26) and
H[n+3] >= ema(C[n+3],period26) and
H[n+2] >= ema(C[n+2],period26) and
H[n+1] >= ema(C[n+1],period26) and
............ then
sell("");
그런데 분명히 진입해야 되는 부분에서 진입 안되서
점검을 하다보니 n=2로 넣는 부분을 없애고 그냥 숫자를 집어넣어서 H[n+4] 대신에 H[6] 이런식으로 만들어주니 원하는 진입신호가 제대로 나옵니다.
var : period26(26);
if H[6] < ema(C[6],period26) and
H[5] >= ema(C[5],period26) and
H[4] >= ema(C[4],period26) and
H[3] >= ema(C[3],period26) and
............ then
sell("");
그런데 그전에도 비슷한 경우가 있더군요.
비슷한 경우에 문제가 되면 모르는데 동일하게 작성해줘도 어느 부분은 그냥 신호가 잘 나옵니다.
시스템을 전부 올리기는 조금 뭐하긴 한데 혹시 제가 작성한 내용이 문제될만한 부분이 있는지 아니면 다른 문제인지 모르겠네요.
messagelog로 필요한 부분 데이타까지 출력해봐도 문제점을 못 찾겠습니다.
확인 부탁드립니다.