커뮤니티
좀 복잡한 질문
2010-11-05 19:59:40
801
글번호 33359
선물 1분봉이나 3분 5분 봉에서 30분 이나 60분봉의 일목 균형표 값들을 구해보려다 보니 배열 처리에 문제가 생기는지 죽어버리네요.
아래가 제 코드 입니다. 어디가 잘못된건지 궁금하구요.
두번째로 15:00~15:15분에 생기는 마지막 봉의 고저 값도 여기 반영하고 싶은데
가능할런지 궁금합니다.
Inputs : ₩ChartTime(1), ArrTime(30) ;
Var : Cnt(0) ;
Array : ArrHigh[52](0), ArrLow[52](0) ;
If ((STime > 090000 And STime <= 150000) And TimeToMinutes(stime)%30 == 0)
#### Or (STime > 150000 And STime == 151500)
Then
{
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
}
ArrHigh[0] = Highest(High, ArrTime/ChartTime) ;
ArrLow[0] = Lowest(Low, ArrTime/ChartTime) ;
}
Value1 = Round((Highest(ArrHigh, 9) + Lowest(ArrLow, 9)) / 2, 2) ; //기준선
Value2 = Round((Highest(ArrHigh, 26) + Lowest(ArrLow, 26)) / 2, 2) ; //전환선
Value3 = Round((TurnLine + StndLine) / 2, 2); //선행스팬1
Value4 = Round((Highest(ArrHigh, 52) + Lowest(ArrLow, 52) ) / 2, 2) ;//선행스팬2
답변 1
예스스탁 예스스탁 답변
2010-11-06 00:27:26
안녕하세요
예스스탁입니다.
Value1 = Round((Highest(ArrHigh[0], 9) + Lowest(ArrLow[0], 9)) / 2, 2) ; //기준선
Value2 = Round((Highest(ArrHigh[0], 26) + Lowest(ArrLow[0], 26)) / 2, 2) ; //전환선
#Value3 = Round((TurnLine + StndLine) / 2, 2); //선행스팬1
Value4 = Round((Highest(ArrHigh[0], 52) + Lowest(ArrLow[0], 52) ) / 2, 2) ;//선행스팬2
ArrHigh와 ArrLow는 배열변수입니다.
사용하고자 하는 배열변수의 방번호를 꼭 지정하셔야 합니다.
분봉에서 타분봉의 값을 구하시므로
Round((Highest(ArrHigh[0], 9) + Lowest(ArrLow[0], 9))
와 같이 계산하시면 단지 9개봉의 ArrHigh[0], 입니다.
따로 풀어서 저장된 값을 사용할 수 있도록 하셔야 합니다.
식을 아래와 같이 몇군데 수정했습니다.
Inputs : ChartTime(1), ArrTime(30) ;
Var : Cnt(0),count(0),HH9(0),LL9(0),HH26(0),LL26(0),HH52(0),LL52(0);
Array : ArrHigh[52](0), ArrLow[52](0) ;
If (dayindex == 0 or TimeToMinutes(stime)%ArrTime == 0)Then
{
ArrHigh[0] = H;
ArrLow[0] = L;
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
}
}
if H > ArrHigh[0] Then
ArrHigh[0] = H;
if L < ArrLow[0] Then
ArrLow[0] = L;
HH9 = ArrHigh[0];
LL9 = ArrLow[0];
HH26 = ArrHigh[0];
LL26 = ArrLow[0];
HH52 = ArrHigh[0];
LL52 = ArrLow[0];
for Count = 0 to 51{
if count < 9 Then{
if ArrHigh[Count] > HH9 Then
HH9 = ArrHigh[Count];
if ArrLow[Count] < LL9 Then
LL9 = ArrLow[Count];
}
if count < 26 Then{
if ArrHigh[Count] > HH26 Then
HH26 = ArrHigh[Count];
if ArrLow[Count] < LL26 Then
LL26 = ArrLow[Count];
}
if count < 52 Then{
if ArrHigh[Count] > HH52 Then
HH52 = ArrHigh[Count];
if ArrLow[Count] < LL52 Then
LL52 = ArrLow[Count];
}
}
Value1 = (HH9+ LL9) / 2 ; //기준선
Value2 = (HH26 + LL26) / 2 ; //전환선
Value3 = (value1 + value2) / 2; //선행스팬1
Value4 = (HH52 + LL52 ) / 2;//선행스팬2
plot1(value1);
plot2(value2);
plot3(value3);
plot4(value4);
즐거운 하루되세요
> 하얀깃털 님이 쓴 글입니다.
> 제목 : 좀 복잡한 질문
> 선물 1분봉이나 3분 5분 봉에서 30분 이나 60분봉의 일목 균형표 값들을 구해보려다 보니 배열 처리에 문제가 생기는지 죽어버리네요.
아래가 제 코드 입니다. 어디가 잘못된건지 궁금하구요.
두번째로 15:00~15:15분에 생기는 마지막 봉의 고저 값도 여기 반영하고 싶은데
가능할런지 궁금합니다.
Inputs : ₩ChartTime(1), ArrTime(30) ;
Var : Cnt(0) ;
Array : ArrHigh[52](0), ArrLow[52](0) ;
If ((STime > 090000 And STime <= 150000) And TimeToMinutes(stime)%30 == 0)
#### Or (STime > 150000 And STime == 151500)
Then
{
For Cnt = 1 To 51
{
ArrHigh[Cnt] = ArrHigh[Cnt-1][1] ;
ArrLow[Cnt] = ArrLow[Cnt-1][1] ;
}
ArrHigh[0] = Highest(High, ArrTime/ChartTime) ;
ArrLow[0] = Lowest(Low, ArrTime/ChartTime) ;
}
Value1 = Round((Highest(ArrHigh, 9) + Lowest(ArrLow, 9)) / 2, 2) ; //기준선
Value2 = Round((Highest(ArrHigh, 26) + Lowest(ArrLow, 26)) / 2, 2) ; //전환선
Value3 = Round((TurnLine + StndLine) / 2, 2); //선행스팬1
Value4 = Round((Highest(ArrHigh, 52) + Lowest(ArrLow, 52) ) / 2, 2) ;//선행스팬2