커뮤니티
종목검색식 실행순서
2012-03-10 14:16:34
417
글번호 48538
질문은 첨부파일에 포함되어 있습니다.
- 1. 실행순서.zip (0.05 MB)
답변 1
예스스탁 예스스탁 답변
2012-03-05 15:49:32
안녕하세요
예스스탁입니다.
1.
첨부된 그림은 A,B,C의 값 할당을 보여드리기 위해
검색식을 시스템식으로 변경한 다음 각 값을 Print로 출력한 그림입니다.
삼성전자 일봉에 적용한 결과이고 적용한 식은 아래식입니다.
var1 = ma(c,5);
var2 = countif(var1 < var1[1],5);
if countif(var1 > var1[1] and var2[1] >= 2,3) >= 1 Then
buy();
Print("test.csv",",A,%.2f,B,%.2f,C,%s",var1,var2,countif(var1 > var1[1] and var2[1] >= 2,3) >= 1);
종목검색식은 print나 messagelong출력이 되지 않으므로 시스템식으로 변경해서 적용했습니다.
종목검색식과 다른 수식 모두 계산등이 모두 동일합니다.
그림에서 보시면
A값은 2월5일~2월 9일까지 모두 -1.#j라고 나타납니다.
이는 N/A로 수식을 읽어 계산하려고 하는데 계산을 하기 위한 봉갯수가 부족하므로
계산을 하지 못해서 리턴된 값입니다. 즉 계산하려고 수식을 읽어들어가고
읽어본 결과 값을 리턴하지 못하므로 -1.#j라고 나타납니다.
2월 10일(5번째봉) 부터 계산이 되어 값이 출력됩니다.
그러므로 해당 내용을 계산은 첫봉부터입니다.
B값은 보시면 2월6일 첫봉부터 값이 0이라고 나타나게 됩니다.
이는 과거 값을 불러와(이때 과거값이 없으면 var1[n] < var1[n+1]은 false)
최근 5개봉 불러와 비교후 조건만족한 것이 없으므로 0입니다 마찬가지로 첫봉부터 계산을 합니다.
실제 1이상의 값이 발생하는 봉은 14번째 봉부터입니다.(이동평균이 15번째부터 N/A가 아니므로)
C도 마찬가지로 첫봉부터 값을 리턴하게 됩니다.
1이상의 값을 가지는 봉은 12번째 봉부터가 됩니다.
조건상 var2가 2를 가지기 위해서는 이동평균이 최소 3개봉에서 n/A가 아니어야 하고
[1]값이므로 최소 4개봉에서 N/A가 아닌 값을 가져야 함)
2.
A는 봉당 5회*20 = 100
B는 봉당 5회*20 = 100
C는 봉당 3회*20 = 60
260회입니다.
PS
이동평균의 경우 for문으로 작성된 것은 아니고
내부함수로 작성이 되어 있는데 새로운 값이 생기면 가장 과거의 값을 하나 버리고 새로운 값 하나를
받아들여 나누기 5를 합니다. 그러므로 실제 5이평이라고 루프가 5회를 도는 것은 아닙니다.
단지 회수가 궁금하신 내용이므로 위와 같이 답변드드립니다.
3.
첨부된 그림과 같이 모두 첫봉부터 계산결과값을 가집니다.
4.
그림만으로는 정확히 조건만족횟수를 답변하기 어렵습니다.
해당 차트에 아래 지표식 적용하시면
20개봉동안 만족횟수 보실 수 있습니다.
var1 = ma(c,5);
var2 = countif(var1 < var1[1],5);
if countif(var1 > var1[1] and var2[1] >= 2,3) >= 1 Then
value1 = 1;
Else
value1 = 0;
plot1(value1);
즐거운 하루되세요
> 행복충전 님이 쓴 글입니다.
> 제목 : 종목검색식 실행순서
> 질문은 첨부파일에 포함되어 있습니다.