예스스탁
예스스탁 답변
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;