커뮤니티

부탁 드립니다.

프로필 이미지
뮬리
2020-10-19 18:27:00
598
글번호 143205
답변완료
도움에 감사 드립니다. 함수식을 설정하고 실행식을 실행하면 "oHi,oLo"에서 "2차원 배열 이름이 와야 합니다'" 라고 뜹니다.. 어떻게 하여 야 하는지요? 실행식) Input:HiLoBit(1),NewBit(1),indicator(1),oHi(1),oLo(1); var1=IndiDivergence(HiLoBit,NewBit,indicator,oHi,oLo); 함수식) 사용자함수명 : IndiDivergence 반환값형 : 숫자형 Input:HiLoBit(NumericSimple),NewBit(NumericSimple),indicator(NumericSeries), oHi[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLo[MaxSize3,MaxSize4](NumericArrayRef); Var:j(0),jj(0),HiBar(0),LoBar(0),result(0); #==========================================# result = 1; If HiLoBit == 1 Then { // 주가의 마지막 꼭지점이 고점인 상태 If NewBit == 1 Then { // 주가의 고점이 신규이면 보조 지표의 파동도 신규 For j = 10 DownTo 2 { // 과거치는 하나씩 뒤로 보내고 For jj = 1 To 4 { oHi[j,jj] = oHi[j - 1,jj]; } } HiBar = 0; For j = 1 To Index - oLo[1,2] - 1 { // 마지막 저점 이후 보조 지표에서 고점 search If indicator[HiBar] < indicator[j] Then HiBar = j; } oHi[1,1] = indicator[HiBar]; oHi[1,2] = Index[HiBar]; oHi[1,3] = sDate[HiBar]; oHi[1,4] = sTime[HiBar]; } Else { // 주가의 고점이 바뀌지 않아도 보조 지표값은 계속 변하므로 HiBar = 0; For j = 1 To Index - oLo[1,2] - 1 { If indicator[HiBar] < indicator[j] Then HiBar = j; } oHi[1,1] = indicator[HiBar]; oHi[1,2] = Index[HiBar]; oHi[1,3] = sDate[HiBar]; oHi[1,4] = sTime[HiBar]; } } Else If HiLoBit == -1 Then { // 주가의 마지막 꼭지점이 저점 If NewBit == 1 Then { // 신규이면 For j = 10 DownTo 2 { // 배열값을 뒤로 move For jj = 1 To 4 { oLo[j,jj] = oLo[j - 1,jj]; } } LoBar = 0; For j = 1 To Index - oHi[1,2] - 1 { // 고점 이후 낮은 값 search If indicator[LoBar] > indicator[j] Then LoBar = j; } oLo[1,1] = indicator[LoBar]; oLo[1,2] = Index[LoBar]; oLo[1,3] = sDate[LoBar]; oLo[1,4] = sTime[LoBar]; } Else { LoBar = 0; For j = 1 To Index - oHi[1,2] - 1 { If indicator[LoBar] > indicator[j] Then LoBar = j; } oLo[1,1] = indicator[LoBar]; oLo[1,2] = Index[LoBar]; oLo[1,3] = sDate[LoBar]; oLo[1,4] = sTime[LoBar]; } } Else result = 0; // HiLoBit가 1(전고점), -1(전저점)이 아니면 에러 IndiDivergence = result;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-10-20 14:23:13

안녕하세요 예스스탁입니다. IndiDivergence함수의 4번째와 5번째 매개변수는 지정한 변수로 값을 리턴받습니다. Input:HiLoBit(NumericSimple),NewBit(NumericSimple),indicator(NumericSeries), oHi[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLo[MaxSize3,MaxSize4](NumericArrayRef); 그러므로 해당 변수는 input변수로 지정하시면 안되고 내부저장변수로 지정하셔야 하며 2차원 배열로 리턴되므로 아래와 같이 array로 지정해 주셔야 합니다. Input:HiLoBit(1),NewBit(1),indicator(1); Array : Ohi[10,10](0),oLo[10,10](0); var1=IndiDivergence(HiLoBit,NewBit,indicator,oHi,oLo); 즐거운 하루되세요 > 뮬리 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 도움에 감사 드립니다. 함수식을 설정하고 실행식을 실행하면 "oHi,oLo"에서 "2차원 배열 이름이 와야 합니다'" 라고 뜹니다.. 어떻게 하여 야 하는지요? 실행식) Input:HiLoBit(1),NewBit(1),indicator(1),oHi(1),oLo(1); var1=IndiDivergence(HiLoBit,NewBit,indicator,oHi,oLo); 함수식) 사용자함수명 : IndiDivergence 반환값형 : 숫자형 Input:HiLoBit(NumericSimple),NewBit(NumericSimple),indicator(NumericSeries), oHi[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLo[MaxSize3,MaxSize4](NumericArrayRef); Var:j(0),jj(0),HiBar(0),LoBar(0),result(0); #==========================================# result = 1; If HiLoBit == 1 Then { // 주가의 마지막 꼭지점이 고점인 상태 If NewBit == 1 Then { // 주가의 고점이 신규이면 보조 지표의 파동도 신규 For j = 10 DownTo 2 { // 과거치는 하나씩 뒤로 보내고 For jj = 1 To 4 { oHi[j,jj] = oHi[j - 1,jj]; } } HiBar = 0; For j = 1 To Index - oLo[1,2] - 1 { // 마지막 저점 이후 보조 지표에서 고점 search If indicator[HiBar] < indicator[j] Then HiBar = j; } oHi[1,1] = indicator[HiBar]; oHi[1,2] = Index[HiBar]; oHi[1,3] = sDate[HiBar]; oHi[1,4] = sTime[HiBar]; } Else { // 주가의 고점이 바뀌지 않아도 보조 지표값은 계속 변하므로 HiBar = 0; For j = 1 To Index - oLo[1,2] - 1 { If indicator[HiBar] < indicator[j] Then HiBar = j; } oHi[1,1] = indicator[HiBar]; oHi[1,2] = Index[HiBar]; oHi[1,3] = sDate[HiBar]; oHi[1,4] = sTime[HiBar]; } } Else If HiLoBit == -1 Then { // 주가의 마지막 꼭지점이 저점 If NewBit == 1 Then { // 신규이면 For j = 10 DownTo 2 { // 배열값을 뒤로 move For jj = 1 To 4 { oLo[j,jj] = oLo[j - 1,jj]; } } LoBar = 0; For j = 1 To Index - oHi[1,2] - 1 { // 고점 이후 낮은 값 search If indicator[LoBar] > indicator[j] Then LoBar = j; } oLo[1,1] = indicator[LoBar]; oLo[1,2] = Index[LoBar]; oLo[1,3] = sDate[LoBar]; oLo[1,4] = sTime[LoBar]; } Else { LoBar = 0; For j = 1 To Index - oHi[1,2] - 1 { If indicator[LoBar] > indicator[j] Then LoBar = j; } oLo[1,1] = indicator[LoBar]; oLo[1,2] = Index[LoBar]; oLo[1,3] = sDate[LoBar]; oLo[1,4] = sTime[LoBar]; } } Else result = 0; // HiLoBit가 1(전고점), -1(전저점)이 아니면 에러 IndiDivergence = result;