예스스탁
예스스탁 답변
2019-11-07 15:13:05
안녕하세요
예스스탁입니다.
1
해당 수식이 현재 사용하는 차트주기에서 다른 분봉주기(ntime)의
양봉몸통을 계산해 최대값을 구하는 내용입니다.
15분 차트에서 15분봉의 몸통을 구하는 내용은 아닙니다.
이전문의에 올리신 내용도 다른주기의 값을 계산하는 내용이었습니다.
2
사용하는 차트의 주기에서 최대몸통은 아래와 같이 작성해 사용하시면 됩니다.
input : P(5);
var : cnt(0),HR(0),HP(0),HM(0);
var1 = ma(C,P);
HR = 0;
HP = 0;
HM = 0;
For cnt = 0 to 99
{
if C[cnt] > O[cnt] and (HR == 0 or (HR > 0 and C[cnt]-O[cnt] > HR)) Then
{
HR = C[cnt]-O[cnt];
HP = (C[cnt]+O[cnt])/2;
HM = var1[cnt];
}
}
plot1(HR,"최대몸통길이");
plot2(HP,"최대몸통중심가");
plot3(HM,"최대몸통이평");
3
위 식은 최근 100개봉 내의 양봉만 대상으로 합니다.
차트 전체에서 양봉 최대 몸통은 아래와 같습니다.
input : P(5);
var : cnt(0),HR(0),HP(0),HM(0);
var1 = ma(C,P);
if C > O and (HR == 0 or (HR > 0 and C-O > HR)) Then
{
HR = C-O;
HP = (C+O)/2;
HM = var1;
}
plot1(HR,"최대몸통길이");
plot2(HP,"최대몸통중심가");
plot3(HM,"최대몸통이평");
4
해당 표현식은 국내와 해외 공용으로 사용하기 위한 내용입니다.
국내의 경우 9시에 장이 시작해 당일 오후에 장이 종료됩니다.
9시의 TimeToMinutes(sTime)은 540이고
현재봉의 TimeToMinutes(sTime)에서 아침첫봉(S1)의 값을 빼면
장시작후 몇분이 경과되었는지 계산이 됩니다.
하지만 국내선물야간장이나 해외선물옵션에서는 장이 새벽에 종료가 되는데
밤 0시를 넘어가면 TimeToMinutes(sTime)은 다시 0이 됩니다.
그래서 장이 시작한 봉과 날짜가 같으면 TimeToMinutes(sTime)-S1로만 계산하고
다르면(다음날 새벽이면) 현재 TimeToMinutes(sTime)에 1440(24시간*60분)을 더해주고
장이시작할때 TimeToMinutes(sTime)을 빼주어서 장시작후 몇분이 지났는지를 계산한 내용입니다.
TF = TM%ntime;
는 처리하신 내용이 맞습니다.
if sDate == D1 Then
TM = TimeToMinutes(sTime)-S1; // 요부분 의미를 잘 모르겠습니다.
Else // 요부분 의미를 잘 모르겠습니다.
TM = TimeToMinutes(sTime)+1440-S1; // 요부분 의미를 잘 모르겠습니다.
// TF = TimeToMinutes(stime)%ntime; // 요기는 TM%ntime이 되야 하는거죠??
TF = TM%ntime; // 이렇게 바꿔봤습니다..
즐거운 하루되세요
> 지스카드 님이 쓴 글입니다.
> 제목 : 도움을 부탁드리겠습니다. 그림첨부
> 늘 도와주셔서 감사드립니다.
자력으로 해보려고 했는데...하아..아직 먼거 같습니다..
한번만 더 도와주세요..
수식은 전번에 도움을 얻은 부분입니다.
타주기로 , 몸통이 긴 양봉을 찾아서, 그 중심가격을 표시하고
몸통이 더 긴 양봉이 나오기 전에는 중심가격이 계속 표시되게 하려는
의도였습니다.
1.
<최대몸통길이를 가진 양봉의 중심가격>을
첨부한 그림 파일에서는 24900원 정도가 직선으로 계속 표시되게 하고 싶었습니다.
이거보다 더 긴 몸통길이를 가진 양봉이 나오기 전까지는요..
근데 분홍색값을 보시면 계속 증감이 있고
값도 몸통의 중심가라고 하기에는 표시된 값이 너무 낮습니다..
며칠째 고민했는데 뭐가 문제인지 도저히 못찾겠습니다.
2. 타주기를 현재 시간으로 나눈 나머지를 구할때요,
// 요부분 의미를 잘 모르겠습니다.
날짜가 바뀌는지점에서는 sTime 값이 0이 되는 것인가요 1440이 되는 것인가요
else 의미도요...대충 작동하는 방향은 느낌이 오는데 ..제대로 알고 싶습니다..
설명좀 부탁드려도 될까요..
input : ntime(15),P(5);
var : S1(0),D1(0),TM(0),TF(0),j(0),HR(0),HP(0),HM(0);
Array : MinOpen[100](0),MinHigh[100](0),MinLow[100](0),MinClose[100](0), 몸통길이[100](0),몸통중심가격[100](0) ;
var1 = ma(C,P);
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 = TimeToMinutes(stime)%ntime; // 요기는 TM%ntime이 되야 하는거죠??
TF = TM%ntime; // 이렇게 바꿔봤습니다..
if bDate != bDate[1] or (bDate == bdate[1] and TF < TF[1])Then
{
For j = 98 DownTo 0
{
MinOpen[j+1] = MinOpen[j];
MinHigh[j+1] = MinHigh[j];
MinLow[j+1] = MinLow[j];
MinClose[j+1] = MinClose[j];
몸통길이[j+1] = 몸통길이[j];
몸통중심가격[j+1] = 몸통중심가격[j];
}
MinOpen[0] = O;
MinHigh[0] = H;
MinLow[0] = L;
}
If MinHigh[0] > 0 and MinHigh[0] < H Then
MinHigh[0] = H ;
If MinLow[0] > 0 and MinLow[0] < L Then
MinLow[0] = L ;
MinClose[0] = C ;
몸통길이[0] = MinClose[0]-MinOpen[0] ;
몸통중심가격[0] = (MinClose[0]+MinOpen[0])/2;
HR = 몸통길이[0];
HP = 몸통중심가격[0];
HM = var1;
For j = 1 to 60
{
if 몸통길이[j] > HR Then
{
HR = 몸통길이[j];
HP = 몸통중심가격[j];
HM = var1[j];
}
}
plot1(HR,"최대몸통길이");
plot2(HP,"최대몸통중심가");
plot3(HM,"최대몸통이평");
}