커뮤니티
질문 입니다
2019-08-27 13:02:07
249
글번호 131489
0분 차트에서 캔들의 몸체가(고가,저가가 아닌 시가와 종가가) 5,13,21일 이평선(단순이평)을 한개의 캔들로 완전히 관통하여 완성됐을때 타주기분봉차트(5,15,30,60분)에서도 표시될수 있도록 하는 검색식 부탁드립니다.
안녕하세요
예스스탁입니다.
5,15,30,60분 차트에서 최대한 봉을 많이 조회후 아래식 적용하시면 됩니다.
input : 타분봉(120);#다른분봉주기
input : P1(5),P2(13),P3(21); #일봉이평 기간 < -- p는 그냥 변수 인가요? 아니면 이평을 나타내는 함수 인가요?
var : OO(0),S1(0),D1(0),TM(0),TF(0); < -- (0)은 당일을 표시 하는 건가요?
var : sum1(0),sum2(0),sum3(0);
var : mav1(0),mav2(0),mav3(0);
var : cnt(0);
#일봉이평계산
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P3{
if cnt < P1 Then <-- cnt < 무엇을 말하는 건가요?
sum1 = sum1+DayClose(cnt); <-- sum1 = sum1+DayClose(cnt) 이해가 안갑니다 왜? sum1 이 sum1+DayClose(cnt) 인지
if cnt < P2 Then
sum2 = sum2+DayClose(cnt);
if cnt < P3 Then
sum3 = sum3+DayClose(cnt);
}
mav1 = sum1/P1; <-- mav 이평선을 만드는건가요? 아니면 내부 함수 인가요?
mav2 = sum2/P2;
mav3 = sum3/P3;
value1 = max(mav1,mav2,mav3); < -- max(mav1,mav2,mav3) 는 이평선의 고가 인가요? max 는 다른 조건에도 쓸수 잇나요?
value2 = min(mav1,mav2,mav3);
#타분봉 몸통계산
if bdate != bdate[1] Then{ <-- bdate != bdate[1] 언제 쓰는 건가요? 해석좀 부탁 드립니다
S1 = TimeToMinutes(stime); <-- TimeToMinutes(stime) 는 내부 함수 인가요? (stime)에서 s는 무슨 의미가 잇나요?
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타분봉;
#타분봉 시가
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
OO = O;
if max(C,OO) >= value1 and value2 >= min(C,OO) Then
plot1(H,"검색"); <-- plot1(H,"검색") 는 어디 신호 검색 만들대만 쓰나요?
}
종목 검색과 강조 에 만드는 수식이 다른 가요?
(0) 와 [0]는 언제 사용 해야 되나요?
답변 1
예스스탁 예스스탁 답변
2019-08-27 18:22:54
안녕하세요
예스스탁입니다.
1
수식에서 타주기의 값은 기본차트와 배수가 되는 것만 계산이 가능합니다.
예를 들어 2분봉 차트에서 20분봉의 이평등은 계산이 가능하지만
2분봉차트에서 15분등은 배수가 아니기에 계산이 불가합니다.
또한 기본차트보다 낮은 주기도 가능하지 않습니다.
input : ntime1(60),P1(5),P2(20),P3(60);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum1(0),mav1(0),sum2(0),mav2(0),sum3(0),mav3(0),O1(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
O1 = O;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P3] > 0 then{
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P3-1{
if cnt < P1 then
sum1 = sum1+C1[cnt];
if cnt < P2 then
sum2 = sum2+C1[cnt];
if cnt < P3 then
sum3 = sum3+C1[cnt];
}
mav1 = sum1/P1;
mav2 = sum2/P2;
mav3 = sum3/P3;
if max(O1,C1[0]) >= max(mav1,mav2,mav3) and
min(mav1,mav2,mav3) >= min(O1,C1[0]) Then
plot1(H,"검색");
}
}
2
input : 타분봉(120);#다른분봉주기
input : P1(5),P2(13),P3(21);
var : OO(0),S1(0),D1(0),TM(0),TF(0);
var : sum1(0),sum2(0),sum3(0);
var : mav1(0),mav2(0),mav3(0);
var : cnt(0);
수식에서 input과 var로 선언된 단어들은 변수입니다.
변수는 수식에서 특정값을 저장하기 위해 수식작성자가 임의로 만든 단어들입니다.
input으로 선언된 단어는 수식을 적용시에 속성창에서 해당값을 변경할수 있게 하는 변수이고
var로 선언된 단어는 수식코딩안에서 특정값을 저장하기 위한 용도입니다.
위에서 타분봉(120)은 수식내에서 다른주기의 값을 코딩으로 계산하는데
120분봉의 값을 계산한다는 의미입니다. 120은 속성에서 다른 주기로 변경할수 있습니다.
p1(5),p2(13),p3(21)도 마찬가지입니다. 해당 수식안에서 코딩으로 일봉의 이평을 3개를 계산하는데
각 일봉이평의 기간이고 속성에서 다른값으로 변경이 가능합니다.
나마저 var로 선언된 단어는 수식안에서 값을 저장하기 위해 임의로 만든 단어일 뿐입니다.
3
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P3
{
if cnt < P1 Then
sum1 = sum1+DayClose(cnt);
if cnt < P2 Then
sum2 = sum2+DayClose(cnt);
if cnt < P3 Then
sum3 = sum3+DayClose(cnt);
}
mav1 = sum1/P1;
mav2 = sum2/P2;
mav3 = sum3/P3;
위 식에서 cnt는 for문에서 0에서 P3까지의 값을 저장하기 위한 변수입니다.
P3이 21이므로 0부터 21까지 1씩 증가하면서 값이 저장되고
sum1,sum2,sum3은 P1,P2,P3일간의 종가를 합산해서 저장하기 위한 변수입니다
최초에 sum1은 0이고
for문에서 cnt에 0이 저장되면 dayclose(0)이 되어 0에 오늘 종가를 더해서 다시 sum1에 저장합니다.
for문에서 cnt에 1이 저장되면 dayclose(1)이 되어 위 값에 1일전종가 더해 sum1에 다시 저장합니다.
for문에서 cnt에 1이 저장되면 dayclose(2)이 되어 위 값에 2일전종가 더해 sum1에 다시 저장합니다.
for문에서 cnt에 1이 저장되면 dayclose(3)이 되어 위 값에 3일전종가 더해 sum1에 다시 저장합니다.
for문에서 cnt에 1이 저장되면 dayclose(4)이 되어 위 값에 4일전종가 더해 sum1에 다시 저장합니다.
위 까지 수행되면 sum1에 5일간 종가가 합산됩니다.
이값을 5로 나누면 5일평균값이 됩니다.
4
max(mav1,mav2,mav3)
max는 나열된 값중 최고값을 리턴하는 함수입니다.
mav1이 5일평균, mav2는 13일평균, mav3은 21일평균이고 이3개중 최고값을 리턴합니다.
해당 함서는 다른곳에서도 사용가능합니다.
5
bdate != bdate[1]
bdate는 영업일입니다. 거래소의 영업일 변경시간을 기준으로 날짝가 변경됩니다.
즉 위 내용은 현재봉의 영업일과 전봉의 영업일이 다르므로 날짜가 변경된것을 나타냅니다.
6
TimeToMinutes(stime)
stime은 봉의 시가시간이고 TimeToMinutes은 시간을 밤 0시이후의 경과된 분으로 변경해 주는 함수입니다.
stime이 10시이면 0시 이후에 600분이므로 600을 리턴합니ㅏㄷ.
7
수식 종류중 검색은 차트에서 특정조건이 만족한 봉에 점을 찍어주는 수식입니다.
8
예스랭귀지에서 [ ]는 1봉전 , 2봉전, 3봉전과 같이 이전봉을 지칭할때 사용됩니다.
bdate[1] 한봉전 영업일,
ma(C,30)[3] 3봉전 30이평
( )는 함수의 매개변수를 지정할 때 사용됩니다.
ma(C,20)
ma는 단순이평을 계산하는 함수이고 단순이평 계산을 위해서는 기준값과 봉수를 지정해야 합니다.
이렇게 매개변수의 값을 지정해 줄때 ( )가 사용됩니다.
즐거운 하루되세요
즐거운 하루되세요
> 로빈의맥주 님이 쓴 글입니다.
> 제목 : 질문 입니다
> 0분 차트에서 캔들의 몸체가(고가,저가가 아닌 시가와 종가가) 5,13,21일 이평선(단순이평)을 한개의 캔들로 완전히 관통하여 완성됐을때 타주기분봉차트(5,15,30,60분)에서도 표시될수 있도록 하는 검색식 부탁드립니다.
안녕하세요
예스스탁입니다.
5,15,30,60분 차트에서 최대한 봉을 많이 조회후 아래식 적용하시면 됩니다.
input : 타분봉(120);#다른분봉주기
input : P1(5),P2(13),P3(21); #일봉이평 기간 < -- p는 그냥 변수 인가요? 아니면 이평을 나타내는 함수 인가요?
var : OO(0),S1(0),D1(0),TM(0),TF(0); < -- (0)은 당일을 표시 하는 건가요?
var : sum1(0),sum2(0),sum3(0);
var : mav1(0),mav2(0),mav3(0);
var : cnt(0);
#일봉이평계산
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P3{
if cnt < P1 Then <-- cnt < 무엇을 말하는 건가요?
sum1 = sum1+DayClose(cnt); <-- sum1 = sum1+DayClose(cnt) 이해가 안갑니다 왜? sum1 이 sum1+DayClose(cnt) 인지
if cnt < P2 Then
sum2 = sum2+DayClose(cnt);
if cnt < P3 Then
sum3 = sum3+DayClose(cnt);
}
mav1 = sum1/P1; <-- mav 이평선을 만드는건가요? 아니면 내부 함수 인가요?
mav2 = sum2/P2;
mav3 = sum3/P3;
value1 = max(mav1,mav2,mav3); < -- max(mav1,mav2,mav3) 는 이평선의 고가 인가요? max 는 다른 조건에도 쓸수 잇나요?
value2 = min(mav1,mav2,mav3);
#타분봉 몸통계산
if bdate != bdate[1] Then{ <-- bdate != bdate[1] 언제 쓰는 건가요? 해석좀 부탁 드립니다
S1 = TimeToMinutes(stime); <-- TimeToMinutes(stime) 는 내부 함수 인가요? (stime)에서 s는 무슨 의미가 잇나요?
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타분봉;
#타분봉 시가
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
OO = O;
if max(C,OO) >= value1 and value2 >= min(C,OO) Then
plot1(H,"검색"); <-- plot1(H,"검색") 는 어디 신호 검색 만들대만 쓰나요?
}
종목 검색과 강조 에 만드는 수식이 다른 가요?
(0) 와 [0]는 언제 사용 해야 되나요?