안녕하세요 또 다른 질문 드립니다. 아래 수식에서 for문이 시작되는 부분부터 예스랭귀지 메뉴얼을 참고하였는데, 디버깅을 보면 SHbar는 계속 -1 이 나옵니다. var1 값과 동일한 이전 고가의 봉 값을 구하려면 어떻게 해야 할까요?
input : Left(1),right(1);
var : T(0);
var1=0;
Var2=0;
if SwingHigh(1,H,Left,right,left+right+1) != -1 Then
{
T = 1;
if T != T[1] Then
var1 = H[right];
Else
{
if H[right] > var1 Then
var1 = H[right];
}
}
if Swinglow(1,L,Left,right,left+right+1) != -1 Then
{
T = -1;
if T != T[1] Then
var2 = L[right];
Else
{
if L[right] < var2 Then
var2 = L[right];
}
}
var:cnt(0),SHbar(0);
SHbar=-1;
For cnt = 0 to 99 Begin
If H[cnt] == var1 Then
SHbar=cnt;
cnt=999;
End;
If Var1>0 Then
Plot1(Var1,"하이");
If Var2>0 Then
Plot2(Var2,"로우");
MessageLog("%.2f",SHbar);
답변 1
예스스탁
예스스탁 답변
2022-06-17 16:51:53
안녕하세요
예스스탁입니다.
1
For cnt = 0 to 99 Begin
If H[cnt] == var1 Then
SHbar=cnt;
cnt=999;
End;
현재 for문에서 cnt에 0이 할당되면 cnt가 999가 되어 루프가 1회뿐이 돌지 않습니다.
아래와 같이 수정하셔야 합니다.
For cnt = 0 to 99 Begin
If H[cnt] == var1 Then
{
SHbar=cnt;
cnt=999;
}
End;
2
#If Var1>0 Then
Plot1(Var1,"하이");
#If Var2>0 Then
Plot2(Var2,"로우");
위와 같이 if문 제거하고 var1,var2확인해 보시기 바랍니다.
var1과 var2가 스윙하이와 스윙로우가 발생한 봉에서만 값을 가지고 나머지는 모두 0입니다.
그러므로 스윙하이가 발생한 봉이 아니면 모두 기본값인 -1이 나오게 됩니다.
3
스윙하이 발생 후
봉갯수를 카운트 하고자 하시면 간단히 아래와 같이 처리하시면 됩니다.
input : Left(1),right(1);
var : T(0);
var1=0;
Var2=0;
if SwingHigh(1,H,Left,right,left+right+1) != -1 Then
{
T = 1;
if T != T[1] Then
var1 = H[right];
Else
{
if H[right] > var1 Then
var1 = H[right];
}
SHbar = right;
}
Else
SHbar = SHbar+1;
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 봉 값 구하기
> 안녕하세요 또 다른 질문 드립니다. 아래 수식에서 for문이 시작되는 부분부터 예스랭귀지 메뉴얼을 참고하였는데, 디버깅을 보면 SHbar는 계속 -1 이 나옵니다. var1 값과 동일한 이전 고가의 봉 값을 구하려면 어떻게 해야 할까요?
input : Left(1),right(1);
var : T(0);
var1=0;
Var2=0;
if SwingHigh(1,H,Left,right,left+right+1) != -1 Then
{
T = 1;
if T != T[1] Then
var1 = H[right];
Else
{
if H[right] > var1 Then
var1 = H[right];
}
}
if Swinglow(1,L,Left,right,left+right+1) != -1 Then
{
T = -1;
if T != T[1] Then
var2 = L[right];
Else
{
if L[right] < var2 Then
var2 = L[right];
}
}
var:cnt(0),SHbar(0);
SHbar=-1;
For cnt = 0 to 99 Begin
If H[cnt] == var1 Then
SHbar=cnt;
cnt=999;
End;
If Var1>0 Then
Plot1(Var1,"하이");
If Var2>0 Then
Plot2(Var2,"로우");
MessageLog("%.2f",SHbar);