안녕하세요
1분봉을 주종목으로 놓고, 30분봉을 다른종목으로 설정하였구요.
9시10분에 9시~9시반까지 만들어지는 30분봉의 스토캐스틱 값을 가져오려고 하는데요,
전일 30분봉의 스토캐스틱 값을 가져오네요.
봉이 완성되는 시점인 9시30분에는 의도한 값을 가져오겠지만,
그전에 시간에 따라 바뀌어도 상관없으니 현시점에서의 값을 가져왔으면 하는데, 방법이 없을까요?
아니면 1분봉을 기준으로 30분봉의 스토캐스틱 값을 정확하지 않아도 비슷하게 가져올수 있는지 조언 부탁드립니다.
도움 부탁드립니다. 즐거운 하루 되세요.
StoK = Data2(StochasticsK(12,5));
if(sTime = 091000) Then
{
MessageLog("0901 StoK = %.2f",StoK);
}
답변 1
예스스탁
예스스탁 답변
2022-06-02 15:40:02
안녕하세요
예스스탁입니다.
1
랭귀지는 완성봉의 값만 사용기 가능합니다.
1분봉차트에 30분봉을 참조데이타로 추가하시면
기본차트 봉이 완성시에 그때 최종 완성되어 있는 참조데이타 봉에서 값을 가져오게 되므로
9시30분 까지는 data2의 최종 완성봉이 전일 마지막봉이 되므로
현재 미완성인 첫봉의 값을 사용하지 못합니다.
2
1분봉 차트 자체에서 30분봉의 스토케스틱값을 계산해서 이용하셔야 합니다.
스토케스틱이 과거봉에 따라 현재값이 변하게 됩니다.
1분봉에서 30분봉의 값을 구현하면 과거 봉수 문제로
실제 30분봉의 데이타를 많이 조회해서 본값과 다를수 있습니다.
1분봉에서 과거봉을 1만개 조회해고 적용하시기 바랍니다.
전략실행차트의 최대 조회갯수는 1만개입니다.
input : 분(30),Sto1(12),Sto2(5);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0), Hv(0), LV(0), FK(0), SK(0);
var : Ep1(0), JISU(0), DINDEX(0), PreSK(0);
Array : HH[50](0),LL[50](0);
Ep1 = 2/(sto2+1);
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)%분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or
(Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then
{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[sto1-1] > 0 and LL[sto1-1] > 0 then
{
if bdate != bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) or stime == 154500 Then
{
DINDEX = DINDEX+1;
PreSK = SK[1];
}
Hv = HH[0];
LV = LL[0];
for cnt = 0 to sto1-1
{
if HH[cnt] > Hv then
Hv = HH[cnt];
if LL[cnt] < LV then
LV = LL[cnt];
}
FK = (C-LV)/(HV-LV)*100;
if DINDEX <= 1 then
SK = FK;
else
SK = FK * EP1 + PreSK * (1-EP1);
if(sTime == 091000) Then
{
MessageLog("0901 StoK = %.2f",SK);
}
}
}
즐거운 하루되세요
> edan 님이 쓴 글입니다.
> 제목 : 현재 진행중인 봉이나 지표 값을 가져오는 방법 문의
> 안녕하세요
1분봉을 주종목으로 놓고, 30분봉을 다른종목으로 설정하였구요.
9시10분에 9시~9시반까지 만들어지는 30분봉의 스토캐스틱 값을 가져오려고 하는데요,
전일 30분봉의 스토캐스틱 값을 가져오네요.
봉이 완성되는 시점인 9시30분에는 의도한 값을 가져오겠지만,
그전에 시간에 따라 바뀌어도 상관없으니 현시점에서의 값을 가져왔으면 하는데, 방법이 없을까요?
아니면 1분봉을 기준으로 30분봉의 스토캐스틱 값을 정확하지 않아도 비슷하게 가져올수 있는지 조언 부탁드립니다.
도움 부탁드립니다. 즐거운 하루 되세요.
StoK = Data2(StochasticsK(12,5));
if(sTime = 091000) Then
{
MessageLog("0901 StoK = %.2f",StoK);
}